Tutorial: semantic search with the inference API

このチュートリアルの指示は、さまざまなサービスを使用してデータに対してセマンティック検索を実行するための推論APIワークフローの使用方法を示しています。

Elastic Stackでセマンティック検索を最も簡単に実行する方法については、semantic_textのエンドツーエンドチュートリアルを参照してください。

以下の例では、次のモデルを使用します:

CohereおよびOpenAIの任意のモデルを使用できます。これらはすべて推論APIによってサポートされています。HuggingFaceで利用可能な推奨モデルのリストについては、サポートされているモデルリストを参照してください。

以下のウィジェットのいずれかで使用したいサービスの名前をクリックして、対応する指示を確認してください。

Requirements

Cohereサービスで推論APIを使用するには、Cohereアカウントが必要です。

ELSERはElasticによってトレーニングされたモデルです。Elasticsearchのデプロイメントがある場合、elserサービスで推論APIを使用するための追加要件はありません。

HuggingFaceサービスで推論APIを使用するには、HuggingFaceアカウントが必要です。

OpenAIサービスで推論APIを使用するには、OpenAIアカウントが必要です。

  • Azureサブスクリプション
  • 希望するAzureサブスクリプションでAzure OpenAIへのアクセスが付与されていること。Azure OpenAIへのアクセスを申請するには、https://aka.ms/oai/accessのフォームに記入してください。
  • Azure OpenAI Studioにデプロイされた埋め込みモデル。

  • Azureサブスクリプション

  • Azure AI Studioへのアクセス
  • デプロイされた埋め込みまたはチャット完了モデル。

  • Google Cloudアカウント

  • Google Cloud内のプロジェクト
  • プロジェクト内でVertex AI APIが有効になっていること
  • Google Vertex AI API用の有効なサービスアカウント
  • サービスアカウントはVertex AIユーザー役割とaiplatform.endpoints.predict権限を持っている必要があります。

  • La PlateformeのMistralアカウント

  • アカウント用に生成されたAPIキー

  • Amazon Bedrockへのアクセスを持つAWSアカウント

  • Amazon Bedrockにアクセスするためのアクセスキーとシークレットキーのペア

Create an inference endpoint

推論エンドポイントを作成するには、Create inference APIを使用します:

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="cohere_embeddings",
  4. inference_config={
  5. "service": "cohere",
  6. "service_settings": {
  7. "api_key": "<api_key>",
  8. "model_id": "embed-english-v3.0",
  9. "embedding_type": "byte"
  10. }
  11. },
  12. )
  13. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "cohere_embeddings",
  4. inference_config: {
  5. service: "cohere",
  6. service_settings: {
  7. api_key: "<api_key>",
  8. model_id: "embed-english-v3.0",
  9. embedding_type: "byte",
  10. },
  11. },
  12. });
  13. console.log(response);

Console

  1. PUT _inference/text_embedding/cohere_embeddings
  2. {
  3. "service": "cohere",
  4. "service_settings": {
  5. "api_key": "<api_key>",
  6. "model_id": "embed-english-v3.0",
  7. "embedding_type": "byte"
  8. }
  9. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子cohere_embeddingsです。
CohereアカウントのAPIキー。APIキーはCohereダッシュボードのAPIキーセクションで見つけることができます。APIキーは一度だけ提供する必要があります。Get inference APIはAPIキーを返しません。
使用する埋め込みモデルの名前。Cohereの埋め込みモデルのリストはこちらで確認できます。

このモデルを使用する場合、dense_vectorフィールドマッピングで使用する推奨の類似度測定はdot_productです。Cohereモデルの場合、埋め込みは単位長に正規化されており、dot_productcosineの測定は同等です。

Python

  1. resp = client.inference.put(
  2. task_type="sparse_embedding",
  3. inference_id="elser_embeddings",
  4. inference_config={
  5. "service": "elser",
  6. "service_settings": {
  7. "num_allocations": 1,
  8. "num_threads": 1
  9. }
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "sparse_embedding",
  3. inference_id: "elser_embeddings",
  4. inference_config: {
  5. service: "elser",
  6. service_settings: {
  7. num_allocations: 1,
  8. num_threads: 1,
  9. },
  10. },
  11. });
  12. console.log(response);

Console

  1. PUT _inference/sparse_embedding/elser_embeddings
  2. {
  3. "service": "elser",
  4. "service_settings": {
  5. "num_allocations": 1,
  6. "num_threads": 1
  7. }
  8. }
タイプはsparse_embeddingで、inference_idは推論エンドポイントの一意の識別子elser_embeddingsです。

ELSERモデルを事前にダウンロードしてデプロイする必要はありません。上記のAPIリクエストは、モデルがまだダウンロードされていない場合にモデルをダウンロードし、その後デプロイします。

Kibana Consoleを使用しているときに502 Bad Gatewayエラーが応答に表示されることがあります。このエラーは通常、モデルがバックグラウンドでダウンロードされている間のタイムアウトを反映しています。ダウンロードの進行状況はMachine Learning UIで確認できます。Pythonクライアントを使用している場合、timeoutパラメータをより高い値に設定できます。

まず、Hugging Faceエンドポイントページで新しい推論エンドポイントを作成してエンドポイントURLを取得する必要があります。新しいエンドポイント作成ページでモデルall-mpnet-base-v2を選択し、次に高度な設定セクションでSentence Embeddingsタスクを選択します。エンドポイントを作成します。エンドポイントの初期化が完了した後、URLをコピーします。このURLは次の推論API呼び出しで必要です。

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="hugging_face_embeddings",
  4. inference_config={
  5. "service": "hugging_face",
  6. "service_settings": {
  7. "api_key": "<access_token>",
  8. "url": "<url_endpoint>"
  9. }
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "hugging_face_embeddings",
  4. inference_config: {
  5. service: "hugging_face",
  6. service_settings: {
  7. api_key: "<access_token>",
  8. url: "<url_endpoint>",
  9. },
  10. },
  11. });
  12. console.log(response);

Console

  1. PUT _inference/text_embedding/hugging_face_embeddings
  2. {
  3. "service": "hugging_face",
  4. "service_settings": {
  5. "api_key": "<access_token>",
  6. "url": "<url_endpoint>"
  7. }
  8. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子hugging_face_embeddingsです。
有効なHuggingFaceアクセストークン。アカウントの設定ページで見つけることができます。
Hugging Faceで作成した推論エンドポイントのURL。

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="openai_embeddings",
  4. inference_config={
  5. "service": "openai",
  6. "service_settings": {
  7. "api_key": "<api_key>",
  8. "model_id": "text-embedding-ada-002"
  9. }
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "openai_embeddings",
  4. inference_config: {
  5. service: "openai",
  6. service_settings: {
  7. api_key: "<api_key>",
  8. model_id: "text-embedding-ada-002",
  9. },
  10. },
  11. });
  12. console.log(response);

Console

  1. PUT _inference/text_embedding/openai_embeddings
  2. {
  3. "service": "openai",
  4. "service_settings": {
  5. "api_key": "<api_key>",
  6. "model_id": "text-embedding-ada-002"
  7. }
  8. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子openai_embeddingsです。
OpenAIアカウントのAPIキー。OpenAIアカウントのAPIキーセクションでOpenAI APIキーを見つけることができます。APIキーは一度だけ提供する必要があります。Get inference APIはAPIキーを返しません。
使用する埋め込みモデルの名前。OpenAIの埋め込みモデルのリストはこちらで確認できます。

このモデルを使用する場合、dense_vectorフィールドマッピングで使用する推奨の類似度測定はdot_productです。OpenAIモデルの場合、埋め込みは単位長に正規化されており、dot_productcosineの測定は同等です。

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="azure_openai_embeddings",
  4. inference_config={
  5. "service": "azureopenai",
  6. "service_settings": {
  7. "api_key": "<api_key>",
  8. "resource_name": "<resource_name>",
  9. "deployment_id": "<deployment_id>",
  10. "api_version": "2024-02-01"
  11. }
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "azure_openai_embeddings",
  4. inference_config: {
  5. service: "azureopenai",
  6. service_settings: {
  7. api_key: "<api_key>",
  8. resource_name: "<resource_name>",
  9. deployment_id: "<deployment_id>",
  10. api_version: "2024-02-01",
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. PUT _inference/text_embedding/azure_openai_embeddings
  2. {
  3. "service": "azureopenai",
  4. "service_settings": {
  5. "api_key": "<api_key>",
  6. "resource_name": "<resource_name>",
  7. "deployment_id": "<deployment_id>",
  8. "api_version": "2024-02-01"
  9. }
  10. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子azure_openai_embeddingsです。
Azure OpenAIサービスにアクセスするためのAPIキー。
代わりに、ここでentra_idを提供することもできます。
Get inference APIはこの情報を返しません。
Azureリソースの名前。
デプロイされたモデルのID。

モデルが作成された後、デプロイメントが利用可能になるまでに数分かかることがあります。上記のようにモデルを作成し、404エラーメッセージが表示された場合は、数分待ってから再試行してください。また、このモデルを使用する場合、dense_vectorフィールドマッピングで使用する推奨の類似度測定はdot_productです。Azure OpenAIモデルの場合、埋め込みは単位長に正規化されており、dot_productcosineの測定は同等です。

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="azure_ai_studio_embeddings",
  4. inference_config={
  5. "service": "azureaistudio",
  6. "service_settings": {
  7. "api_key": "<api_key>",
  8. "target": "<target_uri>",
  9. "provider": "<provider>",
  10. "endpoint_type": "<endpoint_type>"
  11. }
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "azure_ai_studio_embeddings",
  4. inference_config: {
  5. service: "azureaistudio",
  6. service_settings: {
  7. api_key: "<api_key>",
  8. target: "<target_uri>",
  9. provider: "<provider>",
  10. endpoint_type: "<endpoint_type>",
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. PUT _inference/text_embedding/azure_ai_studio_embeddings
  2. {
  3. "service": "azureaistudio",
  4. "service_settings": {
  5. "api_key": "<api_key>",
  6. "target": "<target_uri>",
  7. "provider": "<provider>",
  8. "endpoint_type": "<endpoint_type>"
  9. }
  10. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子azure_ai_studio_embeddingsです。
Azure AI StudioでデプロイされたモデルにアクセスするためのAPIキー。モデルデプロイメントの概要ページでこれを見つけることができます。
Azure AI StudioでデプロイされたモデルにアクセスするためのターゲットURI。モデルデプロイメントの概要ページでこれを見つけることができます。
モデルプロバイダー、cohereまたはopenaiなど。
デプロイされたエンドポイントのタイプ。これは、token(「従量課金」デプロイメント用)またはリアルタイムデプロイメントエンドポイント用のrealtimeです。

モデルが作成された後、デプロイメントが利用可能になるまでに数分かかることがあります。上記のようにモデルを作成し、404エラーメッセージが表示された場合は、数分待ってから再試行してください。また、このモデルを使用する場合、dense_vectorフィールドマッピングで使用する推奨の類似度測定はdot_productです。

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="google_vertex_ai_embeddings",
  4. inference_config={
  5. "service": "googlevertexai",
  6. "service_settings": {
  7. "service_account_json": "<service_account_json>",
  8. "model_id": "text-embedding-004",
  9. "location": "<location>",
  10. "project_id": "<project_id>"
  11. }
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "google_vertex_ai_embeddings",
  4. inference_config: {
  5. service: "googlevertexai",
  6. service_settings: {
  7. service_account_json: "<service_account_json>",
  8. model_id: "text-embedding-004",
  9. location: "<location>",
  10. project_id: "<project_id>",
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. PUT _inference/text_embedding/google_vertex_ai_embeddings
  2. {
  3. "service": "googlevertexai",
  4. "service_settings": {
  5. "service_account_json": "<service_account_json>",
  6. "model_id": "text-embedding-004",
  7. "location": "<location>",
  8. "project_id": "<project_id>"
  9. }
  10. }
パスに従ってtext_embeddingのタスクタイプ。google_vertex_ai_embeddingsは推論エンドポイントの一意の識別子(そのinference_id)です。
Google Vertex AI API用の有効なサービスアカウント(JSON形式)。
利用可能なモデルのリストについては、Text embeddings APIページを参照してください。
推論タスクに使用する場所の名前。利用可能な場所については、Generative AI on Vertex AI locationsを参照してください。
推論タスクに使用するプロジェクトの名前。

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="mistral_embeddings",
  4. inference_config={
  5. "service": "mistral",
  6. "service_settings": {
  7. "api_key": "<api_key>",
  8. "model": "<model_id>"
  9. }
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "mistral_embeddings",
  4. inference_config: {
  5. service: "mistral",
  6. service_settings: {
  7. api_key: "<api_key>",
  8. model: "<model_id>",
  9. },
  10. },
  11. });
  12. console.log(response);

Console

  1. PUT _inference/text_embedding/mistral_embeddings
  2. {
  3. "service": "mistral",
  4. "service_settings": {
  5. "api_key": "<api_key>",
  6. "model": "<model_id>"
  7. }
  8. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子mistral_embeddingsです。
Mistral APIにアクセスするためのAPIキー。MistralアカウントのAPIキーのページでこれを見つけることができます。
Mistral埋め込みモデルの名前、例えばmistral-embed

Python

  1. resp = client.inference.put(
  2. task_type="text_embedding",
  3. inference_id="amazon_bedrock_embeddings",
  4. inference_config={
  5. "service": "amazonbedrock",
  6. "service_settings": {
  7. "access_key": "<aws_access_key>",
  8. "secret_key": "<aws_secret_key>",
  9. "region": "<region>",
  10. "provider": "<provider>",
  11. "model": "<model_id>"
  12. }
  13. },
  14. )
  15. print(resp)

Js

  1. const response = await client.inference.put({
  2. task_type: "text_embedding",
  3. inference_id: "amazon_bedrock_embeddings",
  4. inference_config: {
  5. service: "amazonbedrock",
  6. service_settings: {
  7. access_key: "<aws_access_key>",
  8. secret_key: "<aws_secret_key>",
  9. region: "<region>",
  10. provider: "<provider>",
  11. model: "<model_id>",
  12. },
  13. },
  14. });
  15. console.log(response);

Console

  1. PUT _inference/text_embedding/amazon_bedrock_embeddings
  2. {
  3. "service": "amazonbedrock",
  4. "service_settings": {
  5. "access_key": "<aws_access_key>",
  6. "secret_key": "<aws_secret_key>",
  7. "region": "<region>",
  8. "provider": "<provider>",
  9. "model": "<model_id>"
  10. }
  11. }
タイプはtext_embeddingで、inference_idは推論エンドポイントの一意の識別子amazon_bedrock_embeddingsです。
Amazon BedrockにアクセスするためのユーザーアカウントのAWS IAM管理ページでアクセスキーを見つけることができます。
シークレットキーは指定されたアクセスキーのペアキーである必要があります。
モデルがホストされているリージョンを指定します。
モデルプロバイダーを指定します。
使用するモデルのモデルIDまたはARN。

Create the index mapping

宛先インデックスのマッピング - モデルが入力テキストに基づいて作成する埋め込みを含むインデックス - を作成する必要があります。宛先インデックスには、ほとんどのモデルに対してdense_vectorフィールドタイプを持つフィールドが必要であり、sparse_vectorフィールドタイプを持つスパースベクトルモデルの場合、elserサービスのように使用されるモデルの出力をインデックス化します。

Python

  1. resp = client.indices.create(
  2. index="cohere-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1024,
  8. "element_type": "byte"
  9. },
  10. "content": {
  11. "type": "text"
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'cohere-embeddings',
  3. body: {
  4. mappings: {
  5. properties: {
  6. content_embedding: {
  7. type: 'dense_vector',
  8. dims: 1024,
  9. element_type: 'byte'
  10. },
  11. content: {
  12. type: 'text'
  13. }
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.indices.create({
  2. index: "cohere-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 1024,
  8. element_type: "byte",
  9. },
  10. content: {
  11. type: "text",
  12. },
  13. },
  14. },
  15. });
  16. console.log(response);

Console

  1. PUT cohere-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1024,
  8. "element_type": "byte"
  9. },
  10. "content": {
  11. "type": "text"
  12. }
  13. }
  14. }
  15. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
トークンを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。使用するモデルのCohereドキュメントでこの値を見つけてください。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="elser-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "sparse_vector"
  7. },
  8. "content": {
  9. "type": "text"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.indices.create({
  2. index: "elser-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "sparse_vector",
  7. },
  8. content: {
  9. type: "text",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. PUT elser-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "sparse_vector"
  7. },
  8. "content": {
  9. "type": "text"
  10. }
  11. }
  12. }
  13. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
ELSERの場合、トークンを含むフィールドはsparse_vectorフィールドです。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="hugging-face-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 768,
  8. "element_type": "float"
  9. },
  10. "content": {
  11. "type": "text"
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'hugging-face-embeddings',
  3. body: {
  4. mappings: {
  5. properties: {
  6. content_embedding: {
  7. type: 'dense_vector',
  8. dims: 768,
  9. element_type: 'float'
  10. },
  11. content: {
  12. type: 'text'
  13. }
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.indices.create({
  2. index: "hugging-face-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 768,
  8. element_type: "float",
  9. },
  10. content: {
  11. type: "text",
  12. },
  13. },
  14. },
  15. });
  16. console.log(response);

Console

  1. PUT hugging-face-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 768,
  8. "element_type": "float"
  9. },
  10. "content": {
  11. "type": "text"
  12. }
  13. }
  14. }
  15. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
トークンを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。この値は、使用するモデルのHuggingFaceモデルドキュメントで見つけることができます。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="openai-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1536,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'openai-embeddings',
  3. body: {
  4. mappings: {
  5. properties: {
  6. content_embedding: {
  7. type: 'dense_vector',
  8. dims: 1536,
  9. element_type: 'float',
  10. similarity: 'dot_product'
  11. },
  12. content: {
  13. type: 'text'
  14. }
  15. }
  16. }
  17. }
  18. )
  19. puts response

Js

  1. const response = await client.indices.create({
  2. index: "openai-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 1536,
  8. element_type: "float",
  9. similarity: "dot_product",
  10. },
  11. content: {
  12. type: "text",
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

チュートリアル: 推論APIを使用したセマンティック検索

このチュートリアルの指示は、さまざまなサービスを使用してデータに対してセマンティック検索を実行するための推論APIワークフローの使用方法を示しています。

Elastic Stackでセマンティック検索を実行する最も簡単な方法については、semantic_textエンドツーエンドチュートリアルを参照してください。

以下の例では、次のモデルを使用します:

CohereおよびOpenAIの任意のモデルを使用できます。これらはすべて推論APIによってサポートされています。HuggingFaceで利用可能な推奨モデルのリストについては、サポートされているモデルリストを参照してください。

以下のウィジェットのいずれかで使用したいサービスの名前をクリックして、対応する指示を確認してください。

Python

  1. resp = client.indices.create(
  2. index="azure-openai-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1536,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'azure-openai-embeddings',
  3. body: {
  4. mappings: {
  5. properties: {
  6. content_embedding: {
  7. type: 'dense_vector',
  8. dims: 1536,
  9. element_type: 'float',
  10. similarity: 'dot_product'
  11. },
  12. content: {
  13. type: 'text'
  14. }
  15. }
  16. }
  17. }
  18. )
  19. puts response

Js

  1. const response = await client.indices.create({
  2. index: "azure-openai-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 1536,
  8. element_type: "float",
  9. similarity: "dot_product",
  10. },
  11. content: {
  12. type: "text",
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

Console

  1. PUT azure-openai-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1536,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. }
  16. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
トークンを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。この値は、Azure OpenAIドキュメントで見つけることができます。
Azure OpenAI埋め込みの場合、dot_product関数を使用して類似度を計算する必要があります。
モデル仕様に関する詳細は、Azure OpenAI埋め込みドキュメントを参照してください。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="azure-ai-studio-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1536,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Js

  1. const response = await client.indices.create({
  2. index: "azure-ai-studio-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 1536,
  8. element_type: "float",
  9. similarity: "dot_product",
  10. },
  11. content: {
  12. type: "text",
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

Console

  1. PUT azure-ai-studio-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1536,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. }
  16. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
トークンを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。この値は、Azure AI Studioデプロイメントのモデルカードで見つけることができます。
Azure AI Studio埋め込みの場合、dot_product関数を使用して類似度を計算する必要があります。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="google-vertex-ai-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 768,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Js

  1. const response = await client.indices.create({
  2. index: "google-vertex-ai-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 768,
  8. element_type: "float",
  9. similarity: "dot_product",
  10. },
  11. content: {
  12. type: "text",
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

Console

  1. PUT google-vertex-ai-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 768,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. }
  16. }
生成された埋め込みを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
埋め込みを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。この値はGoogle Vertex AIモデルリファレンスで見つけることができます。
推論APIは、dimsが指定されていない場合、出力次元を自動的に計算しようとします。
Google Vertex AI埋め込みの場合、dot_product関数を使用して類似度を計算する必要があります。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではtextのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="mistral-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1024,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Js

  1. const response = await client.indices.create({
  2. index: "mistral-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 1024,
  8. element_type: "float",
  9. similarity: "dot_product",
  10. },
  11. content: {
  12. type: "text",
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

Console

  1. PUT mistral-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1024,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. }
  16. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
トークンを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。この値はMistralモデルリファレンスで見つけることができます。
Mistral埋め込みの場合、dot_product関数を使用して類似度を計算する必要があります。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Python

  1. resp = client.indices.create(
  2. index="amazon-bedrock-embeddings",
  3. mappings={
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1024,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Js

  1. const response = await client.indices.create({
  2. index: "amazon-bedrock-embeddings",
  3. mappings: {
  4. properties: {
  5. content_embedding: {
  6. type: "dense_vector",
  7. dims: 1024,
  8. element_type: "float",
  9. similarity: "dot_product",
  10. },
  11. content: {
  12. type: "text",
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

Console

  1. PUT amazon-bedrock-embeddings
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content_embedding": {
  6. "type": "dense_vector",
  7. "dims": 1024,
  8. "element_type": "float",
  9. "similarity": "dot_product"
  10. },
  11. "content": {
  12. "type": "text"
  13. }
  14. }
  15. }
  16. }
生成されたトークンを含むフィールドの名前。次のステップの推論パイプライン構成で参照する必要があります。
トークンを含むフィールドはdense_vectorフィールドです。
モデルの出力次元。この値は、使用するモデルによって異なる場合があります。
Amazon TitanモデルまたはCohere Embeddingsモデルのドキュメントを参照してください。
Amazon Bedrock埋め込みの場合、Amazon Titanモデル用にはdot_product関数を使用し、Cohereモデル用にはcosine関数を使用する必要があります。
密なベクトル表現を作成するためのフィールドの名前。
この例では、フィールドの名前はcontentです。次のステップの推論パイプライン構成で参照する必要があります。
この例ではテキストのフィールドタイプです。

Create an ingest pipeline with an inference processor

推論プロセッサを使用してインジェストパイプラインを作成し、上記で作成したモデルを使用してパイプラインに取り込まれるデータに対して推論を行います。

Python

  1. resp = client.ingest.put_pipeline(
  2. id="cohere_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "cohere_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "cohere_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "cohere_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/cohere_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "cohere_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
Create inference APIを使用して作成した推論エンドポイントの名前。ステップではinference_idと呼ばれます。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="elser_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "elser_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "elser_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "elser_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/elser_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "elser_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
Create inference APIを使用して作成した推論エンドポイントの名前。ステップではinference_idと呼ばれます。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="hugging_face_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "hugging_face_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "hugging_face_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "hugging_face_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/hugging_face_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "hugging_face_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
Create inference APIを使用して作成した推論エンドポイントの名前。ステップではinference_idと呼ばれます。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="openai_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "openai_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "openai_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "openai_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/openai_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "openai_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
Create inference APIを使用して作成した推論エンドポイントの名前。ステップではinference_idと呼ばれます。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="azure_openai_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "azure_openai_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "azure_openai_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "azure_openai_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/azure_openai_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "azure_openai_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
Create inference APIを使用して作成した推論エンドポイントの名前。ステップではinference_idと呼ばれます。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="azure_ai_studio_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "azure_ai_studio_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "azure_ai_studio_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "azure_ai_studio_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/azure_ai_studio_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "azure_ai_studio_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
Create inference APIを使用して作成した推論エンドポイントの名前。ステップではinference_idと呼ばれます。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="google_vertex_ai_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "google_vertex_ai_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "google_vertex_ai_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "google_vertex_ai_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/google_vertex_ai_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "google_vertex_ai_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
あなたが作成した推論エンドポイントの名前です。
それは、inference_idとしてそのステップで言及されています。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、
推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="mistral_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "mistral_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "mistral_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "mistral_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/mistral_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "mistral_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
あなたが作成した推論エンドポイントの名前です。
それは、inference_idとしてそのステップで言及されています。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、
推論結果を含むoutput_field

Python

  1. resp = client.ingest.put_pipeline(
  2. id="amazon_bedrock_embeddings_pipeline",
  3. processors=[
  4. {
  5. "inference": {
  6. "model_id": "amazon_bedrock_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.ingest.putPipeline({
  2. id: "amazon_bedrock_embeddings_pipeline",
  3. processors: [
  4. {
  5. inference: {
  6. model_id: "amazon_bedrock_embeddings",
  7. input_output: {
  8. input_field: "content",
  9. output_field: "content_embedding",
  10. },
  11. },
  12. },
  13. ],
  14. });
  15. console.log(response);

Console

  1. PUT _ingest/pipeline/amazon_bedrock_embeddings_pipeline
  2. {
  3. "processors": [
  4. {
  5. "inference": {
  6. "model_id": "amazon_bedrock_embeddings",
  7. "input_output": {
  8. "input_field": "content",
  9. "output_field": "content_embedding"
  10. }
  11. }
  12. }
  13. ]
  14. }
あなたが作成した推論エンドポイントの名前です。
それは、inference_idとしてそのステップで言及されています。
推論プロセスのためのinput_fieldを定義する構成オブジェクトと、
推論結果を含むoutput_field

Load data

このステップでは、後で推論取り込みパイプラインで使用するデータをロードして、そこから埋め込みを作成します。

msmarco-passagetest2019-top1000データセットを使用します。これは、MS MARCO Passage Rankingデータセットのサブセットです。200のクエリで構成されており、それぞれに関連するテキストパッセージのリストが付いています。すべてのユニークなパッセージとそのIDは、そのデータセットから抽出され、tsvファイルにまとめられています。

ファイルをダウンロードし、Machine Learning UIのData Visualizerを使用してクラスターにアップロードします。データが分析された後、Override settingsをクリックします。Edit field namesの下で、最初の列にidを、2番目の列にcontentを割り当てます。Applyをクリックし、次にImportをクリックします。インデックスにtest-dataという名前を付け、Importをクリックします。アップロードが完了すると、182,469のドキュメントを持つtest-dataという名前のインデックスが表示されます。

Ingest the data through the inference ingest pipeline

選択したモデルを使用して推論パイプラインを通じてデータを再インデックス化することで、テキストから埋め込みを作成します。このステップでは、reindex APIを使用して、パイプラインを通じたデータ取り込みをシミュレートします。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "cohere-embeddings",
  9. "pipeline": "cohere_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "cohere-embeddings",
  9. pipeline: "cohere_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "cohere-embeddings",
  9. "pipeline": "cohere_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

あなたのCohereアカウントのレート制限が再インデックス化プロセスのスループットに影響を与える可能性があります。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "elser-embeddings",
  9. "pipeline": "elser_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "elser-embeddings",
  9. pipeline: "elser_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "elser-embeddings",
  9. "pipeline": "elser_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "hugging-face-embeddings",
  9. "pipeline": "hugging_face_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "hugging-face-embeddings",
  9. pipeline: "hugging_face_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "hugging-face-embeddings",
  9. "pipeline": "hugging_face_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "openai-embeddings",
  9. "pipeline": "openai_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "openai-embeddings",
  9. pipeline: "openai_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "openai-embeddings",
  9. "pipeline": "openai_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

あなたのOpenAIアカウントのレート制限が再インデックス化プロセスのスループットに影響を与える可能性があります。この場合、size3または同等の値に変更してください。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "azure-openai-embeddings",
  9. "pipeline": "azure_openai_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "azure-openai-embeddings",
  9. pipeline: "azure_openai_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "azure-openai-embeddings",
  9. "pipeline": "azure_openai_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

あなたのAzure OpenAIアカウントのレート制限が再インデックス化プロセスのスループットに影響を与える可能性があります。この場合、size3または同等の値に変更してください。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "azure-ai-studio-embeddings",
  9. "pipeline": "azure_ai_studio_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "azure-ai-studio-embeddings",
  9. pipeline: "azure_ai_studio_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "azure-ai-studio-embeddings",
  9. "pipeline": "azure_ai_studio_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

あなたのAzure AI Studioモデルのデプロイには、再インデックス化プロセスのスループットに影響を与える可能性のあるレート制限があるかもしれません。この場合、size3または同等の値に変更してください。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "google-vertex-ai-embeddings",
  9. "pipeline": "google_vertex_ai_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "google-vertex-ai-embeddings",
  9. pipeline: "google_vertex_ai_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "google-vertex-ai-embeddings",
  9. "pipeline": "google_vertex_ai_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを減らすと、再インデックス化プロセスの更新が速くなります。これにより、進捗を密接に追跡し、早期にエラーを検出できます。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "mistral-embeddings",
  9. "pipeline": "mistral_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "mistral-embeddings",
  9. pipeline: "mistral_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "mistral-embeddings",
  9. "pipeline": "mistral_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

Python

  1. resp = client.reindex(
  2. wait_for_completion=False,
  3. source={
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. dest={
  8. "index": "amazon-bedrock-embeddings",
  9. "pipeline": "amazon_bedrock_embeddings_pipeline"
  10. },
  11. )
  12. print(resp)

Js

  1. const response = await client.reindex({
  2. wait_for_completion: "false",
  3. source: {
  4. index: "test-data",
  5. size: 50,
  6. },
  7. dest: {
  8. index: "amazon-bedrock-embeddings",
  9. pipeline: "amazon_bedrock_embeddings_pipeline",
  10. },
  11. });
  12. console.log(response);

Console

  1. POST _reindex?wait_for_completion=false
  2. {
  3. "source": {
  4. "index": "test-data",
  5. "size": 50
  6. },
  7. "dest": {
  8. "index": "amazon-bedrock-embeddings",
  9. "pipeline": "amazon_bedrock_embeddings_pipeline"
  10. }
  11. }
再インデックス化のデフォルトバッチサイズは1000です。sizeを小さい数に減らすと、再インデックス化プロセスの更新が迅速になり、進捗を密接に追跡し、早期にエラーを検出できます。

呼び出しは、進捗を監視するためのタスクIDを返します:

Python

  1. resp = client.tasks.get(
  2. task_id="<task_id>",
  3. )
  4. print(resp)

Js

  1. const response = await client.tasks.get({
  2. task_id: "<task_id>",
  3. });
  4. console.log(response);

Console

  1. GET _tasks/<task_id>

大規模なデータセットの再インデックス化には時間がかかる場合があります。このワークフローをデータセットのサブセットのみを使用してテストできます。これを行うには、再インデックス化プロセスをキャンセルし、再インデックス化されたサブセットの埋め込みのみを生成します。次のAPIリクエストは、再インデックス化タスクをキャンセルします:

Python

  1. resp = client.tasks.cancel(
  2. task_id="<task_id>",
  3. )
  4. print(resp)

Js

  1. const response = await client.tasks.cancel({
  2. task_id: "<task_id>",
  3. });
  4. console.log(response);

Console

  1. POST _tasks/<task_id>/_cancel

データセットが埋め込みで強化された後、セマンティック検索を使用してデータをクエリできます。密なベクトルモデルの場合、k近傍探索APIにquery_vector_builderを渡し、クエリテキストと埋め込みを作成するために使用したモデルを提供します。ELSERのようなスパースベクトルモデルの場合、sparse_vectorクエリを使用し、クエリテキストと埋め込みを作成するために使用したモデルを提供します。

再インデックス化プロセスをキャンセルした場合、データの一部のみをクエリすることになり、結果の質に影響を与えます。

Python

  1. resp = client.search(
  2. index="cohere-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "cohere_embeddings",
  8. "model_text": "Muscles in human body"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Ruby

  1. response = client.search(
  2. index: 'cohere-embeddings',
  3. body: {
  4. knn: {
  5. field: 'content_embedding',
  6. query_vector_builder: {
  7. text_embedding: {
  8. model_id: 'cohere_embeddings',
  9. model_text: 'Muscles in human body'
  10. }
  11. },
  12. k: 10,
  13. num_candidates: 100
  14. },
  15. _source: [
  16. 'id',
  17. 'content'
  18. ]
  19. }
  20. )
  21. puts response

Js

  1. const response = await client.search({
  2. index: "cohere-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "cohere_embeddings",
  8. model_text: "Muscles in human body",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET cohere-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "cohere_embeddings",
  8. "model_text": "Muscles in human body"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、cohere-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "cohere-embeddings",
  4. "_id": "-eFWCY4BECzWLnMZuI78",
  5. "_score": 0.737484,
  6. "_source": {
  7. "id": 1690948,
  8. "content": "Oxygen is supplied to the muscles via red blood cells. Red blood cells carry hemoglobin which oxygen bonds with as the hemoglobin rich blood cells pass through the blood vessels of the lungs.The now oxygen rich blood cells carry that oxygen to the cells that are demanding it, in this case skeletal muscle cells.ther ways in which muscles are supplied with oxygen include: 1 Blood flow from the heart is increased. 2 Blood flow to your muscles in increased. 3 Blood flow from nonessential organs is transported to working muscles."
  9. }
  10. },
  11. {
  12. "_index": "cohere-embeddings",
  13. "_id": "HuFWCY4BECzWLnMZuI_8",
  14. "_score": 0.7176013,
  15. "_source": {
  16. "id": 1692482,
  17. "content": "The thoracic cavity is separated from the abdominal cavity by the diaphragm. This is a broad flat muscle. (muscular) diaphragm The diaphragm is a muscle that separat…e the thoracic from the abdominal cavity. The pelvis is the lowest part of the abdominal cavity and it has no physical separation from it Diaphragm."
  18. }
  19. },
  20. {
  21. "_index": "cohere-embeddings",
  22. "_id": "IOFWCY4BECzWLnMZuI_8",
  23. "_score": 0.7154432,
  24. "_source": {
  25. "id": 1692489,
  26. "content": "Muscular Wall Separating the Abdominal and Thoracic Cavities; Thoracic Cavity of a Fetal Pig; In Mammals the Diaphragm Separates the Abdominal Cavity from the"
  27. }
  28. },
  29. {
  30. "_index": "cohere-embeddings",
  31. "_id": "C-FWCY4BECzWLnMZuI_8",
  32. "_score": 0.695313,
  33. "_source": {
  34. "id": 1691493,
  35. "content": "Burning, aching, tenderness and stiffness are just some descriptors of the discomfort you may feel in the muscles you exercised one to two days ago.For the most part, these sensations you experience after exercise are collectively known as delayed onset muscle soreness.urning, aching, tenderness and stiffness are just some descriptors of the discomfort you may feel in the muscles you exercised one to two days ago."
  36. }
  37. },
  38. (...)
  39. ]

Python

  1. resp = client.search(
  2. index="elser-embeddings",
  3. query={
  4. "sparse_vector": {
  5. "field": "content_embedding",
  6. "inference_id": "elser_embeddings",
  7. "query": "How to avoid muscle soreness after running?"
  8. }
  9. },
  10. source=[
  11. "id",
  12. "content"
  13. ],
  14. )
  15. print(resp)

Js

  1. const response = await client.search({
  2. index: "elser-embeddings",
  3. query: {
  4. sparse_vector: {
  5. field: "content_embedding",
  6. inference_id: "elser_embeddings",
  7. query: "How to avoid muscle soreness after running?",
  8. },
  9. },
  10. _source: ["id", "content"],
  11. });
  12. console.log(response);

Console

  1. GET elser-embeddings/_search
  2. {
  3. "query":{
  4. "sparse_vector":{
  5. "field": "content_embedding",
  6. "inference_id": "elser_embeddings",
  7. "query": "How to avoid muscle soreness after running?"
  8. }
  9. },
  10. "_source": [
  11. "id",
  12. "content"
  13. ]
  14. }

その結果、cohere-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "elser-embeddings",
  4. "_id": "ZLGc_pABZbBmsu5_eCoH",
  5. "_score": 21.472063,
  6. "_source": {
  7. "id": 2258240,
  8. "content": "You may notice some muscle aches while you are exercising. This is called acute soreness. More often, you may begin to feel sore about 12 hours after exercising, and the discomfort usually peaks at 48 to 72 hours after exercise. This is called delayed-onset muscle soreness.It is thought that, during this time, your body is repairing the muscle, making it stronger and bigger.You may also notice the muscles feel better if you exercise lightly. This is normal.his is called delayed-onset muscle soreness. It is thought that, during this time, your body is repairing the muscle, making it stronger and bigger. You may also notice the muscles feel better if you exercise lightly. This is normal."
  9. }
  10. },
  11. {
  12. "_index": "elser-embeddings",
  13. "_id": "ZbGc_pABZbBmsu5_eCoH",
  14. "_score": 21.421381,
  15. "_source": {
  16. "id": 2258242,
  17. "content": "Photo Credit Jupiterimages/Stockbyte/Getty Images. That stiff, achy feeling you get in the days after exercise is a normal physiological response known as delayed onset muscle soreness. You can take it as a positive sign that your muscles have felt the workout, but the pain may also turn you off to further exercise.ou are more likely to develop delayed onset muscle soreness if you are new to working out, if you’ve gone a long time without exercising and start up again, if you have picked up a new type of physical activity or if you have recently boosted the intensity, length or frequency of your exercise sessions."
  18. }
  19. },
  20. {
  21. "_index": "elser-embeddings",
  22. "_id": "ZrGc_pABZbBmsu5_eCoH",
  23. "_score": 20.542095,
  24. "_source": {
  25. "id": 2258248,
  26. "content": "They found that stretching before and after exercise has no effect on muscle soreness. Exercise might cause inflammation, which leads to an increase in the production of immune cells (comprised mostly of macrophages and neutrophils). Levels of these immune cells reach a peak 24-48 hours after exercise.These cells, in turn, produce bradykinins and prostaglandins, which make the pain receptors in your body more sensitive. Whenever you move, these pain receptors are stimulated.hey found that stretching before and after exercise has no effect on muscle soreness. Exercise might cause inflammation, which leads to an increase in the production of immune cells (comprised mostly of macrophages and neutrophils). Levels of these immune cells reach a peak 24-48 hours after exercise."
  27. }
  28. },
  29. (...)
  30. ]

Python

  1. resp = client.search(
  2. index="hugging-face-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "hugging_face_embeddings",
  8. "model_text": "What's margin of error?"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Ruby

  1. response = client.search(
  2. index: 'hugging-face-embeddings',
  3. body: {
  4. knn: {
  5. field: 'content_embedding',
  6. query_vector_builder: {
  7. text_embedding: {
  8. model_id: 'hugging_face_embeddings',
  9. model_text: "What's margin of error?"
  10. }
  11. },
  12. k: 10,
  13. num_candidates: 100
  14. },
  15. _source: [
  16. 'id',
  17. 'content'
  18. ]
  19. }
  20. )
  21. puts response

Js

  1. const response = await client.search({
  2. index: "hugging-face-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "hugging_face_embeddings",
  8. model_text: "What's margin of error?",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET hugging-face-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "hugging_face_embeddings",
  8. "model_text": "What's margin of error?"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、hugging-face-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "hugging-face-embeddings",
  4. "_id": "ljEfo44BiUQvMpPgT20E",
  5. "_score": 0.8522128,
  6. "_source": {
  7. "id": 7960255,
  8. "content": "The margin of error can be defined by either of the following equations. Margin of error = Critical value x Standard deviation of the statistic. Margin of error = Critical value x Standard error of the statistic. If you know the standard deviation of the statistic, use the first equation to compute the margin of error. Otherwise, use the second equation. Previously, we described how to compute the standard deviation and standard error."
  9. }
  10. },
  11. {
  12. "_index": "hugging-face-embeddings",
  13. "_id": "lzEfo44BiUQvMpPgT20E",
  14. "_score": 0.7865497,
  15. "_source": {
  16. "id": 7960259,
  17. "content": "1 y ou are told only the size of the sample and are asked to provide the margin of error for percentages which are not (yet) known. 2 This is typically the case when you are computing the margin of error for a survey which is going to be conducted in the future."
  18. }
  19. },
  20. {
  21. "_index": "hugging-face-embeddings1",
  22. "_id": "DjEfo44BiUQvMpPgT20E",
  23. "_score": 0.6229427,
  24. "_source": {
  25. "id": 2166183,
  26. "content": "1. In general, the point at which gains equal losses. 2. In options, the market price that a stock must reach for option buyers to avoid a loss if they exercise. For a call, it is the strike price plus the premium paid. For a put, it is the strike price minus the premium paid."
  27. }
  28. },
  29. {
  30. "_index": "hugging-face-embeddings1",
  31. "_id": "VzEfo44BiUQvMpPgT20E",
  32. "_score": 0.6034223,
  33. "_source": {
  34. "id": 2173417,
  35. "content": "How do you find the area of a circle? Can you measure the area of a circle and use that to find a value for Pi?"
  36. }
  37. },
  38. (...)
  39. ]

Python

  1. resp = client.search(
  2. index="openai-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "openai_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Ruby

  1. response = client.search(
  2. index: 'openai-embeddings',
  3. body: {
  4. knn: {
  5. field: 'content_embedding',
  6. query_vector_builder: {
  7. text_embedding: {
  8. model_id: 'openai_embeddings',
  9. model_text: 'Calculate fuel cost'
  10. }
  11. },
  12. k: 10,
  13. num_candidates: 100
  14. },
  15. _source: [
  16. 'id',
  17. 'content'
  18. ]
  19. }
  20. )
  21. puts response

Js

  1. const response = await client.search({
  2. index: "openai-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "openai_embeddings",
  8. model_text: "Calculate fuel cost",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET openai-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "openai_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、openai-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "openai-embeddings",
  4. "_id": "DDd5OowBHxQKHyc3TDSC",
  5. "_score": 0.83704096,
  6. "_source": {
  7. "id": 862114,
  8. "body": "How to calculate fuel cost for a road trip. By Tara Baukus Mello • Bankrate.com. Dear Driving for Dollars, My family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost.It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes.y family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost. It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes."
  9. }
  10. },
  11. {
  12. "_index": "openai-embeddings",
  13. "_id": "ajd5OowBHxQKHyc3TDSC",
  14. "_score": 0.8345704,
  15. "_source": {
  16. "id": 820622,
  17. "body": "Home Heating Calculator. Typically, approximately 50% of the energy consumed in a home annually is for space heating. When deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important.This calculator can help you estimate the cost of fuel for different heating appliances.hen deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important. This calculator can help you estimate the cost of fuel for different heating appliances."
  18. }
  19. },
  20. {
  21. "_index": "openai-embeddings",
  22. "_id": "Djd5OowBHxQKHyc3TDSC",
  23. "_score": 0.8327426,
  24. "_source": {
  25. "id": 8202683,
  26. "body": "Fuel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel.If you are paying $4 per gallon, the trip would cost you $200.Most boats have much larger gas tanks than cars.uel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel."
  27. }
  28. },
  29. (...)
  30. ]

Python

  1. resp = client.search(
  2. index="azure-openai-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "azure_openai_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Ruby

  1. response = client.search(
  2. index: 'azure-openai-embeddings',
  3. body: {
  4. knn: {
  5. field: 'content_embedding',
  6. query_vector_builder: {
  7. text_embedding: {
  8. model_id: 'azure_openai_embeddings',
  9. model_text: 'Calculate fuel cost'
  10. }
  11. },
  12. k: 10,
  13. num_candidates: 100
  14. },
  15. _source: [
  16. 'id',
  17. 'content'
  18. ]
  19. }
  20. )
  21. puts response

Js

  1. const response = await client.search({
  2. index: "azure-openai-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "azure_openai_embeddings",
  8. model_text: "Calculate fuel cost",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET azure-openai-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "azure_openai_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、azure-openai-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "azure-openai-embeddings",
  4. "_id": "DDd5OowBHxQKHyc3TDSC",
  5. "_score": 0.83704096,
  6. "_source": {
  7. "id": 862114,
  8. "body": "How to calculate fuel cost for a road trip. By Tara Baukus Mello • Bankrate.com. Dear Driving for Dollars, My family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost.It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes.y family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost. It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes."
  9. }
  10. },
  11. {
  12. "_index": "azure-openai-embeddings",
  13. "_id": "ajd5OowBHxQKHyc3TDSC",
  14. "_score": 0.8345704,
  15. "_source": {
  16. "id": 820622,
  17. "body": "Home Heating Calculator. Typically, approximately 50% of the energy consumed in a home annually is for space heating. When deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important.This calculator can help you estimate the cost of fuel for different heating appliances.hen deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important. This calculator can help you estimate the cost of fuel for different heating appliances."
  18. }
  19. },
  20. {
  21. "_index": "azure-openai-embeddings",
  22. "_id": "Djd5OowBHxQKHyc3TDSC",
  23. "_score": 0.8327426,
  24. "_source": {
  25. "id": 8202683,
  26. "body": "Fuel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel.If you are paying $4 per gallon, the trip would cost you $200.Most boats have much larger gas tanks than cars.uel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel."
  27. }
  28. },
  29. (...)
  30. ]

Python

  1. resp = client.search(
  2. index="azure-ai-studio-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "azure_ai_studio_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Js

  1. const response = await client.search({
  2. index: "azure-ai-studio-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "azure_ai_studio_embeddings",
  8. model_text: "Calculate fuel cost",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET azure-ai-studio-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "azure_ai_studio_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、azure-ai-studio-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Console-Result

  1. "hits": [
  2. {
  3. "_index": "azure-ai-studio-embeddings",
  4. "_id": "DDd5OowBHxQKHyc3TDSC",
  5. "_score": 0.83704096,
  6. "_source": {
  7. "id": 862114,
  8. "body": "How to calculate fuel cost for a road trip. By Tara Baukus Mello • Bankrate.com. Dear Driving for Dollars, My family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost.It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes.y family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost. It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes."
  9. }
  10. },
  11. {
  12. "_index": "azure-ai-studio-embeddings",
  13. "_id": "ajd5OowBHxQKHyc3TDSC",
  14. "_score": 0.8345704,
  15. "_source": {
  16. "id": 820622,
  17. "body": "Home Heating Calculator. Typically, approximately 50% of the energy consumed in a home annually is for space heating. When deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important.This calculator can help you estimate the cost of fuel for different heating appliances.hen deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important. This calculator can help you estimate the cost of fuel for different heating appliances."
  18. }
  19. },
  20. {
  21. "_index": "azure-ai-studio-embeddings",
  22. "_id": "Djd5OowBHxQKHyc3TDSC",
  23. "_score": 0.8327426,
  24. "_source": {
  25. "id": 8202683,
  26. "body": "Fuel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel.If you are paying $4 per gallon, the trip would cost you $200.Most boats have much larger gas tanks than cars.uel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel."
  27. }
  28. },
  29. (...)
  30. ]

Python

  1. resp = client.search(
  2. index="google-vertex-ai-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "google_vertex_ai_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Js

  1. const response = await client.search({
  2. index: "google-vertex-ai-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "google_vertex_ai_embeddings",
  8. model_text: "Calculate fuel cost",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET google-vertex-ai-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "google_vertex_ai_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、mistral-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Console-Result

  1. "hits": [
  2. {
  3. "_index": "google-vertex-ai-embeddings",
  4. "_id": "Ryv0nZEBBFPLbFsdCbGn",
  5. "_score": 0.86815524,
  6. "_source": {
  7. "id": 3041038,
  8. "content": "For example, the cost of the fuel could be 96.9, the amount could be 10 pounds, and the distance covered could be 80 miles. To convert between Litres per 100KM and Miles Per Gallon, please provide a value and click on the required button.o calculate how much fuel you'll need for a given journey, please provide the distance in miles you will be covering on your journey, and the estimated MPG of your vehicle. To work out what MPG you are really getting, please provide the cost of the fuel, how much you spent on the fuel, and how far it took you."
  9. }
  10. },
  11. {
  12. "_index": "google-vertex-ai-embeddings",
  13. "_id": "w4j0nZEBZ1nFq1oiHQvK",
  14. "_score": 0.8676357,
  15. "_source": {
  16. "id": 1541469,
  17. "content": "This driving cost calculator takes into consideration the fuel economy of the vehicle that you are travelling in as well as the fuel cost. This road trip gas calculator will give you an idea of how much would it cost to drive before you actually travel.his driving cost calculator takes into consideration the fuel economy of the vehicle that you are travelling in as well as the fuel cost. This road trip gas calculator will give you an idea of how much would it cost to drive before you actually travel."
  18. }
  19. },
  20. {
  21. "_index": "google-vertex-ai-embeddings",
  22. "_id": "Hoj0nZEBZ1nFq1oiHQjJ",
  23. "_score": 0.80510974,
  24. "_source": {
  25. "id": 7982559,
  26. "content": "What's that light cost you? 1 Select your electric rate (or click to enter your own). 2 You can calculate results for up to four types of lights. 3 Select the type of lamp (i.e. 4 Select the lamp wattage (lamp lumens). 5 Enter the number of lights in use. 6 Select how long the lamps are in use (or click to enter your own; enter hours on per year). 7 Finally, ..."
  27. }
  28. },
  29. (...)
  30. ]

Python

  1. resp = client.search(
  2. index="mistral-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "mistral_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Js

  1. const response = await client.search({
  2. index: "mistral-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "mistral_embeddings",
  8. model_text: "Calculate fuel cost",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET mistral-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "mistral_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、mistral-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "mistral-embeddings",
  4. "_id": "DDd5OowBHxQKHyc3TDSC",
  5. "_score": 0.83704096,
  6. "_source": {
  7. "id": 862114,
  8. "body": "How to calculate fuel cost for a road trip. By Tara Baukus Mello • Bankrate.com. Dear Driving for Dollars, My family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost.It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes.y family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost. It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes."
  9. }
  10. },
  11. {
  12. "_index": "mistral-embeddings",
  13. "_id": "ajd5OowBHxQKHyc3TDSC",
  14. "_score": 0.8345704,
  15. "_source": {
  16. "id": 820622,
  17. "body": "Home Heating Calculator. Typically, approximately 50% of the energy consumed in a home annually is for space heating. When deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important.This calculator can help you estimate the cost of fuel for different heating appliances.hen deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important. This calculator can help you estimate the cost of fuel for different heating appliances."
  18. }
  19. },
  20. {
  21. "_index": "mistral-embeddings",
  22. "_id": "Djd5OowBHxQKHyc3TDSC",
  23. "_score": 0.8327426,
  24. "_source": {
  25. "id": 8202683,
  26. "body": "Fuel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel.If you are paying $4 per gallon, the trip would cost you $200.Most boats have much larger gas tanks than cars.uel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel."
  27. }
  28. },
  29. (...)
  30. ]

Python

  1. resp = client.search(
  2. index="amazon-bedrock-embeddings",
  3. knn={
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "amazon_bedrock_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. source=[
  15. "id",
  16. "content"
  17. ],
  18. )
  19. print(resp)

Js

  1. const response = await client.search({
  2. index: "amazon-bedrock-embeddings",
  3. knn: {
  4. field: "content_embedding",
  5. query_vector_builder: {
  6. text_embedding: {
  7. model_id: "amazon_bedrock_embeddings",
  8. model_text: "Calculate fuel cost",
  9. },
  10. },
  11. k: 10,
  12. num_candidates: 100,
  13. },
  14. _source: ["id", "content"],
  15. });
  16. console.log(response);

Console

  1. GET amazon-bedrock-embeddings/_search
  2. {
  3. "knn": {
  4. "field": "content_embedding",
  5. "query_vector_builder": {
  6. "text_embedding": {
  7. "model_id": "amazon_bedrock_embeddings",
  8. "model_text": "Calculate fuel cost"
  9. }
  10. },
  11. "k": 10,
  12. "num_candidates": 100
  13. },
  14. "_source": [
  15. "id",
  16. "content"
  17. ]
  18. }

その結果、amazon-bedrock-embeddingsインデックスからクエリに最も近い意味を持つ上位10件のドキュメントが、クエリへの近接度でソートされて返されます:

Consol-Result

  1. "hits": [
  2. {
  3. "_index": "amazon-bedrock-embeddings",
  4. "_id": "DDd5OowBHxQKHyc3TDSC",
  5. "_score": 0.83704096,
  6. "_source": {
  7. "id": 862114,
  8. "body": "How to calculate fuel cost for a road trip. By Tara Baukus Mello • Bankrate.com. Dear Driving for Dollars, My family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost.It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes.y family is considering taking a long road trip to finish off the end of the summer, but I'm a little worried about gas prices and our overall fuel cost. It doesn't seem easy to calculate since we'll be traveling through many states and we are considering several routes."
  9. }
  10. },
  11. {
  12. "_index": "amazon-bedrock-embeddings",
  13. "_id": "ajd5OowBHxQKHyc3TDSC",
  14. "_score": 0.8345704,
  15. "_source": {
  16. "id": 820622,
  17. "body": "Home Heating Calculator. Typically, approximately 50% of the energy consumed in a home annually is for space heating. When deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important.This calculator can help you estimate the cost of fuel for different heating appliances.hen deciding on a heating system, many factors will come into play: cost of fuel, installation cost, convenience and life style are all important. This calculator can help you estimate the cost of fuel for different heating appliances."
  18. }
  19. },
  20. {
  21. "_index": "amazon-bedrock-embeddings",
  22. "_id": "Djd5OowBHxQKHyc3TDSC",
  23. "_score": 0.8327426,
  24. "_source": {
  25. "id": 8202683,
  26. "body": "Fuel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel.If you are paying $4 per gallon, the trip would cost you $200.Most boats have much larger gas tanks than cars.uel is another important cost. This cost will depend on your boat, how far you travel, and how fast you travel. A 33-foot sailboat traveling at 7 knots should be able to travel 300 miles on 50 gallons of diesel fuel."
  27. }
  28. },
  29. (...)
  30. ]

Interactive tutorials

Elasticsearch Pythonクライアントを使用して、インタラクティブなColabノートブック形式のチュートリアルも見つけることができます: