バーテックスAICompatible 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 User" のようなロール、またはより具体的なロールが必要です。詳細については、「サービス アカウントの作成」を参照してください。
サービス アカウントの JSON キー ファイルをダウンロードする- このクレデンシャル ファイルをサーバーまたはローカル マシンに安全に保存します。詳細については、「サービス アカウント キーの作成」を参照してください。
認証情報の構成
MilvusがVertex AIを呼び出す前に、GCPサービスアカウントのJSONキーにアクセスする必要があります。以下の 2 つの方法をサポートしています。
オプション |
優先順位 |
最適な方法 |
|---|---|---|
設定ファイル ( |
高い |
クラスタ全体の永続的な設定 |
環境変数 ( |
低い |
コンテナワークフロー、クイックテスト |
オプション 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前述の構成では
信頼性の高いファイルアクセスのために絶対パスを使用する (
~/credentials.jsonではなく/home/user/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シークレットの作成
コントロールマシン(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:スキーマフィールドの定義
埋め込み関数を使用するには、特定のスキーマを持つコレクションを作成します。このスキーマには、少なくとも3つの必要なフィールドが含まれていなければなりません:
コレクション内の各エンティティを一意に識別するプライマリフィールド。
埋め込む生データを格納するスカラーフィールド。
スカラーフィールドに対して関数が生成するベクトル埋め込みを格納するために予約されたベクトルフィールド。
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のFunctionモジュールは、スカラーフィールドに格納された生データを自動的に埋め込みデータに変換し、明示的に定義されたベクトルフィールドに格納します。
# 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 "に設定。 |
はい |
|
|
使用する頂点AI埋め込みモデルを指定する。 |
はい |
|
|
Google CloudのプロジェクトID。 |
はい |
|
|
Vertex AI サービスのリージョン。現在、Vertex AI エンベッディングは主に us-central1 をサポートしています。デフォルトは us-central1 です。 |
いいえ |
|
|
埋め込み結果に影響する埋め込みタスクのタイプを指定します。指定可能な値:DOC_RETRIEVAL(デフォルト)、CODE_RETRIEVAL(005のみサポート)、STS(Semantic Textual Similarity)。 |
いいえ |
|
|
出力埋め込みベクトルの次元。1から768までの整数を受け付ける。注:指定する場合は、スキーマのベクトル・フィールドの次元がこの値と一致するようにしてください。 |
いいえ |
|
次のステップ
埋め込み関数を設定した後、インデックス設定、データ挿入例、セマンティック検索操作に関する追加ガイダンスについては、関数の概要を参照してください。