Open In Colab GitHub Repository

Memuat Data yang Efisien ke dalam Milvus dengan VectorETL

Dalam tutorial ini, kita akan mengeksplorasi cara memuat data secara efisien ke dalam Milvus menggunakan VectorETL, sebuah kerangka kerja ETL ringan yang dirancang untuk database vektor. VectorETL menyederhanakan proses mengekstraksi data dari berbagai sumber, mengubahnya menjadi embedding vektor menggunakan model AI, dan menyimpannya di Milvus untuk pengambilan yang cepat dan dapat diskalakan. Pada akhir tutorial ini, Anda akan memiliki pipeline ETL yang berfungsi yang memungkinkan Anda untuk mengintegrasikan dan mengelola sistem pencarian vektor dengan mudah. Mari kita mulai belajar!

Persiapan

Ketergantungan dan Lingkungan

$ pip install --upgrade vector-etl pymilvus

Jika Anda menggunakan Google Colab, untuk mengaktifkan dependensi yang baru saja diinstal, Anda mungkin perlu memulai ulang runtime (klik menu "Runtime" di bagian atas layar, dan pilih "Restart session" dari menu tarik-turun).

VectorETL mendukung berbagai sumber data, termasuk Amazon S3, Google Cloud Storage, File Lokal, dll. Anda dapat melihat daftar lengkap sumber yang didukung di sini. Dalam tutorial ini, kita akan fokus pada Amazon S3 sebagai contoh sumber data.

Kita akan memuat dokumen dari Amazon S3. Oleh karena itu, Anda perlu menyiapkan AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY sebagai variabel lingkungan untuk mengakses bucket S3 dengan aman. Selain itu, kita akan menggunakan model penyematan text-embedding-ada-002 dari OpenAI untuk menghasilkan penyematan data. Anda juga harus menyiapkan kunci api OPENAI_API_KEY sebagai variabel lingkungan.

import os

os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["AWS_ACCESS_KEY_ID"] = "your-aws-access-key-id"
os.environ["AWS_SECRET_ACCESS_KEY"] = "your-aws-secret-access-key"

Alur kerja

Menentukan Sumber Data (Amazon S3)

Dalam kasus ini, kita mengekstrak dokumen dari bucket Amazon S3. VectorETL memungkinkan kita untuk menentukan nama bucket, jalur ke file, dan jenis data yang sedang kita kerjakan.

source = {
    "source_data_type": "Amazon S3",
    "bucket_name": "my-bucket",
    "key": "path/to/files/",
    "file_type": ".csv",
    "aws_access_key_id": os.environ["AWS_ACCESS_KEY_ID"],
    "aws_secret_access_key": os.environ["AWS_SECRET_ACCESS_KEY"],
}

Mengonfigurasi Model Penyematan (OpenAI)

Setelah kita menyiapkan sumber data, kita perlu menentukan model penyematan yang akan mengubah data tekstual kita menjadi penyematan vektor. Di sini, kita menggunakan text-embedding-ada-002 dari OpenAI dalam contoh ini.

embedding = {
    "embedding_model": "OpenAI",
    "api_key": os.environ["OPENAI_API_KEY"],
    "model_name": "text-embedding-ada-002",
}

Menyiapkan Milvus sebagai Basis Data Target

Kita perlu menyimpan embedding yang dihasilkan di Milvus. Di sini, kita mendefinisikan parameter koneksi Milvus menggunakan Milvus Lite.

target = {
    "target_database": "Milvus",
    "host": "./milvus.db",  # os.environ["ZILLIZ_CLOUD_PUBLIC_ENDPOINT"] if using Zilliz Cloud
    "api_key": "",  # os.environ["ZILLIZ_CLOUD_TOKEN"] if using Zilliz Cloud
    "collection_name": "my_collection",
    "vector_dim": 1536,  # 1536 for text-embedding-ada-002
}

Untuk host dan api_key:

  • Menetapkan host sebagai file lokal, misalnya./milvus.db, dan membiarkan api_key kosong adalah metode yang paling mudah, karena secara otomatis menggunakan Milvus Lite untuk menyimpan semua data dalam file ini.

  • Jika Anda memiliki data berskala besar, Anda dapat menyiapkan server Milvus yang lebih berkinerja tinggi pada docker atau kubernetes. Dalam pengaturan ini, silakan gunakan uri server, misalnyahttp://localhost:19530, sebagai host dan biarkan api_key kosong.

  • Jika Anda ingin menggunakan Zilliz Cloud, layanan cloud yang dikelola sepenuhnya untuk Milvus, sesuaikan host dan api_key, yang sesuai dengan kunci Public Endpoint dan Api di Zilliz Cloud.

Menentukan Kolom untuk Penyematan

Sekarang, kita perlu menentukan kolom mana dari file CSV kita yang akan dikonversi menjadi embedding. Hal ini memastikan bahwa hanya kolom teks yang relevan yang diproses, mengoptimalkan efisiensi dan penyimpanan.

embed_columns = ["col_1", "col_2", "col_3"]

Membuat dan Menjalankan Pipeline VectorETL

Dengan semua konfigurasi yang ada, kita sekarang menginisialisasi pipeline ETL, mengatur aliran data, dan menjalankannya.

from vector_etl import create_flow

flow = create_flow()
flow.set_source(source)
flow.set_embedding(embedding)
flow.set_target(target)
flow.set_embed_columns(embed_columns)

# Execute the flow
flow.execute()

Dengan mengikuti tutorial ini, kita telah berhasil membangun pipeline ETL end-to-end untuk memindahkan dokumen dari Amazon S3 ke Milvus menggunakan VectorETL. VectorETL memiliki sumber data yang fleksibel, sehingga Anda dapat memilih sumber data apa pun yang Anda sukai berdasarkan kebutuhan aplikasi spesifik Anda. Dengan desain modular VectorETL, Anda dapat dengan mudah memperluas pipeline ini untuk mendukung sumber data lain, menyematkan model, menjadikannya alat yang ampuh untuk AI dan alur kerja rekayasa data!

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?