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 (milvus.yaml)

Tinggi

Pengaturan yang berlaku di seluruh klaster dan persisten

Variabel lingkungan (MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS)

Rendah

Alur kerja kontainer, pengujian cepat

Milvus akan selalu lebih memilih kredensial yang dideklarasikan di milvus.yaml daripada variabel lingkungan apa pun untuk penyedia yang sama.

  1. Menyandikan kunci JSON Anda dengan Base64

    cat credentials.json | jq . | base64
    
  2. Mendeklarasikan kredensial di milvus.yaml

    # milvus.yaml
    credential:
      gcp_vertex:                      # arbitrary label
        credential_json: |
          <YOUR_BASE64_ENCODED_JSON>
    
  3. 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_json dan 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.

  1. Pasang kunci Anda ke dalam kontainer

    Edit berkas docker-compose.yaml Anda 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:ro
    

    Dalam konfigurasi sebelumnya:

    • Gunakan jalur absolut untuk akses berkas yang andal (/home/user/credentials.json, bukan ~/credentials.json)

    • Jalur kontainer harus diakhiri dengan ekstensi .json

    • :ro untuk memastikan akses hanya-baca demi keamanan

  2. Tetapkan variabel lingkungan

    Dalam berkas docker-compose.yaml yang 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.json
    
  3. Terapkan 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.

  1. 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

  2. Mengonfigurasi nilai Helm

    Perbarui values.yaml Anda 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: true
      
    • Untuk 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.
      
  3. 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

provider

Penyedia model embedding. Diatur ke "vertexai".

Ya

"vertexai"

model_name

Menentukan model penyematan Vertex AI yang akan digunakan.

Ya

"text-embedding-005"

projectid

ID proyek Google Cloud Anda.

Ya

"your-gcp-project-id"

location

Wilayah untuk layanan Vertex AI. Saat ini, penyematan Vertex AI terutama mendukung us-central1. Defaultnya adalah us-central1.

No

"us-central1"

task

Menentukan jenis tugas penyematan, yang memengaruhi hasil penyematan. Nilai yang diterima: DOC_RETRIEVAL (default), CODE_RETRIEVAL (hanya didukung 005), STS (Kesamaan Tekstual Semantik).

Tidak

"DOC_RETRIEVAL"

dim

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

768

Langkah selanjutnya

Setelah mengonfigurasi fungsi penyematan, lihat Ikhtisar Fungsi untuk panduan tambahan mengenai konfigurasi indeks, contoh penyisipan data, dan operasi pencarian semantik.

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?