バーテックス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 つの方法をサポートしています。

オプション

優先順位

最適な方法

設定ファイル (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
    

    前述の構成では

    • 信頼性の高いファイルアクセスのために絶対パスを使用する (~/credentials.json ではなく/home/user/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シークレットの作成

    コントロールマシン(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:スキーマフィールドの定義

埋め込み関数を使用するには、特定のスキーマを持つコレクションを作成します。このスキーマには、少なくとも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)

パラメータ

説明

必須か?

値の例

provider

埋め込みモデルプロバイダ。vertexai "に設定。

はい

"vertexai"

model_name

使用する頂点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までの整数を受け付ける。注:指定する場合は、スキーマのベクトル・フィールドの次元がこの値と一致するようにしてください。

いいえ

768

次のステップ

埋め込み関数を設定した後、インデックス設定、データ挿入例、セマンティック検索操作に関する追加ガイダンスについては、関数の概要を参照してください。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?