Azure OpenAICompatible with Milvus 2.6.x
このトピックでは、MilvusでAzure OpenAIのエンベッディング関数を設定し、使用する方法について説明します。
埋め込みモデルの選択
Milvusは、Azure OpenAIが提供するすべてのエンベッディングモデルをサポートしています。以下は、現在利用可能な Azure OpenAI 埋め込みモデルです:
モデル |
寸法 |
最大トークン数 |
説明 |
|---|---|---|---|
テキストエンベッディング-3-小 |
デフォルト:1,536(1536以下のディメンションサイズに変換可能) |
8,191 |
コスト重視でスケーラブルなセマンティック検索に最適-低価格で強力なパフォーマンスを提供。 |
テキスト埋め込み-3-ラージ |
デフォルト: 3,072(3072以下のディメンションサイズに変更可能) |
8,191 |
検索精度の向上と豊富な意味表現を必要とするアプリケーションに最適。 |
テキスト埋め込み-ada-002 |
固定:1,536(切り捨てをサポートしない) |
8,191 |
レガシーパイプラインや後方互換性を必要とするシナリオに適した前世代モデル。 |
第三世代の埋め込みモデル(text-embedding-3)は、dim パラメータによって埋め込みサイズを小さくすることができます。一般的に、埋め込みサイズが大きいと、計算、メモリ、ストレージの観点からコストが高くなります。次元数を調整できることで、全体的なコストとパフォーマンスをよりコントロールできるようになります。各モデルの詳細については、埋め込みを参照してください。
認証情報の構成
Milvusはエンベッディングをリクエストする前に、Azure OpenAI APIキーを知っている必要があります。Milvusはクレデンシャルを設定するために2つの方法を提供します:
設定ファイル(推奨):
milvus.yamlにAPIキーを保存し、再起動とノードが自動的にAPIキーを取得するようにします。環境変数:Docker Composeに最適です。
コンフィギュレーション・ファイルはベアメタルやVMでメンテナンスしやすく、env-varルートはコンテナのワークフローに適している。
同じプロバイダのAPIキーが設定ファイルと環境変数の両方に存在する場合、milvusは常にmilvus.yaml の値を使用し、環境変数は無視します。
オプション 1: 設定ファイル (推奨 & 優先度高)
milvus.yamlMilvusは起動時にAPIキーを読み込み、同じプロバイダの環境変数を上書きします。
**の下にキーを宣言してください。
credential:APIキーは1つでも複数でもかまいません。それぞれに、後で参照するためのラベルを付けてください。
# milvus.yaml credential: apikey_dev: # dev environment apikey: <YOUR_DEV_KEY> apikey_prod: # production environment apikey: <YOUR_PROD_KEY>APIキーをここに記述することで、再起動後もAPIキーが保持され、ラベルを変更するだけでAPIキーを切り替えることができます。
MilvusにAzure OpenAIの呼び出しに使うキーを教える
同じファイルで、Azure OpenAIプロバイダーに使用したいラベルを指定する。
function: textEmbedding: providers: azure_openai: credential: apikey_dev # ← choose any label you defined above resource_name: # Your azure openai resource name # url: # Your azure openai embedding urlこれにより、MilvusがAzure OpenAIのembeddingsエンドポイントに送信するすべてのリクエストに特定のキーがバインドされます。
オプション 2: 環境変数
Docker ComposeでMilvusを実行し、ファイルやイメージから秘密を守りたい場合にこの方法を使用します。
Milvusは、milvus.yaml にプロバイダのキーが見つからない場合のみ、環境変数にフォールバックします。
変数 |
必須 |
説明 |
|---|---|---|
|
はい |
AzureOpenAIのキーを各Milvusコンテナ内で利用可能にする(Azure OpenAIのキーが |
|
はい |
Azure OpenAI サービスリソースの作成時に定義した Azure OpenAI リソース名。 |
docker-compose.yamlファイルで、環境変数を設定します。
# docker-compose.yaml (standalone service section)
standalone:
# ... other configurations ...
environment:
# ... other environment variables ...
# Set the environment variable pointing to the Azure OpenAI API key inside the container
MILVUSAI_AZURE_OPENAI_API_KEY: <MILVUSAI_AZURE_OPENAI_API_KEY>
MILVUSAI_AZURE_OPENAI_RESOURCE_NAME: <MILVUSAI_AZURE_OPENAI_RESOURCE_NAME>
environment: ブロックは、Milvus コンテナにのみキーを注入し、ホスト OS には何も手を付けません。詳細については、Docker ComposeによるMilvusの設定を参照してください。
埋め込み機能の使用
認証情報の設定が完了したら、以下の手順で埋め込み関数を定義し、使用します。
ステップ1: スキーマフィールドの定義
埋め込み関数を使用するには、特定のスキーマを持つコレクションを作成します。このスキーマには、少なくとも3つの必要なフィールドが含まれていなければなりません:
コレクション内の各エンティティを一意に識別するプライマリフィールド。
埋め込む生データを格納するスカラーフィールド。
スカラー・フィールドに対して関数が生成するベクトル埋め込みを格納するために予約されたベクトル・フィールド。
次の例では、テキストデータを格納するためのスカラーフィールド"document" と、Functionモジュールによって生成される埋め込みデータを格納するためのベクトルフィールド"dense" を持つスキーマを定義しています。ベクトル次元(dim)は、選択した埋め込みモデルの出力に合わせて設定することを忘れないでください。
from pymilvus import MilvusClient, DataType, Function, FunctionType
# Initialize Milvus client
client = MilvusClient(
uri="http://localhost:19530",
)
# Create a new schema for the collection
schema = client.create_schema()
# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)
# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1536)
ステップ2:スキーマへの埋め込み関数の追加
埋め込み関数を定義したら、コレクションスキーマに追加します。これにより、Milvusは指定された埋め込み関数を使用して、テキストデータからの埋め込みを処理・保存するようになります。
# Define embedding function specifically for Azure OpenAI provider
text_embedding_function = Function(
name="azopenai", # 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 field(s) for storing embeddings
params={ # Provider-specific embedding parameters
"provider": "azure_openai", # Embedding provider name (must be "azure_openai")
"model_name": "zilliz-text-embedding-3-small", # Model should be set to the deployment name you chose when you deployed the embedding model
# Optional parameters (only specify if necessary):
# "url": "https://{resource_name}.openai.azure.com/" # Optional: Your Azure OpenAI service endpoint
# "credential": "apikey_dev", # Optional: Credential label specified in milvus.yaml
# "dim": "1536", # Optional: Shorten the output vector dimension
# "user": "user123", # Optional: identifier for API tracking
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
次のステップ
埋め込み関数を設定した後、インデックス設定、データ挿入例、セマンティック検索操作に関する追加ガイダンスについては、「関数の概要」を参照してください。