頂點人工智能Compatible with Milvus 2.6.x

Google CloudVertex AI是專為文字嵌入模型設計的高效能服務。本指南說明如何將 Google Cloud Vertex AI 與 Milvus 搭配使用,以有效率地產生文字嵌入。

Vertex AI 支援多種嵌入模型,適用於不同的使用個案:

  • gemini-embedding-001(在英文、多語言和代碼任務中的一流性能)

  • text-embedding-005 (最新的文字嵌入模型)

  • text-multilingual-embedding-002 (最新的多語言文字嵌入模型)

如需詳細資訊,請參閱Vertex AI 文字內嵌模型

先決條件

在設定 Vertex AI 之前,請確保您符合下列要求:

  • 執行 Milvus 2.6 或更高版本 - 確認您的部署符合最低版本要求。

  • 建立 Google Cloud 服務帳戶- 至少,您可能需要「Vertex AI 使用者」等角色或其他更特定的角色。如需詳細資訊,請參閱建立服務帳戶

  • 下載服務帳戶的 JSON 金鑰檔案- 將此憑證檔案安全地儲存在伺服器或本機上。如需詳細資訊,請參閱建立服務帳戶金鑰

設定憑證

在 Milvus 可以呼叫 Vertex AI 之前,它需要存取您的 GCP 服務帳戶 JSON 金鑰。我們支援兩種方法,請根據您的部署和作業需求選擇其中一種。

選項

優先順序

最適用於

設定檔案 (milvus.yaml)

群集範圍內的持久設定

環境變數 (MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS)

容器工作流程、快速測試

Milvus 會永遠偏好在milvus.yaml 中宣告的憑證,而非相同提供者的任何環境變數。

  1. 對 JSON 金鑰進行 Base64 編碼

    cat credentials.json | jq . | base64
    
  2. milvus.yaml

    # milvus.yaml
    credential:
      gcp_vertex:                      # arbitrary label
        credential_json: |
          <YOUR_BASE64_ENCODED_JSON>
    
  3. 將憑證與 Vertex AI 提供者綁定

    # milvus.yaml
    function:
      textEmbedding:
        providers:
          vertexai:
            credential: gcp_vertex      # must match the label above
            url: <optional: custom Vertex AI endpoint>
    

    如果您之後需要輪換金鑰,只需更新credential_json 下的 Base64 字串,然後重啟 Milvus - 不需要變更您的環境或容器。

選項 2:環境變數

當您偏好在部署時注入秘密時,請使用此方法。Milvus 只會在milvus.yaml 中沒有相匹配的項目存在時,才使用 env-vars。

配置步驟取決於您的 Milvus 部署模式 (獨立 vs. 分散式群集) 和協調平台 (Docker Compose vs. Kubernetes)。

若要取得您的 Milvus 配置檔案(docker-compose.yaml),請參閱下載安裝檔案

  1. 將您的金鑰掛載到容器中

    編輯您的docker-compose.yaml 檔案,以包含憑證卷映射:

    services:
      standalone:
        volumes:
          # Map host credential file to container path
          - /path/to/your/credentials.json:/milvus/configs/google_application_credentials.json:ro
    

    在前面的配置中:

    • 使用絕對路徑進行可靠的檔案存取 (/home/user/credentials.json 而非~/credentials.json)

    • 容器路徑必須以.json 副檔名結束

    • :ro 旗標確保安全的唯讀存取

  2. 設定環境變數

    在相同的docker-compose.yaml 檔案中,新增指向憑證路徑的環境變數:

    services:
      standalone:
        environment:
          # Essential for Vertex AI authentication
          MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.json
    
  3. 套用變更

    重新啟動你的 Milvus 容器來啟動配置:

    docker-compose down && docker-compose up -d
    

若要取得您的 Milvus 配置檔案(values.yaml),請參閱透過配置檔案配置 Milvus

  1. 建立 Kubernetes Secret

    在您的控制機器(配置kubectl的地方)上執行:

    kubectl create secret generic vertex-ai-secret \
      --from-file=credentials.json=/path/to/your/credentials.json \
      -n <your-milvus-namespace>
    

    在前面的指令中

    • vertex-ai-secret:您的機密名稱(可自訂)

    • /path/to/your/credentials.json:GCP 認證檔案的本機檔案名稱

    • <your-milvus-namespace>:託管 Milvus 的 Kubernetes 命名空間

  2. 設定 Helm 值

    根據您的部署類型更新您的values.yaml

    • 獨立部署

      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
      
    • 針對分散式部署 (新增至每個元件)

      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. 套用 Helm 配置

    將更新的配置部署到您的群集:

    helm upgrade milvus milvus/milvus -f values.yaml -n <your-milvus-namespace>
    

使用嵌入功能

Vertex AI 配置完成後,請依照下列步驟定義並使用嵌入函式。

步驟 1:定義模式欄位

若要使用嵌入功能,請建立具有特定模式的集合。此模式必須包含至少三個必要欄位:

  • 唯一識別集合中每個實體的主要欄位。

  • 儲存要嵌入的原始資料的標量欄位。

  • 預留向量欄位,以儲存函式將為標量欄位產生的向量嵌入。

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)

步驟 2:新增嵌入函式至模式

Milvus 的函式模組會自動將儲存於標量欄位的原始資料轉換成嵌入資料,並將它們儲存到明確定義的向量欄位。

# 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)

參數

說明

需要嗎?

範例值

provider

嵌入模型提供者。設定為 "vertexai"。

"vertexai"

model_name

指定要使用的 Vertex AI 嵌入模型。

"text-embedding-005"

projectid

您的 Google Cloud 專案 ID。

"your-gcp-project-id"

location

Vertex AI 服務的區域。目前,Vertex AI 嵌入主要支援 us-central1。預設為 us-central1。

不支援

"us-central1"

task

指定會影響嵌入結果的嵌入任務類型。可接受的值:DOC_RETRIEVAL (預設)、CODE_RETRIEVAL (僅支援 005)、STS (Semantic Textual Similarity)。

"DOC_RETRIEVAL"

dim

輸出嵌入向量的尺寸。接受 1 到 768 之間的整數。注意:如果指定,請確保 Schema 中向量欄位的 dim 與此值相符。

768

下一步

設定嵌入函式後,請參閱函式概述,以取得索引設定、資料插入範例和語意搜尋作業的其他指引。

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?