頂點人工智能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 金鑰。我們支援兩種方法,請根據您的部署和作業需求選擇其中一種。
選項 |
優先順序 |
最適用於 |
|---|---|---|
設定檔案 ( |
高 |
群集範圍內的持久設定 |
環境變數 ( |
低 |
容器工作流程、快速測試 |
選項 1:組態檔案 (建議使用且優先順序較高)
Milvus 會永遠偏好在milvus.yaml 中宣告的憑證,而非相同提供者的任何環境變數。
對 JSON 金鑰進行 Base64 編碼
cat credentials.json | jq . | base64在
milvus.yaml# milvus.yaml credential: gcp_vertex: # arbitrary label credential_json: | <YOUR_BASE64_ENCODED_JSON>將憑證與 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),請參閱下載安裝檔案。
將您的金鑰掛載到容器中
編輯您的
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旗標確保安全的唯讀存取
設定環境變數
在相同的
docker-compose.yaml檔案中,新增指向憑證路徑的環境變數:services: standalone: environment: # Essential for Vertex AI authentication MILVUSAI_GOOGLE_APPLICATION_CREDENTIALS: /milvus/configs/google_application_credentials.json套用變更
重新啟動你的 Milvus 容器來啟動配置:
docker-compose down && docker-compose up -d
若要取得您的 Milvus 配置檔案(values.yaml),請參閱透過配置檔案配置 Milvus。
建立 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 命名空間
設定 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.
套用 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)
參數 |
說明 |
需要嗎? |
範例值 |
|---|---|---|---|
|
嵌入模型提供者。設定為 "vertexai"。 |
是 |
|
|
指定要使用的 Vertex AI 嵌入模型。 |
是 |
|
|
您的 Google Cloud 專案 ID。 |
是 |
|
|
Vertex AI 服務的區域。目前,Vertex AI 嵌入主要支援 us-central1。預設為 us-central1。 |
不支援 |
|
|
指定會影響嵌入結果的嵌入任務類型。可接受的值:DOC_RETRIEVAL (預設)、CODE_RETRIEVAL (僅支援 005)、STS (Semantic Textual Similarity)。 |
無 |
|
|
輸出嵌入向量的尺寸。接受 1 到 768 之間的整數。注意:如果指定,請確保 Schema 中向量欄位的 dim 與此值相符。 |
無 |
|
下一步
設定嵌入函式後,請參閱函式概述,以取得索引設定、資料插入範例和語意搜尋作業的其他指引。