データ ソース - Elasticsearch (プレビュー)

Azure OpenAI On Your Data 使用時の Elasticsearch の構成可能オプション。 このデータ ソースは API バージョン 2024-02-15-preview でサポートされています。

名前 タイプ Required 説明
parameters パラメーター True Elasticsearch の構成時に使用するパラメーター。
type string True elasticsearchである必要があります。

パラメーター

件名 タイプ Required Description
endpoint string True 使用する Elasticsearch リソースの絶対エンドポイント パス。
index_name string True 参照される Elasticsearch で使用するインデックスの名前。
authentication KeyAndKeyIdAuthenticationOptions または EncodedApiKeyAuthenticationOptions True 定義されたデータ ソースにアクセスするときに使用する認証方法。
embedding_dependency DeploymentNameVectorizationSourceEndpointVectorizationSourceModelIdVectorizationSource のいずれか False ベクトル検索の埋め込み依存関係。 query_typevector の場合に必要です。
fields_mapping FieldsMappingOptions False 検索インデックスを操作するときに使用するカスタマイズされたフィールド マッピング動作。
in_scope boolean False クエリをインデックス付きデータの使用に制限するかどうか。 既定値は True です。
query_type QueryType False Elasticsearch で使用するクエリの種類。 既定値は simple です
role_information string False ふるまいに関する指示と、応答の生成時に参照する必要があるコンテキストをモデルに与えます。 アシスタントのパーソナリティを説明し、応答の書式設定方法を伝えることができます。
strictness integer False 検索の関連性フィルター処理の構成された厳密度。 厳密度が高いほど、精度は高くなりますが、回答の再現率は低くなります。 既定値は 3 です。
top_n_documents integer False 構成されたクエリの特徴量に対して構成されている上位のドキュメントの数。 既定値は 5 です。

キーとキー ID の認証オプション

API キーを使用する場合の Azure OpenAI On Your Data の認証オプション。

名前 タイプ Required Description
key string True 認証に使用する Elasticsearch キー。
key_id string True 認証に使用する Elasticsearch キー ID。
type string True key_and_key_idである必要があります。

エンコードされた API キー認証オプション

Elasticsearch でエンコードされた API キーを使用する場合の Azure OpenAI On Your Data の認証オプション。

名前 タイプ Required Description
encoded_api_key string True 認証に使用する Elasticsearch でエンコードされた API キー。
type string True encoded_api_keyである必要があります。

デプロイ名のベクター化ソース

ベクトル検索を適用するときに Azure OpenAI On Your Data で使用されるベクター化ソースの詳細。 このベクター化ソースは、同じ Azure OpenAI リソース内の内部埋め込みモデル デプロイ名に基づきます。 このベクター化ソースにより、Azure OpenAI API キーを使用せずに、Azure OpenAI パブリック ネットワーク アクセスなしでベクトル検索を使用できます。

名前 タイプ Required Description
deployment_name string True 同じ Azure OpenAI リソース内の埋め込みモデル デプロイ名。
type string True deployment_nameである必要があります。

エンドポイント ベクター化ソース

ベクトル検索を適用するときに Azure OpenAI On Your Data で使用されるベクター化ソースの詳細。 このベクター化ソースは、Azure OpenAI 埋め込み API エンドポイントに基づきます。

名前 タイプ Required Description
endpoint string True 埋め込みの取得元となるリソース エンドポイント URL を指定します。 https://{YOUR_RESOURCE_NAME}.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/embeddings という形式にする必要があります。 api-version クエリ パラメーターは許可されていません。
authentication ApiKeyAuthenticationOptions True 指定したエンドポイントから埋め込みを取得するときに使用する認証オプションを指定します。
type string True endpointである必要があります。

モデル ID ベクター化ソース

ベクトル検索を適用するときに Azure OpenAI On Your Data で使用されるベクター化ソースの詳細。 このベクター化ソースは、Elasticsearch モデル ID に基づいています。

名前 タイプ Required Description
model_id string True ベクター化に使用するモデル ID を指定します。 このモデル ID は Elasticsearch に定義する必要があります。
type string True model_idである必要があります。

API キー認証オプション

API キーを使用する場合の Azure OpenAI On Your Data の認証オプション。

名前 タイプ Required Description
key string True 認証に使用する API キー。
type string True api_keyである必要があります。

フィールド マッピング オプション

構成済みの Elasticsearch リソースを使用する場合のフィールドの処理方法を制御する省略可能な設定。

名前 タイプ Required 説明
content_fields string[] False コンテンツとして扱う必要があるインデックス フィールドの名前。
vector_fields string[] False ベクトル データを表すフィールドの名前。
content_fields_separator string False コンテンツ フィールドで使用する区切り記号パターン。 既定値は \n です。
filepath_field string False ファイルパスとして使用するインデックス フィールドの名前。
title_field string False タイトルとして使用するインデックス フィールドの名前。
url_field string False URL として使用するインデックス フィールドの名前。

クエリの種類

Azure OpenAI On Your Data と共に使用するときに実行する必要がある Elasticsearch 取得クエリの種類。

列挙値 説明
simple 既定の単純なクエリ パーサーを表します。
vector 計算されたデータに対するベクトル検索を表します。

前提条件:

  • ユーザーから Azure OpenAI リソースへのロールの割り当てを構成します。 必要なロール: Cognitive Services OpenAI User
  • Az CLI をインストールし、az login を実行します。
  • 環境変数 AzureOpenAIEndpointChatCompletionsDeploymentNameSearchEndpointIndexNameKeyKeyId を定義します。
export AzureOpenAIEndpoint=https://example.openai.azure.com/
export ChatCompletionsDeploymentName=turbo
export SearchEndpoint='https://example.eastus.azurecontainer.io'
export IndexName=testindex
export Key='***'
export KeyId='***'

最新の pip パッケージ openaiazure-identity をインストールします。

import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

endpoint = os.environ.get("AzureOpenAIEndpoint")
deployment = os.environ.get("ChatCompletionsDeploymentName")
index_name = os.environ.get("IndexName")
search_endpoint = os.environ.get("SearchEndpoint")
key = os.environ.get("Key")
key_id = os.environ.get("KeyId")

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")

client = AzureOpenAI(
    azure_endpoint=endpoint,
    azure_ad_token_provider=token_provider,
    api_version="2024-02-15-preview",
)

completion = client.chat.completions.create(
    model=deployment,
    messages=[
        {
            "role": "user",
            "content": "Who is DRI?",
        },
    ],
    extra_body={
        "data_sources": [
            {
                "type": "elasticsearch",
                "parameters": {
                    "endpoint": search_endpoint,
                    "index_name": index_name,
                    "authentication": {
                        "type": "key_and_key_id",
                        "key": key,
                        "key_id": key_id
                    }
                }
            }
        ]
    }
)

print(completion.model_dump_json(indent=2))