Vertex AICompatible with Milvus 2.6.x
Google Cloud Vertex AI adalah layanan berkinerja tinggi yang dirancang khusus untuk model penyematan teks. Panduan ini menjelaskan cara menggunakan Google Cloud Vertex AI dengan Milvus untuk pembuatan penyematan teks yang efisien.
Vertex AI mendukung beberapa model penyematan untuk berbagai kasus penggunaan:
gemini-embedding-001 (Performa mutakhir di seluruh bahasa Inggris, multibahasa, dan tugas-tugas kode)
text-embedding-005 (Model penyematan teks terbaru)
text-multilingual-embedding-002 (Model penyematan teks multibahasa terbaru)
Untuk informasi lebih lanjut, lihat model penyematan teks Vertex AI.
Prasyarat
Pastikan Anda memenuhi persyaratan ini sebelum mengonfigurasi Vertex AI:
Jalankan Milvus versi 2.6 atau yang lebih tinggi - Pastikan penerapan Anda memenuhi persyaratan versi minimum.
Buat akun layanan Google Cloud - Minimal, Anda mungkin memerlukan peran seperti "Pengguna Vertex AI" atau peran lain yang lebih spesifik. Untuk detailnya, lihat Membuat akun layanan.
Unduh file kunci JSON akun layanan - Simpan file kredensial ini dengan aman di server atau mesin lokal Anda. Untuk detailnya, lihat Membuat kunci akun layanan.
Mengonfigurasi kredensial
Sebelum Milvus dapat memanggil Vertex AI, Milvus memerlukan akses ke kunci JSON akun layanan GCP Anda. Kami mendukung dua metode-pilih salah satu berdasarkan kebutuhan penerapan dan operasional Anda.
Opsi |
Prioritas |
Terbaik Untuk |
|---|---|---|
File konfigurasi ( |
Tinggi |
Pengaturan yang berlaku di seluruh klaster dan persisten |
Variabel lingkungan ( |
Rendah |
Alur kerja kontainer, pengujian cepat |
Opsi 1: File konfigurasi (disarankan & prioritas lebih tinggi)
Milvus akan selalu lebih memilih kredensial yang dideklarasikan di milvus.yaml daripada variabel lingkungan apa pun untuk penyedia yang sama.
Menyandikan kunci JSON Anda dengan Base64
cat credentials.json | jq . | base64Mendeklarasikan kredensial di
milvus.yaml# milvus.yaml credential: gcp_vertex: # arbitrary label credential_json: | <YOUR_BASE64_ENCODED_JSON>Mengikat kredensial ke penyedia Vertex AI
# milvus.yaml function: textEmbedding: providers: vertexai: credential: gcp_vertex # must match the label above url: <optional: custom Vertex AI endpoint>Jika nanti Anda perlu merotasi kunci, cukup perbarui string Base64 di bawah
credential_jsondan mulai ulang Milvus-tidak ada perubahan yang diperlukan pada lingkungan atau kontainer Anda.
Opsi 2: Variabel lingkungan
Gunakan metode ini jika Anda lebih suka menyuntikkan rahasia pada waktu penerapan. Milvus akan kembali ke env-vars hanya jika tidak ada entri yang cocok di milvus.yaml.
Langkah-langkah konfigurasi bergantung pada mode penerapan Milvus Anda (klaster mandiri vs. terdistribusi) dan platform orkestrasi (Docker Compose vs. Kubernetes).
Untuk mendapatkan berkas konfigurasi Milvus Anda(docker-compose.yaml), lihat Mengunduh berkas instalasi.
Pasang kunci Anda ke dalam kontainer
Edit berkas
docker-compose.yamlAnda untuk menyertakan pemetaan volume kredensial:services: standalone: volumes: # Map host credential file to container path - /path/to/your/credentials.json:/milvus/configs/google_application_credentials.json:roDalam konfigurasi sebelumnya:
Gunakan jalur absolut untuk akses berkas yang andal (
/home/user/credentials.json, bukan~/credentials.json)Jalur kontainer harus diakhiri dengan ekstensi
.json:rountuk memastikan akses hanya-baca demi keamanan
Tetapkan variabel lingkungan
Dalam berkas
docker-compose.yamlyang sama, tambahkan variabel lingkungan yang mengarah ke jalur kredensial:services: standalone: environment: # Essential for Vertex AI authentication MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.jsonTerapkan perubahan
Mulai ulang kontainer Milvus Anda untuk mengaktifkan konfigurasi:
docker-compose down && docker-compose up -d
Untuk mendapatkan berkas konfigurasi Milvus Anda(values.yaml), lihat Mengkonfigurasi Milvus melalui berkas konfigurasi.
Membuat Rahasia Kubernetes
Jalankan ini pada mesin kontrol Anda (tempat kubectl dikonfigurasi):
kubectl create secret generic vertex-ai-secret \ --from-file=credentials.json=/path/to/your/credentials.json \ -n <your-milvus-namespace>Dalam perintah sebelumnya:
vertex-ai-secret: Nama untuk rahasia Anda (dapat disesuaikan)/path/to/your/credentials.json: Nama berkas lokal dari berkas kredensial GCP Anda<your-milvus-namespace>: Ruang nama Kubernetes yang menghosting Milvus
Mengonfigurasi nilai Helm
Perbarui
values.yamlAnda berdasarkan jenis penerapan Anda:Untuk penerapan mandiri
standalone: extraEnv: - name: MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS value: /milvus/configs/credentials.json # Container path volumes: - name: vertex-ai-credentials-vol secret: secretName: vertex-ai-secret # Must match Step 1 volumeMounts: - name: vertex-ai-credentials-vol mountPath: /milvus/configs/credentials.json # Must match extraEnv value subPath: credentials.json # Must match secret key name readOnly: trueUntuk penerapan terdistribusi (tambahkan ke setiap komponen)
proxy: extraEnv: - name: MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS value: /milvus/configs/credentials.json volumes: - name: vertex-ai-credentials-vol secret: secretName: vertex-ai-secret volumeMounts: - name: vertex-ai-credentials-vol mountPath: /milvus/configs/credentials.json subPath: credentials.json readOnly: true # Repeat same configuration for dataNode, etc.
Menerapkan konfigurasi Helm
Terapkan konfigurasi yang telah diperbarui ke cluster Anda:
helm upgrade milvus milvus/milvus -f values.yaml -n <your-milvus-namespace>
Gunakan fungsi penyematan
Setelah Vertex AI dikonfigurasikan, ikuti langkah-langkah berikut untuk mendefinisikan dan menggunakan fungsi penyematan.
Langkah 1: Tentukan bidang skema
Untuk menggunakan fungsi penyematan, buat koleksi dengan skema tertentu. Skema ini harus menyertakan setidaknya tiga bidang yang diperlukan:
Bidang utama yang secara unik mengidentifikasi setiap entitas dalam koleksi.
Bidang skalar yang menyimpan data mentah yang akan disematkan.
Bidang vektor yang dicadangkan untuk menyimpan penyematan vektor yang akan dihasilkan oleh fungsi untuk bidang skalar.
from pymilvus import MilvusClient, DataType, Function, FunctionType, CollectionSchema, FieldSchema
# Assume you have connected to Milvus
# client = MilvusClient(uri="http://localhost:19530")
# 1. Create Schema
schema = MilvusClient.create_schema()
# 2. Add fields
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
schema.add_field("document", DataType.VARCHAR, max_length=9000) # Store text data
# IMPORTANT: Set dim to match the output dimension of the model and parameters
schema.add_field("dense_vector", DataType.FLOAT_VECTOR, dim=768) # Store embedding vectors (example dimension)
Langkah 2: Menambahkan fungsi penyematan ke skema
Modul Function di Milvus secara otomatis mengubah data mentah yang disimpan dalam bidang skalar menjadi embedding dan menyimpannya ke dalam bidang vektor yang didefinisikan secara eksplisit.
# 3. Define Vertex AI embedding function
text_embedding_function = Function(
name="vert_func", # Unique identifier for this embedding function
function_type=FunctionType.TEXTEMBEDDING, # Indicates a text embedding function
input_field_names=["document"], # Scalar field(s) containing text data to embed
output_field_names=["dense_vector"], # Vector field(s) for storing embeddings
params={ # Vertex AI specific parameters (function-level)
"provider": "vertexai", # Must be set to "vertexai"
"model_name": "text-embedding-005", # Required: Specifies the Vertex AI model to use
"projectid": "your-gcp-project-id", # Required: Your Google Cloud project ID
# Optional parameters (include these only if necessary):
# "location": "us-central1", # Optional: Vertex AI service region (default us-central1)
# "task": "DOC_RETRIEVAL", # Optional: Embedding task type (default DOC_RETRIEVAL)
# "dim": 768 # Optional: Output vector dimension (1-768)
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
Parameter |
Deskripsi |
Diperlukan? |
Nilai Contoh |
|---|---|---|---|
|
Penyedia model embedding. Diatur ke "vertexai". |
Ya |
|
|
Menentukan model penyematan Vertex AI yang akan digunakan. |
Ya |
|
|
ID proyek Google Cloud Anda. |
Ya |
|
|
Wilayah untuk layanan Vertex AI. Saat ini, penyematan Vertex AI terutama mendukung us-central1. Defaultnya adalah us-central1. |
No |
|
|
Menentukan jenis tugas penyematan, yang memengaruhi hasil penyematan. Nilai yang diterima: DOC_RETRIEVAL (default), CODE_RETRIEVAL (hanya didukung 005), STS (Kesamaan Tekstual Semantik). |
Tidak |
|
|
Dimensi vektor penyematan keluaran. Menerima bilangan bulat antara 1 dan 768. Catatan: Jika ditentukan, pastikan redup bidang vektor dalam Skema cocok dengan nilai ini. |
Tidak |
|
Langkah selanjutnya
Setelah mengonfigurasi fungsi penyematan, lihat Ikhtisar Fungsi untuk panduan tambahan mengenai konfigurasi indeks, contoh penyisipan data, dan operasi pencarian semantik.