本ラボでは、テキストクエリを内部的にベクトルに変換してベクトル検索を行うニューラル検索を実装していきます。
ベクトルの生成は、Amazon SageMaker 上にデプロイした密ベクトル埋め込みモデルを利用します。
本ラボは、ベクトル検索の実装 (Amazon SageMaker 編) を完了していることを前提として作られています。
ベクトル検索の基本的な要素の解説や、ML モデルのデプロイなど、本ラボを実施するにあたって必要な作業も含まれているため、事前に上記のラボを完了させてください。
ニューラル検索は、OpenSearch に入力されたテキストや画像のクエリデータを、OpenSearch 側でベクトルに変換し、登録と検索を実行する機能です。
一般的なベクトル検索は、クライアント側で用意したベクトルを使用したデータ登録や検索を行う必要があります。従来のテキスト検索に加えてベクトル検索を実装しようとする場合、バックエンド側に埋め込みモデルを呼び出す処理を実装する必要があります。
ニューラル検索では、OpenSearch がバックエンドの責務も担います。OpenSearch はユーザークエリをもとに埋め込みモデルを呼び出し、ベクトルの生成を行います。生成したベクトルは、そのまま格納、ないしはベクトル検索に使用します。
ニューラル検索を活用することで、クライアント側の改修を最小限に抑えつつベクトル検索を導入可能となります。
ニューラル検索は以下のコンポーネントで構成されています
コネクターは、外部サービスとの連携の大部分を担っています。サービスのエンドポイントや、OpenSearch から渡されたデータを外部サービス向けのリクエストペイロードに書き換えるための定義、外部サービスから受け取った応答を OpenSearch 向けのフォーマットに書き換えるための定義といった情報を保持しています。
本ラボでは、ノートブック環境(JupyterLab) および Amazon OpenSearch Service、Amazon SageMaker を使用します。
本ラボでは、ベクトル検索の実装 (Amazon SageMaker 編) と同様に、JGLUE 内の FAQ データセットである JSQuAD を使用します。
!pip install opensearch-py requests-aws4auth "awswrangler[opensearch]" --quiet
from IPython.core.magic import register_cell_magic
from IPython import get_ipython
import ipywidgets as widgets
import boto3
import json
import time
from datetime import datetime, timedelta
import logging
from functools import lru_cache
import awswrangler as wr
import pandas as pd
import numpy as np
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth
import sagemaker
from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uri
/opt/conda/lib/python3.12/site-packages/pydantic/_internal/_fields.py:192: UserWarning: Field name "json" in "MonitoringDatasetFormat" shadows an attribute in parent "Base" warnings.warn(
sagemaker.config INFO - Not applying SDK defaults from location: /etc/xdg/sagemaker/config.yaml sagemaker.config INFO - Not applying SDK defaults from location: /home/sagemaker-user/.config/sagemaker/config.yaml
以降の処理を実行する際に必要なヘルパー関数を定義しておきます。
def search_cloudformation_output(stackname, key):
cloudformation_client = boto3.client("cloudformation", region_name=default_region)
for output in cloudformation_client.describe_stacks(StackName=stackname)["Stacks"][0]["Outputs"]:
if output["OutputKey"] == key:
return output["OutputValue"]
raise ValueError(f"{key} is not found in outputs of {stackname}.")
def search_sagemaker_inference_endpoint(endpoint_name, region):
sagemaker_client = boto3.client("sagemaker", region_name=region)
try:
response = sagemaker_client.search(
Resource="Endpoint",
SearchExpression={
"Filters": [
{
"Name": "EndpointName",
"Operator": "Contains",
"Value": endpoint_name
},
],
},
SortBy="LastModifiedTime",
SortOrder="Descending"
)
return response["Results"]
except Exception as e:
print(e)
default_region = boto3.Session().region_name
logging.getLogger().setLevel(logging.ERROR)
ベクトル検索の実装 (Amazon SageMaker 編) で作成したエンドポイントの情報を取得します。
try:
sagemaker_region = default_region
embedding_model_id_on_hf = "BAAI/bge-m3"
embedding_model_name = embedding_model_id_on_hf.lower().replace("/", "-")
embedding_endpoint_name_prefix = embedding_model_name
embedding_endpoints = search_sagemaker_inference_endpoint(embedding_endpoint_name_prefix, sagemaker_region)
if len(embedding_endpoints) == 0:
raise ValueError(f"Endpoint of model for {embedding_model_id_on_hf} is not found. Please deploy the model.")
else:
print(f"Endpoint of model for {embedding_model_id_on_hf} is found.")
except Exception as e:
print(e)
Endpoint of model for BAAI/bge-m3 is found.
エンドポイントが複数存在する場合は、ドロップダウンメニューからどのエンドポイントを参照するかを選択可能です。
embedding_endpoint_dropdown_options = []
for embedding_endpoint in embedding_endpoints:
embedding_endpoint_name = embedding_endpoint["Endpoint"]["EndpointName"]
embedding_endpoint_dropdown_options.append(embedding_endpoint_name)
embedding_endpoint_name_dropdown = widgets.Dropdown(
options=embedding_endpoint_dropdown_options,
description='endpoint'
)
embedding_endpoint_name_dropdown
Dropdown(description='endpoint', options=('baai-bge-m3-instance-2025-04-14-05-40-48-158',), value='baai-bge-m3…
embedding_endpoint_name = embedding_endpoint_name_dropdown.value
embedding_endpoint_url = f"https://runtime.sagemaker.{default_region}.amazonaws.com/endpoints/{embedding_endpoint_name}/invocations"
print(f"\nendpoint name: {embedding_endpoint_name}")
print(f"endpoint url: {embedding_endpoint_url}")
endpoint name: baai-bge-m3-instance-2025-04-14-05-40-48-158 endpoint url: https://runtime.sagemaker.us-west-2.amazonaws.com/endpoints/baai-bge-m3-instance-2025-04-14-05-40-48-158/invocations
選択したエンドポイントに対して推論を実行し、ベクトルが取得できることを確認します
%%time
payload = {
"inputs": [
"hello world"
]
}
body = bytes(json.dumps(payload), 'utf-8')
sagemaker_runtime_client = boto3.client("sagemaker-runtime", region_name=sagemaker_region)
response = sagemaker_runtime_client.invoke_endpoint(
EndpointName=embedding_endpoint_name,
ContentType="application/json",
Accept="application/json",
Body=body
)
embeddings = eval(response['Body'].read().decode('utf-8'))
print("embedding:")
print(np.array(embeddings[0]))
print("dimension:")
print(np.shape(embeddings[0]))
embedding: [-0.04022236 0.03693659 -0.02904319 ... 0.02645612 -0.03298989 0.01630611] dimension: (1024,) CPU times: user 16.2 ms, sys: 3.58 ms, total: 19.8 ms Wall time: 70.8 ms
サンプルデータをダウンロードし、Pandas の DataFrame 形式に変換します
%%time
dataset_dir = "./dataset/jsquad/"
%mkdir -p $dataset_dir
!curl -L -s -o $dataset_dir/valid.json https://github.com/yahoojapan/JGLUE/raw/main/datasets/jsquad-v1.3/valid-v1.3.json
#!curl -L -s -o $dataset_dir/train.json https://github.com/yahoojapan/JGLUE/raw/main/datasets/jsquad-v1.3/train-v1.3.json
CPU times: user 12.7 ms, sys: 16.1 ms, total: 28.8 ms Wall time: 1.24 s
%%time
import pandas as pd
import json
def squad_json_to_dataframe(input_file_path, record_path=["data", "paragraphs", "qas", "answers"]):
file = json.loads(open(input_file_path).read())
m = pd.json_normalize(file, record_path[:-1])
r = pd.json_normalize(file, record_path[:-2])
idx = np.repeat(r["context"].values, r.qas.str.len())
m["context"] = idx
m["answers"] = m["answers"]
m["answers"] = m["answers"].apply(lambda x: np.unique(pd.json_normalize(x)["text"].to_list()))
return m[["id", "question", "context", "answers"]]
valid_filename = f"{dataset_dir}/valid.json"
valid_df = squad_json_to_dataframe(valid_filename)
#train_filename = f"{dataset_dir}/train.json"
#train_df = squad_json_to_dataframe(train_filename)
CPU times: user 1.56 s, sys: 49.1 ms, total: 1.61 s Wall time: 1.59 s
サンプルデータは質問文フィールドの question、回答の answers、説明文の context フィールド、問題 ID である id フィールドから構成されています。
サンプルデータの一部を見ていきましょう。
valid_df
id | question | context | answers | |
---|---|---|---|---|
0 | a10336p0q0 | 日本で梅雨がないのは北海道とどこか。 | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [小笠原諸島, 小笠原諸島を除く日本] |
1 | a10336p0q1 | 梅雨とは何季の一種か? | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [雨季] |
2 | a10336p0q2 | 梅雨は、世界的にどのあたりで見られる気象ですか? | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [東アジア, 東アジアの広範囲] |
3 | a10336p0q3 | 梅雨がみられるのはどの期間? | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [5月から7月, 5月から7月にかけて] |
4 | a10336p1q0 | 入梅は何の目安の時期か? | 梅雨 [SEP] 梅雨の時期が始まることを梅雨入りや入梅(にゅうばい)といい、社会通念上・気... | [春の終わりであるとともに夏の始まり(初夏), 田植えの時期, 田植えの時期の目安] |
... | ... | ... | ... | ... |
4437 | a95156p5q3 | 国際銀行間通信協会ならびに国際決済機関の何と何も企業体である | 多国籍企業 [SEP] 国際銀行間通信協会ならびに国際決済機関のクリアストリームとユーロクリ... | [クリアストリームとユーロクリア] |
4438 | a95156p6q0 | ゼネコンはどの国特有の形態か | 多国籍企業 [SEP] ゼネコンは日本特有の形態。セメントメジャーにラファージュホルシムやイ... | [日本] |
4439 | a95156p6q1 | 多国籍企業においてゼネコンはどこの国特有の形態であるか? | 多国籍企業 [SEP] ゼネコンは日本特有の形態。セメントメジャーにラファージュホルシムやイ... | [日本] |
4440 | a95156p6q2 | 多国籍企業を一つ挙げよ | 多国籍企業 [SEP] ゼネコンは日本特有の形態。セメントメジャーにラファージュホルシムやイ... | [イタルチェメンティ, ラファージュホルシム] |
4441 | a95156p6q3 | ゼネコンはどの国の特有の形態か? | 多国籍企業 [SEP] ゼネコンは日本特有の形態。セメントメジャーにラファージュホルシムやイ... | [日本] |
4442 rows × 4 columns
ドメイン(クラスター)に接続するためのエンドポイント情報を CloudFormation スタックの出力から取得し、OpenSearch クライアントを作成します。
cloudformation_stack_name = "search-lab-jp"
opensearch_cluster_endpoint = search_cloudformation_output(cloudformation_stack_name, "OpenSearchDomainEndpoint")
credentials = boto3.Session().get_credentials()
service_code = "es"
auth = AWSV4SignerAuth(credentials=credentials, region=default_region, service=service_code)
opensearch_client = OpenSearch(
hosts=[{"host": opensearch_cluster_endpoint, "port": 443}],
http_compress=True,
http_auth=auth,
use_ssl=True,
verify_certs=True,
connection_class = RequestsHttpConnection
)
opensearch_client
<OpenSearch([{'host': 'vpc-opensearchservi-cyiiwlmtgk2r-jkahtzltl6zkpgjx5czbxq5vvy.us-west-2.es.amazonaws.com', 'port': 443}])>
OpenSearch クラスターへのネットワーク接続性が確保されており、OpenSearch の Security 機能により API リクエストが許可されているかを確認します。 レスポンスに cluster_name や cluster_uuid が含まれていれば、接続確認が無事完了したと判断できます
opensearch_client.info()
{'name': 'cf756e86f83b28e0bd2ffe2ff501ccf4', 'cluster_name': '123456789012:opensearchservi-cyiiwlmtgk2r', 'cluster_uuid': 'UoIf1GJCTauJlwbKQrxTUA', 'version': {'distribution': 'opensearch', 'number': '2.17.0', 'build_type': 'tar', 'build_hash': 'unknown', 'build_date': '2025-02-14T09:38:50.023788640Z', 'build_snapshot': False, 'lucene_version': '9.11.1', 'minimum_wire_compatibility_version': '7.10.0', 'minimum_index_compatibility_version': '7.0.0'}, 'tagline': 'The OpenSearch Project: https://opensearch.org/'}
id、question、context、answers フィールドを格納するための文字列型フィールドに加えて、question、context フィールドから生成したベクトルデータを格納するための context_dense_embedding、question_sparse_embedding フィールドを持つインデックスを作成します。
文字列型フィールドについては、テキスト検索でもある程度の検索精度を出せるように、id フィールドを除いて sudachi のカスタムアナライザーをセットしています。
payload = {
"mappings": {
"properties": {
"id": {"type": "keyword"},
"question": {"type": "text", "analyzer": "custom_sudachi_analyzer"},
"context": {"type": "text", "analyzer": "custom_sudachi_analyzer"},
"answers": {"type": "text", "analyzer": "custom_sudachi_analyzer"},
"question_embedding": {
"type": "knn_vector",
"dimension": 1024,
"space_type": "l2",
"method": {
"name": "hnsw",
"engine": "faiss",
}
},
"context_embedding": {
"type": "knn_vector",
"dimension": 1024,
"space_type": "l2",
"method": {
"name": "hnsw",
"engine": "faiss",
},
}
}
},
"settings": {
"index.knn": True,
"index.number_of_shards": 1,
"index.number_of_replicas": 0,
"analysis": {
"analyzer": {
"custom_sudachi_analyzer": {
"char_filter": ["icu_normalizer"],
"filter": [
"sudachi_normalizedform",
"custom_sudachi_part_of_speech"
],
"tokenizer": "sudachi_tokenizer",
"type": "custom"
}
},
"filter": {
"custom_sudachi_part_of_speech": {
"type": "sudachi_part_of_speech",
"stoptags": ["感動詞,フィラー","接頭辞","代名詞","副詞","助詞","助動詞","動詞,一般,*,*,*,終止形-一般","名詞,普通名詞,副詞可能"]
}
}
}
}
}
# インデックス名を指定
index_name = "jsquad-neural-search"
try:
# 既に同名のインデックスが存在する場合、いったん削除を行う
print("# delete index")
response = opensearch_client.indices.delete(index=index_name)
print(json.dumps(response, indent=2))
except Exception as e:
print(e)
# インデックスを作成
response = opensearch_client.indices.create(index_name, body=payload)
response
# delete index NotFoundError(404, 'index_not_found_exception', 'no such index [jsquad-neural-search]', jsquad-neural-search, index_or_alias)
{'acknowledged': True, 'shards_acknowledged': True, 'index': 'jsquad-neural-search'}
SageMaker 上にデプロイしたモデルを呼び出すためのコンポーネントを作成します。
モデルは、コネクタと呼ばれる外部接続を定義したコンポーネントで構成されています。 今回の構成では、モデルは Text Embedding Processor と呼ばれる、入力テキストをベクトルに変換するためのプロセッサーから呼び出されます。
本セルの実行でエラーが発生する場合は、再度 SageMaker 上でのモデルデプロイをお試しください。
print(f"model name: {embedding_model_name}")
print(f"endpoint name: {embedding_endpoint_name}")
print(f"endpoint url: {embedding_endpoint_url}")
model name: baai-bge-m3 endpoint name: baai-bge-m3-instance-2025-04-14-05-40-48-158 endpoint url: https://runtime.sagemaker.us-west-2.amazonaws.com/endpoints/baai-bge-m3-instance-2025-04-14-05-40-48-158/invocations
OpenSearch コネクタから AWS サービスに接続する際、任意の IAM ロールの権限を引き受ける必要があります。引受対象の IAM ロールを CloudFormation スタックの出力から取得します。
cloudformation_stack_name = "search-lab-jp"
opensearch_connector_role_arn = search_cloudformation_output(cloudformation_stack_name, 'OpenSearchConnectorRoleArn')
opensearch_connector_role_arn
'arn:aws:iam::123456789012:role/workshop/search-lab-jp/search-lab-jp-OpenSearchConnectorRole-YuvZq1QfVLWw'
Amazon SageMaker 上のモデルを呼び出す定義を記載したコネクタを作成します。 コネクタは、OpenSearch におけるモデルの一要素です。
コネクタの処理の流れは以下の通りです。
payload = {
"name": embedding_model_name,
"description": "Remote connector for " + embedding_model_name,
"version": 1,
"protocol": "aws_sigv4",
"credential": {
"roleArn": opensearch_connector_role_arn
},
"parameters": {
"region": sagemaker_region,
"service_name": "sagemaker"
},
"actions": [
{
"action_type": "predict",
"method": "POST",
"headers": {"content-type": "application/json"},
"url": embedding_endpoint_url,
"pre_process_function": """
StringBuilder builder = new StringBuilder();
builder.append("\\"");
builder.append(params.text_docs[0]);
builder.append("\\"");
def parameters = "{" +"\\"inputs\\":" + builder + "}";
return "{" +"\\"parameters\\":" + parameters + "}";
""",
"request_body": "{\"inputs\": \"${parameters.inputs}\"}",
"post_process_function": "connector.post_process.default.embedding"
}
]
}
# API の実行
response = opensearch_client.http.post("/_plugins/_ml/connectors/_create", body=payload)
# 結果からコネクタ ID を取得
opensearch_embedding_connector_id = response["connector_id"]
print("embedding connector id: " + opensearch_embedding_connector_id)
embedding connector id: XBXhMpYBDSxiOaui0yx5
コネクタを元に、OpenSearch にモデル情報を登録します。
payload = {
"name": embedding_model_name,
"description": embedding_model_name,
"function_name": "remote",
"connector_id": opensearch_embedding_connector_id
}
response = opensearch_client.http.post("/_plugins/_ml/models/_register?deploy=true", body=payload)
opensearch_embedding_model_id = response['model_id']
for i in range(300):
ml_model_status = opensearch_client.http.get("/_plugins/_ml/models/"+ opensearch_embedding_model_id)
model_state = ml_model_status.get("model_state")
if model_state in ["DEPLOYED", "PARTIALLY_DEPLOYED"]:
break
time.sleep(1)
if model_state == "DEPLOYED":
print("embedding model " + opensearch_embedding_model_id + " is deployed successfully")
elif model_state == "PARTIALLY_DEPLOYED":
print("embedding model " + opensearch_embedding_model_id + " is deployed only partially")
else:
raise Exception("embedding model " + opensearch_embedding_model_id + " deployment failed")
print(ml_model_status)
embedding model XxXhMpYBDSxiOaui0yy5 is deployed successfully {'name': 'baai-bge-m3', 'model_group_id': 'XRXhMpYBDSxiOaui0yyb', 'algorithm': 'REMOTE', 'model_version': '1', 'description': 'baai-bge-m3', 'model_state': 'DEPLOYED', 'created_time': 1744610382777, 'last_updated_time': 1744610382886, 'last_deployed_time': 1744610382886, 'auto_redeploy_retry_times': 0, 'planning_worker_node_count': 1, 'current_worker_node_count': 1, 'planning_worker_nodes': ['egO7SuqlQrO2lfG5nvousQ'], 'deploy_to_all_nodes': True, 'is_hidden': False, 'connector_id': 'XBXhMpYBDSxiOaui0yx5'}
OpenSearch 経由で Amazon SageMaker 上の埋め込みモデルを実行できることを確認します。モデルの呼び出し方は 2 パターンあります。
Text embedding processor からの呼び出しを想定する場合は、以下パスの API を使用します。 Text embedding processor が text_embedding モデルを呼び出す際のパラメーターキーは text_docs で固定されています。同パラメーターには、クライアントからの入力テキストがセットされています。
path = "/_plugins/_ml/_predict/text_embedding/" + opensearch_embedding_model_id
payload = {
"text_docs": ["日本で梅雨がないのはどこ?"]
}
response = opensearch_client.http.post(path, body=payload)
response
{'inference_results': [{'output': [{'name': 'sentence_embedding', 'data_type': 'FLOAT32', 'shape': [1024], 'data': [-0.038697254, 0.03304789, -0.015738808, -0.04927402, 0.0051981383, -0.021550614, -0.005870467, 0.027037539, -0.028571712, -0.020106688, -0.0024163222, -0.023788702, 0.004117449, 0.0018996669, 0.0103421295, -0.0035173167, 0.018554466, 0.0049183774, 0.0056629023, 0.004692764, 0.013572916, -0.0129772965, -0.034690354, -0.059670296, 0.040754847, -0.004801058, -0.04790229, 0.029040989, -0.017652012, 0.005026672, 0.0028923668, 0.0146468375, -0.042379268, -0.015558317, -0.0066059674, 0.0051485035, -0.00407007, -0.046169575, -0.031026388, -0.0139970705, 0.07891063, -0.014150488, 0.023915047, 0.0038151266, -0.010757258, -0.04454516, -0.03497914, -0.009313331, -0.015170261, 0.00012803574, -0.009511871, -0.0086725885, 0.027344374, -0.01947497, 0.006957925, 0.029636608, 0.034527913, 0.01646077, -0.021334026, -0.039022136, -0.034311324, 0.011280682, 0.01983595, 0.043570507, 0.039599705, 0.025377022, -0.0003787489, -0.024691157, -0.03611623, -0.038191877, -0.014926598, -0.025485318, 0.030232228, -0.038588956, -0.011497271, -0.023066739, 0.016235158, -0.0089884475, -0.07789988, -0.030881995, 0.11731909, -0.010080418, 0.0093043065, -0.00027017234, -0.002250496, 0.031116635, 0.0056944885, 0.007594155, -0.026478017, 0.010188712, -0.031062486, 0.024131635, -0.023409672, -0.03158591, -0.057648797, 0.01570271, 0.004500992, -0.03894994, 0.05263115, -0.020918896, -0.027290227, -0.03274105, 0.033426918, -0.043967586, 0.025016041, -0.0178686, -0.0033368259, 0.021929646, 0.0020722614, 0.015080016, 0.038588956, 0.03420303, -0.0012837417, 0.0048371567, -0.056277066, -0.018419098, -0.00933138, -0.043570507, -0.018518368, -0.001372859, 0.007129391, 0.017543716, 0.029365871, -0.036675755, 0.010206761, -0.024546765, -0.004218975, 0.007738548, -0.023878949, 0.04071875, 0.021135487, -0.006267547, -0.0055997306, -0.004559652, 0.021695009, -0.009196012, 0.034527913, 0.021929646, 0.015215384, -0.01967351, -0.011334829, -0.0083567295, -0.03631477, 0.014818304, 0.049635, -0.009593092, 0.01439415, 0.023915047, -0.00605547, -0.019294478, -0.016532969, 0.016208084, 0.017498594, 0.009701387, -0.05999518, 0.04847986, -0.053064328, -0.009990172, -0.047577403, -0.001007365, 0.029907344, 0.0026848023, -0.08085993, 0.05544681, 0.018771056, 0.015179286, -0.017715184, -0.018789105, 0.009493822, 0.019926198, 0.011641664, -0.03514158, 0.017083466, -0.009710412, 0.03629672, 0.0100262705, 0.017624937, 0.022579413, -0.022164285, -0.0377948, -0.01601857, -0.026604362, 0.0072060996, 0.0011664225, 0.010360179, 0.064290866, 0.016334428, 0.012056793, -0.0070978054, 0.0397802, -0.019511068, -0.014998795, 0.023319427, -0.008216849, 0.02263356, 0.029131234, 0.027380472, -0.011452149, -0.009047107, 0.02046767, -0.043462213, 0.04230707, -0.032325923, 0.029672706, 0.0031834084, -0.049021333, -0.039419215, -0.028643908, 0.024943845, -0.05129552, 0.03097224, 0.015675636, 0.015729783, -0.011569467, 0.011352879, 0.009001984, 0.0035331096, -0.00714744, -0.01560344, -0.009056131, -0.015495145, 0.024005292, -0.023409672, -0.024312126, 0.04274025, 0.0011201717, 0.041837793, 0.03142347, -0.05208968, -0.038877744, -0.04133242, 0.0457364, -0.00814014, -0.0033142644, 0.006132179, -0.034166932, -0.015070992, -0.009584067, 0.0100262705, 0.033156183, -0.008816981, 0.033499114, -0.0068315812, 0.0037316496, 0.0040452527, -0.0012848697, 0.006714262, 0.0021625068, -0.0010970463, -0.032903492, -0.03254251, -0.002549434, -0.015061967, 0.08959569, 0.013554867, 0.0053650923, -0.014385126, -0.019980345, 0.05346141, 0.020900847, -0.00046391806, -0.015612464, 0.016244182, 0.052161876, 0.009493822, 0.024997992, 0.008280021, -0.007639278, 0.012724609, 0.013239008, -0.086563446, 0.017137613, -0.009782608, 0.026478017, 0.017119564, -0.059922982, 0.04385929, 0.0029329774, 0.016244182, 0.004266354, -0.032091286, -0.0033345697, 0.038408466, 0.026333624, -0.012778757, -0.041837793, 0.029925393, 0.019348627, 0.008898202, -0.0070978054, -0.04274025, -0.041260224, 0.052378464, 0.03631477, 0.0076934253, -0.011073118, -0.04826327, -0.1211455, -0.020702308, 0.005026672, -0.06815337, 0.020233031, -0.035646956, 0.013807555, -0.0317664, -0.002018114, -0.08613026, -0.013789506, -0.026153134, -0.061475206, -0.025377022, 0.0070571946, 0.012038744, 0.015215384, -0.07826086, 0.0308098, -0.054580454, 0.015964422, 0.021207683, -0.025485318, -0.049598902, -0.022615511, -0.013220959, 0.0068902406, 0.06407428, -0.0074678115, -0.04032167, 0.103313, -0.0038376881, -0.019168135, 0.032145433, 0.07093293, -0.009096742, -0.00710683, -0.0045912378, -0.0042708665, 0.044761747, -0.009710412, 0.006366817, -0.022597462, -0.0073053697, -0.009060644, 0.008374779, -0.009647239, -0.03097224, -0.005423752, 0.047324717, 0.021622812, 0.029762952, 0.0002631219, 0.005044721, 0.023175033, 0.041043635, 0.03992459, 0.046386164, -0.043750998, -0.02423993, 0.0126614375, 0.0040204353, 0.020954994, 0.00952992, 0.07024706, 0.009403577, 0.004214463, 0.019709608, -0.016487844, 0.013491696, 0.015043918, 0.06003128, -0.06078934, -0.041440714, -0.010730185, 0.014917574, -0.010730185, -0.03797529, -0.0044581257, -0.11046044, 0.035881594, -0.03913043, -0.02362626, -0.07696132, -0.009155402, -0.0053019207, -0.00740464, 0.0040971437, 0.018554466, 0.2285737, 0.008040871, -0.003111212, -0.05180089, -0.006087056, 0.012544119, 0.017525667, -0.01778738, 0.00062889804, -0.022814052, -0.017318103, -0.0031563349, 0.019384725, 0.020684259, 0.011289706, 0.044148076, 0.046313968, 0.033481065, 0.049598902, -0.02564776, -0.0094487, -0.015585391, 0.013139739, -0.03420303, -0.03358936, -0.018392025, -0.019294478, 0.049526706, -0.007558057, -0.0113077555, -0.0031382858, -0.03949141, 0.013239008, 0.0025697395, -0.034022536, -0.031062486, -0.010170663, -0.036639657, 0.036368918, 0.0047017885, -0.040213376, 0.005243261, 0.050898436, 0.049346216, 0.008469536, -0.018130312, -0.016316378, -0.029817099, -0.030105885, 0.011280682, -0.006633041, 0.019998394, -0.018419098, 0.04053826, -0.04505053, -0.066889934, -0.0019617106, -0.07226856, -0.0036526849, -0.012183137, 0.011921425, 0.004331782, 0.023806753, -0.074578844, -0.001686462, 0.030250277, -0.009083205, 0.02285015, 0.057107326, -0.0040272037, -0.011298731, -0.039744098, -0.039563607, 0.017516643, 0.02801219, 0.020233031, -0.02245307, 0.07208807, 0.017038342, 0.017931772, 0.015179286, -0.030918093, -0.013636089, -0.0002746846, -0.007255735, -0.0032668856, 0.028734153, 0.02602679, -0.001124684, -0.04891304, 0.05804588, 0.060681045, -0.04216268, 0.02384285, -0.00022363952, -0.07302663, 0.024294076, 0.011280682, -0.00734598, 0.008085993, 0.013248033, -0.015522218, 0.009227598, -0.019601313, 0.010486522, 0.015134163, 0.04692764, 0.017282005, 0.014385126, -0.024961894, -0.020395473, -0.025665808, -0.042234875, 0.015792955, -0.0042279996, -0.028661957, 0.027687306, -0.0146468375, 0.020575965, 0.010856529, -0.04306513, -0.044833943, -0.0021726594, -0.07573399, -0.034076683, 0.04689154, -0.0070346333, 0.019583264, -0.0013299924, 0.042595856, 0.033914242, -0.010784333, 0.022001842, 0.02624338, 0.0089884475, -0.0050898436, -0.01798592, 0.046350066, 0.016343452, -0.018355926, -0.000463072, 0.008379291, 0.010567743, 0.01737225, -0.00089907035, -0.011470198, 0.0069669494, -0.020648161, -0.010107491, -0.07840525, 0.01282388, 0.00859588, -0.0016492357, -0.038047485, 0.015386851, -0.04454516, 0.025503367, -0.005739611, 0.015431973, -0.012517045, -0.0011432972, -0.0037903092, 0.011569467, 0.118907414, -0.0019414054, 0.061005928, -0.005983274, 0.03497914, 0.055735596, -0.023012592, 0.041188028, 0.00065089535, -0.029907344, -0.012047769, 0.016144913, -0.022976493, -0.041621204, -0.04292074, -0.028698055, 0.047793996, 0.019962296, 0.016009545, 0.054111175, 0.03615233, -0.088440545, 0.062485956, -0.013942923, -0.018328853, 0.013888776, -0.0015962166, -0.04097144, 0.063821584, -0.017652012, 0.01054067, 0.023554064, -0.007553545, 0.031712253, 0.04746911, -0.0034496326, -0.031495664, 0.0060599823, -0.03654941, -0.020594014, -0.015874175, -0.0006136691, -0.009593092, -0.045158826, -0.008871129, 0.013049494, -0.017724209, -0.0070797564, 0.015937347, 0.016036619, -0.022759905, 0.020774504, 0.004706301, -0.00853722, -0.03515963, 0.00974651, -0.039599705, 0.0021309208, 0.0075445203, 0.07522862, -0.0015680148, -0.00774306, 0.01737225, -0.0030164544, -0.0011354006, 0.001702255, 0.048696447, 0.0096743135, -0.002991637, 0.041440714, -0.044617355, -0.022290628, -0.0071203667, -0.012724609, -0.024745304, 0.014358052, -0.003059321, -0.008997472, -0.014385126, 0.010089442, 0.008880153, 0.008018309, 0.004275379, -0.010387252, 0.060067378, 0.04071875, 0.040213376, -0.05403898, 0.045339316, 0.008230385, 0.0045822132, -0.042776346, 0.07984918, -0.030160032, -0.005342531, -0.019005693, -0.017426398, -0.01586515, 0.045952987, -0.008767346, 0.015134163, 0.021731107, -0.07031926, 0.0016684129, -0.03304789, 0.013888776, -0.034311324, 0.01570271, -0.008280021, -0.01947497, -0.0008313863, -0.030521013, -0.023517966, -0.06638456, 0.041404616, -0.053750195, 0.03898604, 0.016226133, 0.018238608, 0.0040407404, 0.008830518, -0.024709206, 0.015774906, -0.0091915, -0.011388977, -0.014583666, -0.02918538, 0.012878027, 0.014367077, 0.007576106, -0.012273382, 0.0075806184, 0.07331541, -0.050681848, 0.0025742517, -0.038913842, 0.017516643, -0.03360741, 0.038625054, -0.08288143, -0.013852677, -0.05941761, 0.01808519, -0.0017620425, -0.03611623, -0.036278673, -0.03710893, 0.012255333, 0.00357372, 0.010251884, 0.018112263, 0.019547166, 0.0074903728, 0.041585106, 0.019998394, -0.060283966, 0.02819268, -0.0036075623, 0.032109335, 0.04407588, -0.027506815, -0.018049091, -0.018789105, 0.009972123, 0.00025550745, -0.039599705, -0.014619764, -0.014863427, 0.026279477, -0.011488247, -0.02326528, -0.0116777625, 0.0003934138, 0.006795483, 0.006768409, -0.017498594, -0.02604484, 0.026279477, -0.011037019, -0.006096081, -0.046638854, 0.03833627, 0.0013604503, 0.011758983, -0.0039820806, -0.036386967, 0.046819344, 0.04053826, 0.052414563, -0.03160396, -0.004431052, -0.01439415, 0.02664046, -0.015377826, -0.030863946, -0.021388173, -0.004293428, -0.032849345, 0.057901487, 0.0007580618, 0.03138737, 0.032813247, 0.014231709, -0.014042193, -0.015774906, 0.015765881, 0.010089442, -0.00933138, 0.03898604, 0.0113619035, 0.00300743, 0.00367299, 0.022741856, 0.0064931605, -0.028373173, -0.022290628, 0.02821073, -0.015540267, -0.012128989, 0.0020451876, -0.031279076, 0.045194924, 0.048588153, 0.0034857308, 0.007982211, 0.0043250136, -0.008293558, -0.02700144, 0.009665289, -0.053894587, 0.03613428, -0.12237284, 0.0016774375, 0.00317664, 0.014682936, -0.0143309785, 0.0058118077, -0.044220272, 0.024095537, 0.031892743, 0.021027192, -0.012462898, 0.041007537, -0.014926598, -0.03830017, -0.01230948, 0.044256374, 0.014069267, 0.001785732, -0.0069037774, -0.021731107, -0.024312126, -0.013338279, -0.020124737, -0.006244986, 0.051331617, 0.001537557, -0.004033972, 0.033282526, 0.0022764418, -0.030773701, 0.01820251, -0.027109735, 0.02701949, -0.007224149, 0.0014811535, 0.048407663, 0.007355005, -0.00021094875, 0.028048288, -0.015630513, -0.012562168, 0.0027863286, -0.0048687425, -0.029221479, -0.0007230917, 0.014204635, 0.0047694724, -0.027759504, -0.026604362, 0.027867798, -0.02858976, -0.012697536, -0.019402774, 0.050356966, 0.015982471, 0.019222282, 0.004679227, 0.017128589, 0.04829937, 0.021045242, 0.037072834, -0.034347422, 0.0058253445, -0.022723807, -0.071979776, 0.03295764, -0.04891304, 0.0071158544, -0.00823941, -0.019456921, -0.017543716, -0.04829937, 0.01967351, 0.024276027, 0.014682936, 0.024961894, 0.030051738, -0.01429488, -0.030484915, -0.025286777, 0.057107326, 0.040899243, -0.018031042, 0.043029033, -0.009376503, 0.027181933, 0.01770616, -0.039563607, -0.012959247, -0.0016717971, -0.066709444, -0.017002244, -0.023355525, 0.06335231, -0.020720357, -0.015215384, -0.028698055, -0.016442722, -0.011650689, 0.008857592, -0.07262954, 0.011443124, -0.012887051, -0.03811968, -0.01925838, 0.048949137, 0.009683338, -0.015377826, 0.034654256, 0.0070707314, -0.0051620402, 0.033083986, -0.029943442, -0.007553545, 0.011804106, 0.007670864, 0.04811888, 0.012354603, 0.0007208356, 0.048985235, -0.048840843, -0.004365624, -0.059309315, -0.011722885, 0.030105885, -0.002811146, -0.03476255, 0.025701907, 0.0075670816, -0.009227598, 0.010107491, -0.052558955, 0.00218394, -0.014899525, 0.015847102, -0.060175672, -0.07530081, 0.016316378, 0.048985235, -0.056493655, 0.018319828, 0.005143991, -0.01866276, -0.03633282, 0.008965886, -0.0062946207, 0.009313331, -0.028752202, -0.04490614, -0.013825604, 0.046566658, 0.011966548, 0.007946112, 0.0057621724, -0.003720369, -0.023391623, -0.048407663, -0.0034631693, 0.0028540127, 0.0027524864, -0.049165726, -0.05887614, 0.03317423, 0.00251108, -0.02026913, -0.00076765043, -0.0005660082, -0.0053335065, -0.031242978, 0.042992935, -0.0755174, 0.013166812, -0.031459566, 0.042668052, 0.011163363, -0.006547308, 0.014854402, -0.008568807, 0.06216107, -0.027452668, 0.035322074, 0.007833306, 0.011551418, -0.027579011, 0.030701505, -0.0123275295, 0.043390017, 0.020341326, -0.021153536, 0.07681693, 0.022236481, 0.002531385, -0.032488365, 0.0023869923, 0.012498996, 0.025846299, 0.005143991, 0.026839, -0.007855867, -0.011461173, -0.0037136006, -0.00770245, -0.008171726, 0.007837818, -0.007887453, -0.021821352, -0.006393891, 0.008374779, -0.015377826, 0.026694607, -0.05208968, -0.02604484, -0.022832101, 0.079416, 0.015928322, 0.037469912, 0.030232228, -0.0037948214, -0.050320867, -0.012047769, ...]}], 'status_code': 200}]}
ML モデル配下の predict API を直接呼び出してテストを行うことも可能です。この場合 pre_process_function は呼び出されず、parameters に記載した値が直接コネクタで指定した推論エンドポイントに渡されます。
path = "/_plugins/_ml/models/" + opensearch_embedding_model_id + "/_predict"
payload = {
"parameters": {
"inputs": "日本で梅雨がないのはどこ?"
}
}
response = opensearch_client.http.post(path, body=payload)
response
{'inference_results': [{'output': [{'name': 'sentence_embedding', 'data_type': 'FLOAT32', 'shape': [1024], 'data': [-0.038697254, 0.03304789, -0.015738808, -0.04927402, 0.0051981383, -0.021550614, -0.005870467, 0.027037539, -0.028571712, -0.020106688, -0.0024163222, -0.023788702, 0.004117449, 0.0018996669, 0.0103421295, -0.0035173167, 0.018554466, 0.0049183774, 0.0056629023, 0.004692764, 0.013572916, -0.0129772965, -0.034690354, -0.059670296, 0.040754847, -0.004801058, -0.04790229, 0.029040989, -0.017652012, 0.005026672, 0.0028923668, 0.0146468375, -0.042379268, -0.015558317, -0.0066059674, 0.0051485035, -0.00407007, -0.046169575, -0.031026388, -0.0139970705, 0.07891063, -0.014150488, 0.023915047, 0.0038151266, -0.010757258, -0.04454516, -0.03497914, -0.009313331, -0.015170261, 0.00012803574, -0.009511871, -0.0086725885, 0.027344374, -0.01947497, 0.006957925, 0.029636608, 0.034527913, 0.01646077, -0.021334026, -0.039022136, -0.034311324, 0.011280682, 0.01983595, 0.043570507, 0.039599705, 0.025377022, -0.0003787489, -0.024691157, -0.03611623, -0.038191877, -0.014926598, -0.025485318, 0.030232228, -0.038588956, -0.011497271, -0.023066739, 0.016235158, -0.0089884475, -0.07789988, -0.030881995, 0.11731909, -0.010080418, 0.0093043065, -0.00027017234, -0.002250496, 0.031116635, 0.0056944885, 0.007594155, -0.026478017, 0.010188712, -0.031062486, 0.024131635, -0.023409672, -0.03158591, -0.057648797, 0.01570271, 0.004500992, -0.03894994, 0.05263115, -0.020918896, -0.027290227, -0.03274105, 0.033426918, -0.043967586, 0.025016041, -0.0178686, -0.0033368259, 0.021929646, 0.0020722614, 0.015080016, 0.038588956, 0.03420303, -0.0012837417, 0.0048371567, -0.056277066, -0.018419098, -0.00933138, -0.043570507, -0.018518368, -0.001372859, 0.007129391, 0.017543716, 0.029365871, -0.036675755, 0.010206761, -0.024546765, -0.004218975, 0.007738548, -0.023878949, 0.04071875, 0.021135487, -0.006267547, -0.0055997306, -0.004559652, 0.021695009, -0.009196012, 0.034527913, 0.021929646, 0.015215384, -0.01967351, -0.011334829, -0.0083567295, -0.03631477, 0.014818304, 0.049635, -0.009593092, 0.01439415, 0.023915047, -0.00605547, -0.019294478, -0.016532969, 0.016208084, 0.017498594, 0.009701387, -0.05999518, 0.04847986, -0.053064328, -0.009990172, -0.047577403, -0.001007365, 0.029907344, 0.0026848023, -0.08085993, 0.05544681, 0.018771056, 0.015179286, -0.017715184, -0.018789105, 0.009493822, 0.019926198, 0.011641664, -0.03514158, 0.017083466, -0.009710412, 0.03629672, 0.0100262705, 0.017624937, 0.022579413, -0.022164285, -0.0377948, -0.01601857, -0.026604362, 0.0072060996, 0.0011664225, 0.010360179, 0.064290866, 0.016334428, 0.012056793, -0.0070978054, 0.0397802, -0.019511068, -0.014998795, 0.023319427, -0.008216849, 0.02263356, 0.029131234, 0.027380472, -0.011452149, -0.009047107, 0.02046767, -0.043462213, 0.04230707, -0.032325923, 0.029672706, 0.0031834084, -0.049021333, -0.039419215, -0.028643908, 0.024943845, -0.05129552, 0.03097224, 0.015675636, 0.015729783, -0.011569467, 0.011352879, 0.009001984, 0.0035331096, -0.00714744, -0.01560344, -0.009056131, -0.015495145, 0.024005292, -0.023409672, -0.024312126, 0.04274025, 0.0011201717, 0.041837793, 0.03142347, -0.05208968, -0.038877744, -0.04133242, 0.0457364, -0.00814014, -0.0033142644, 0.006132179, -0.034166932, -0.015070992, -0.009584067, 0.0100262705, 0.033156183, -0.008816981, 0.033499114, -0.0068315812, 0.0037316496, 0.0040452527, -0.0012848697, 0.006714262, 0.0021625068, -0.0010970463, -0.032903492, -0.03254251, -0.002549434, -0.015061967, 0.08959569, 0.013554867, 0.0053650923, -0.014385126, -0.019980345, 0.05346141, 0.020900847, -0.00046391806, -0.015612464, 0.016244182, 0.052161876, 0.009493822, 0.024997992, 0.008280021, -0.007639278, 0.012724609, 0.013239008, -0.086563446, 0.017137613, -0.009782608, 0.026478017, 0.017119564, -0.059922982, 0.04385929, 0.0029329774, 0.016244182, 0.004266354, -0.032091286, -0.0033345697, 0.038408466, 0.026333624, -0.012778757, -0.041837793, 0.029925393, 0.019348627, 0.008898202, -0.0070978054, -0.04274025, -0.041260224, 0.052378464, 0.03631477, 0.0076934253, -0.011073118, -0.04826327, -0.1211455, -0.020702308, 0.005026672, -0.06815337, 0.020233031, -0.035646956, 0.013807555, -0.0317664, -0.002018114, -0.08613026, -0.013789506, -0.026153134, -0.061475206, -0.025377022, 0.0070571946, 0.012038744, 0.015215384, -0.07826086, 0.0308098, -0.054580454, 0.015964422, 0.021207683, -0.025485318, -0.049598902, -0.022615511, -0.013220959, 0.0068902406, 0.06407428, -0.0074678115, -0.04032167, 0.103313, -0.0038376881, -0.019168135, 0.032145433, 0.07093293, -0.009096742, -0.00710683, -0.0045912378, -0.0042708665, 0.044761747, -0.009710412, 0.006366817, -0.022597462, -0.0073053697, -0.009060644, 0.008374779, -0.009647239, -0.03097224, -0.005423752, 0.047324717, 0.021622812, 0.029762952, 0.0002631219, 0.005044721, 0.023175033, 0.041043635, 0.03992459, 0.046386164, -0.043750998, -0.02423993, 0.0126614375, 0.0040204353, 0.020954994, 0.00952992, 0.07024706, 0.009403577, 0.004214463, 0.019709608, -0.016487844, 0.013491696, 0.015043918, 0.06003128, -0.06078934, -0.041440714, -0.010730185, 0.014917574, -0.010730185, -0.03797529, -0.0044581257, -0.11046044, 0.035881594, -0.03913043, -0.02362626, -0.07696132, -0.009155402, -0.0053019207, -0.00740464, 0.0040971437, 0.018554466, 0.2285737, 0.008040871, -0.003111212, -0.05180089, -0.006087056, 0.012544119, 0.017525667, -0.01778738, 0.00062889804, -0.022814052, -0.017318103, -0.0031563349, 0.019384725, 0.020684259, 0.011289706, 0.044148076, 0.046313968, 0.033481065, 0.049598902, -0.02564776, -0.0094487, -0.015585391, 0.013139739, -0.03420303, -0.03358936, -0.018392025, -0.019294478, 0.049526706, -0.007558057, -0.0113077555, -0.0031382858, -0.03949141, 0.013239008, 0.0025697395, -0.034022536, -0.031062486, -0.010170663, -0.036639657, 0.036368918, 0.0047017885, -0.040213376, 0.005243261, 0.050898436, 0.049346216, 0.008469536, -0.018130312, -0.016316378, -0.029817099, -0.030105885, 0.011280682, -0.006633041, 0.019998394, -0.018419098, 0.04053826, -0.04505053, -0.066889934, -0.0019617106, -0.07226856, -0.0036526849, -0.012183137, 0.011921425, 0.004331782, 0.023806753, -0.074578844, -0.001686462, 0.030250277, -0.009083205, 0.02285015, 0.057107326, -0.0040272037, -0.011298731, -0.039744098, -0.039563607, 0.017516643, 0.02801219, 0.020233031, -0.02245307, 0.07208807, 0.017038342, 0.017931772, 0.015179286, -0.030918093, -0.013636089, -0.0002746846, -0.007255735, -0.0032668856, 0.028734153, 0.02602679, -0.001124684, -0.04891304, 0.05804588, 0.060681045, -0.04216268, 0.02384285, -0.00022363952, -0.07302663, 0.024294076, 0.011280682, -0.00734598, 0.008085993, 0.013248033, -0.015522218, 0.009227598, -0.019601313, 0.010486522, 0.015134163, 0.04692764, 0.017282005, 0.014385126, -0.024961894, -0.020395473, -0.025665808, -0.042234875, 0.015792955, -0.0042279996, -0.028661957, 0.027687306, -0.0146468375, 0.020575965, 0.010856529, -0.04306513, -0.044833943, -0.0021726594, -0.07573399, -0.034076683, 0.04689154, -0.0070346333, 0.019583264, -0.0013299924, 0.042595856, 0.033914242, -0.010784333, 0.022001842, 0.02624338, 0.0089884475, -0.0050898436, -0.01798592, 0.046350066, 0.016343452, -0.018355926, -0.000463072, 0.008379291, 0.010567743, 0.01737225, -0.00089907035, -0.011470198, 0.0069669494, -0.020648161, -0.010107491, -0.07840525, 0.01282388, 0.00859588, -0.0016492357, -0.038047485, 0.015386851, -0.04454516, 0.025503367, -0.005739611, 0.015431973, -0.012517045, -0.0011432972, -0.0037903092, 0.011569467, 0.118907414, -0.0019414054, 0.061005928, -0.005983274, 0.03497914, 0.055735596, -0.023012592, 0.041188028, 0.00065089535, -0.029907344, -0.012047769, 0.016144913, -0.022976493, -0.041621204, -0.04292074, -0.028698055, 0.047793996, 0.019962296, 0.016009545, 0.054111175, 0.03615233, -0.088440545, 0.062485956, -0.013942923, -0.018328853, 0.013888776, -0.0015962166, -0.04097144, 0.063821584, -0.017652012, 0.01054067, 0.023554064, -0.007553545, 0.031712253, 0.04746911, -0.0034496326, -0.031495664, 0.0060599823, -0.03654941, -0.020594014, -0.015874175, -0.0006136691, -0.009593092, -0.045158826, -0.008871129, 0.013049494, -0.017724209, -0.0070797564, 0.015937347, 0.016036619, -0.022759905, 0.020774504, 0.004706301, -0.00853722, -0.03515963, 0.00974651, -0.039599705, 0.0021309208, 0.0075445203, 0.07522862, -0.0015680148, -0.00774306, 0.01737225, -0.0030164544, -0.0011354006, 0.001702255, 0.048696447, 0.0096743135, -0.002991637, 0.041440714, -0.044617355, -0.022290628, -0.0071203667, -0.012724609, -0.024745304, 0.014358052, -0.003059321, -0.008997472, -0.014385126, 0.010089442, 0.008880153, 0.008018309, 0.004275379, -0.010387252, 0.060067378, 0.04071875, 0.040213376, -0.05403898, 0.045339316, 0.008230385, 0.0045822132, -0.042776346, 0.07984918, -0.030160032, -0.005342531, -0.019005693, -0.017426398, -0.01586515, 0.045952987, -0.008767346, 0.015134163, 0.021731107, -0.07031926, 0.0016684129, -0.03304789, 0.013888776, -0.034311324, 0.01570271, -0.008280021, -0.01947497, -0.0008313863, -0.030521013, -0.023517966, -0.06638456, 0.041404616, -0.053750195, 0.03898604, 0.016226133, 0.018238608, 0.0040407404, 0.008830518, -0.024709206, 0.015774906, -0.0091915, -0.011388977, -0.014583666, -0.02918538, 0.012878027, 0.014367077, 0.007576106, -0.012273382, 0.0075806184, 0.07331541, -0.050681848, 0.0025742517, -0.038913842, 0.017516643, -0.03360741, 0.038625054, -0.08288143, -0.013852677, -0.05941761, 0.01808519, -0.0017620425, -0.03611623, -0.036278673, -0.03710893, 0.012255333, 0.00357372, 0.010251884, 0.018112263, 0.019547166, 0.0074903728, 0.041585106, 0.019998394, -0.060283966, 0.02819268, -0.0036075623, 0.032109335, 0.04407588, -0.027506815, -0.018049091, -0.018789105, 0.009972123, 0.00025550745, -0.039599705, -0.014619764, -0.014863427, 0.026279477, -0.011488247, -0.02326528, -0.0116777625, 0.0003934138, 0.006795483, 0.006768409, -0.017498594, -0.02604484, 0.026279477, -0.011037019, -0.006096081, -0.046638854, 0.03833627, 0.0013604503, 0.011758983, -0.0039820806, -0.036386967, 0.046819344, 0.04053826, 0.052414563, -0.03160396, -0.004431052, -0.01439415, 0.02664046, -0.015377826, -0.030863946, -0.021388173, -0.004293428, -0.032849345, 0.057901487, 0.0007580618, 0.03138737, 0.032813247, 0.014231709, -0.014042193, -0.015774906, 0.015765881, 0.010089442, -0.00933138, 0.03898604, 0.0113619035, 0.00300743, 0.00367299, 0.022741856, 0.0064931605, -0.028373173, -0.022290628, 0.02821073, -0.015540267, -0.012128989, 0.0020451876, -0.031279076, 0.045194924, 0.048588153, 0.0034857308, 0.007982211, 0.0043250136, -0.008293558, -0.02700144, 0.009665289, -0.053894587, 0.03613428, -0.12237284, 0.0016774375, 0.00317664, 0.014682936, -0.0143309785, 0.0058118077, -0.044220272, 0.024095537, 0.031892743, 0.021027192, -0.012462898, 0.041007537, -0.014926598, -0.03830017, -0.01230948, 0.044256374, 0.014069267, 0.001785732, -0.0069037774, -0.021731107, -0.024312126, -0.013338279, -0.020124737, -0.006244986, 0.051331617, 0.001537557, -0.004033972, 0.033282526, 0.0022764418, -0.030773701, 0.01820251, -0.027109735, 0.02701949, -0.007224149, 0.0014811535, 0.048407663, 0.007355005, -0.00021094875, 0.028048288, -0.015630513, -0.012562168, 0.0027863286, -0.0048687425, -0.029221479, -0.0007230917, 0.014204635, 0.0047694724, -0.027759504, -0.026604362, 0.027867798, -0.02858976, -0.012697536, -0.019402774, 0.050356966, 0.015982471, 0.019222282, 0.004679227, 0.017128589, 0.04829937, 0.021045242, 0.037072834, -0.034347422, 0.0058253445, -0.022723807, -0.071979776, 0.03295764, -0.04891304, 0.0071158544, -0.00823941, -0.019456921, -0.017543716, -0.04829937, 0.01967351, 0.024276027, 0.014682936, 0.024961894, 0.030051738, -0.01429488, -0.030484915, -0.025286777, 0.057107326, 0.040899243, -0.018031042, 0.043029033, -0.009376503, 0.027181933, 0.01770616, -0.039563607, -0.012959247, -0.0016717971, -0.066709444, -0.017002244, -0.023355525, 0.06335231, -0.020720357, -0.015215384, -0.028698055, -0.016442722, -0.011650689, 0.008857592, -0.07262954, 0.011443124, -0.012887051, -0.03811968, -0.01925838, 0.048949137, 0.009683338, -0.015377826, 0.034654256, 0.0070707314, -0.0051620402, 0.033083986, -0.029943442, -0.007553545, 0.011804106, 0.007670864, 0.04811888, 0.012354603, 0.0007208356, 0.048985235, -0.048840843, -0.004365624, -0.059309315, -0.011722885, 0.030105885, -0.002811146, -0.03476255, 0.025701907, 0.0075670816, -0.009227598, 0.010107491, -0.052558955, 0.00218394, -0.014899525, 0.015847102, -0.060175672, -0.07530081, 0.016316378, 0.048985235, -0.056493655, 0.018319828, 0.005143991, -0.01866276, -0.03633282, 0.008965886, -0.0062946207, 0.009313331, -0.028752202, -0.04490614, -0.013825604, 0.046566658, 0.011966548, 0.007946112, 0.0057621724, -0.003720369, -0.023391623, -0.048407663, -0.0034631693, 0.0028540127, 0.0027524864, -0.049165726, -0.05887614, 0.03317423, 0.00251108, -0.02026913, -0.00076765043, -0.0005660082, -0.0053335065, -0.031242978, 0.042992935, -0.0755174, 0.013166812, -0.031459566, 0.042668052, 0.011163363, -0.006547308, 0.014854402, -0.008568807, 0.06216107, -0.027452668, 0.035322074, 0.007833306, 0.011551418, -0.027579011, 0.030701505, -0.0123275295, 0.043390017, 0.020341326, -0.021153536, 0.07681693, 0.022236481, 0.002531385, -0.032488365, 0.0023869923, 0.012498996, 0.025846299, 0.005143991, 0.026839, -0.007855867, -0.011461173, -0.0037136006, -0.00770245, -0.008171726, 0.007837818, -0.007887453, -0.021821352, -0.006393891, 0.008374779, -0.015377826, 0.026694607, -0.05208968, -0.02604484, -0.022832101, 0.079416, 0.015928322, 0.037469912, 0.030232228, -0.0037948214, -0.050320867, -0.012047769, ...]}], 'status_code': 200}]}
データ登録時にベクトル埋め込みを行う Ingestion pipeline を作成します。埋め込み元のデータはテキストであるため、今回は Text embedding processor を使用します。
Text embedding processor では、埋め込みの元となるフィールドと埋め込みを格納するフィールドのマッピングを field_map 内で定義し、model_id には埋め込みに用いるモデル ID を指定します。
以下は Ingestion pipeline による埋め込みのイメージです
payload = {
"processors": [
{
"text_embedding": {
"model_id": opensearch_embedding_model_id,
"field_map": {
"question": "question_embedding",
"context": "context_embedding"
}
}
}
]
}
ingestion_pipeline_id = f"{embedding_model_name}_neural_search_ingestion"
response = opensearch_client.http.put("/_ingest/pipeline/" + ingestion_pipeline_id, body=payload)
print(response)
response = opensearch_client.http.get("/_ingest/pipeline/" + ingestion_pipeline_id)
print(response)
{'acknowledged': True} {'baai-bge-m3_neural_search_ingestion': {'processors': [{'text_embedding': {'model_id': 'XxXhMpYBDSxiOaui0yy5', 'field_map': {'question': 'question_embedding', 'context': 'context_embedding'}}}]}}
作成したパイプラインは _simulate API でテストが可能です。 context_embedding および question_embedding フィールドが含まれていれば正常にパイプラインが動作していると判断できます。
%%time
payload = {
"docs": [
{
"_index": "testindex1",
"_id": "1",
"_source":{
"question": "日本で梅雨がないのはどこか。",
"context": "梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の南部から長江流域にかけての沿海部、および台湾など、東アジアの広範囲においてみられる特有の気象現象で、5月から7月にかけて来る曇りや雨の多い期間のこと。雨季の一種である。 ",
}
}
]
}
response = opensearch_client.http.post("/_ingest/pipeline/" + ingestion_pipeline_id + "/_simulate", body=payload)
print(response)
{'docs': [{'doc': {'_index': 'testindex1', '_id': '1', '_source': {'context': '梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の南部から長江流域にかけての沿海部、および台湾など、東アジアの広範囲においてみられる特有の気象現象で、5月から7月にかけて来る曇りや雨の多い期間のこと。雨季の一種である。 ', 'context_embedding': [-0.006070981, 0.0046303687, -0.054263838, -0.017420249, -0.011021749, -0.022005524, -0.046972968, 0.04480849, -0.014610225, 0.0092322575, -0.029315384, -0.026429413, 0.015834864, 0.0025252241, -0.0024077443, 0.003951596, 0.04287185, 0.03410002, 0.002191771, -0.00326333, 0.04158076, 0.013043827, -0.019261954, -0.032751966, -0.03007485, -0.028233144, -0.036435377, 0.020942273, 0.023277631, 0.03330258, 0.0046517286, 0.04837798, 0.04469457, 0.0068874066, -0.019898007, -0.010300256, -0.044086996, -0.028517945, -0.011391989, 0.037232816, 0.047504593, -0.026733201, 0.034062047, -0.009460097, 0.002223811, -0.020372674, -0.04378321, -0.032486156, -0.0087101245, -0.031688716, -0.029315384, -0.032865886, 0.06440271, -0.04355537, -0.008472792, 0.020429634, 0.030454583, -0.02990397, -0.03391015, -0.054909386, -0.03918844, 0.01311028, 0.024701629, 0.0028361306, -0.014534279, 0.025005415, 0.015844358, -0.018758807, -0.0467831, -0.02770152, 0.008206978, -0.0074047926, 0.077921204, -0.016660783, -0.029163491, 0.013442547, -0.01670825, -0.01759113, -0.047884326, -0.0130818, 0.023011817, -0.0020102113, 0.0024753842, -0.020068888, 0.016489904, 0.029505251, 0.010879349, -0.022670057, -0.019186007, 0.027283812, -0.031859595, -0.03675815, -0.018730327, -0.026809147, -0.06656719, 0.027777465, -0.029884983, -0.013262173, 0.031954527, -0.023087764, 0.0043574357, -0.014249479, 0.005767194, -0.07059236, 0.017315824, -0.004274369, 0.026239548, -0.020942273, 0.047542565, -0.0040773824, 0.05035259, 0.043251585, 0.019499287, 0.010376203, -0.036891058, 0.019860033, 0.0004093996, -0.015455131, -0.009156311, 0.0005153095, -0.045795795, 0.033340555, 0.01036671, -0.03212541, -0.0063795135, -0.029467277, -0.000643766, 0.02270803, 0.006237114, 0.019034114, 0.031195063, 0.011923615, -0.027112933, -0.0016708251, -0.011923615, 0.0029120771, 0.023581417, -0.030796343, 0.0049555153, -0.029467277, -0.0111261755, 0.016983556, -0.050656375, 0.011553375, 0.03144189, -0.032884873, 0.042492118, -0.022328299, -0.019480301, -0.026714213, 0.009312951, 0.06288378, 0.052479096, -0.015815878, -0.053314507, 0.024777574, -0.011202122, 0.016432943, -0.048340004, -0.024226962, 0.047618512, -0.02661928, -0.07830094, 0.052479096, 0.009635724, -0.053200588, -0.017524676, -0.00051234284, -0.003920743, -0.021549845, 0.0027625572, -0.024511762, -0.006445967, 0.019556247, 0.028252132, 0.035713885, 0.0423782, 0.012455241, -0.017211396, -0.015284251, -0.010471136, -0.027473679, 0.008819298, -0.01667977, -0.0031968767, 0.03007485, -0.0044072755, -0.0456439, -0.022689044, 0.028859705, -0.012445748, -0.010698976, 0.032258313, -0.0012982121, 0.018901208, -0.01342356, 0.03975804, 0.019632194, -0.004554422, -0.008349379, -0.0061943936, 0.03624551, -0.005487141, 0.03561895, 0.0020493714, 0.018929688, -0.045795795, -0.024758589, 0.04366929, -0.061099034, 0.018559448, -0.016603824, -0.009521804, -0.034005087, -0.017762009, -0.03404306, 0.019803073, -0.022024512, -0.01053759, 0.028973624, -0.016271558, -0.0010911389, -0.0136514, 0.010119883, 0.027682532, -0.015644997, 0.07355427, 0.029638156, -0.020486593, 0.012559667, -0.0439351, 0.021549845, 0.007751299, -0.0074712457, -0.005012475, -0.038599856, -0.011429962, 0.030511543, 0.033663325, 0.04758054, 0.0055583413, -0.0031351703, -0.012759027, -0.004912795, 3.1298303e-05, 0.011116683, 0.040859267, 0.008937964, -0.017657582, -0.018293636, -0.011278069, -0.014496306, -0.029087543, 0.044200916, 0.006659567, 0.00076599256, -0.015863344, -0.024511762, 0.031081142, 0.03670119, -0.018768301, -0.01922398, 0.0101008965, 0.025043389, -0.0073905527, -0.002646264, -0.05244112, 0.005923834, 0.020087874, -0.006407994, -0.060529433, -0.0036762897, 0.047086887, 0.027283812, -0.0025608242, -0.0136514, -0.027948346, -0.015331718, 0.013214706, 0.0048582084, 0.011695775, 0.04985894, 0.04366929, 0.06026362, 0.014534279, -0.068617746, 0.028233144, 0.03132797, 0.026524346, -0.034213938, -0.03303677, 0.0011445389, 0.035580978, 0.033739273, 0.0017752516, 0.02627752, -0.017429743, -0.16556357, 0.014277959, 0.045947686, -0.029353358, 0.014638705, -0.0041557024, 0.004129596, 0.0008395658, 0.024625681, -0.024207976, 0.013964679, -0.011173642, -0.004782262, -0.02373331, 0.012872947, 0.0018393315, 0.01999294, -0.0406694, 0.035694897, -0.049669072, 0.0047371686, 0.06037754, -0.030150797, -0.028460985, 0.0020422514, 0.0023543444, 0.03852391, 0.068541795, -0.026866106, 0.0118191885, 0.007983886, 0.02322067, -0.009564524, 0.04389713, 0.021246059, -0.008349379, -0.032410208, 0.019100567, 0.0066833002, 0.045909714, -0.01667977, 0.02265107, -0.025973734, -0.03449874, -0.024549736, -0.0007262393, -0.0028527437, -0.0019342648, -0.026087655, 0.043251585, 0.05335248, 0.029315384, 0.034859486, 0.04253009, -0.04606161, 0.00637002, 0.041960493, 0.051112056, -0.03161277, 0.0010774923, -0.00043016623, -0.042340223, 0.020467605, -0.031783648, 0.025366161, -0.035543006, 0.01773353, 0.021227073, -0.030549517, -0.033492446, 0.024815548, 0.043023743, -0.026923066, -0.0041082357, -0.011382495, 0.003628823, 0.004782262, -0.057909276, 0.041276973, -0.080351494, -0.003899383, -0.01676521, 0.020524567, -0.06668111, -0.03127101, -0.058023196, 0.023942163, -0.037061937, 0.027169893, 0.21508075, 0.039112493, 0.026524346, -0.09759137, 0.012588147, -0.0137938, 0.0028052772, 0.022290325, 0.019860033, -0.019841047, 0.0132052135, 0.025537042, 0.007480739, -0.015255772, 0.013062813, 0.090148605, -0.02424595, 0.022024512, 0.03472658, 0.014145053, -0.040289667, -0.035656925, 0.017505689, -0.00032069636, -0.016803183, -0.010518603, -0.029429303, 0.017040517, -0.0060425005, 0.021644779, -0.048074193, -0.022840938, 0.05646629, 0.011439456, -0.0081974855, -0.03641639, 0.01642345, -0.04158076, 0.00341285, 0.004196049, 0.04146684, 0.0036739164, 0.05540304, 0.002319931, 0.03630247, -0.02458771, -0.011458442, -0.059542127, -0.018388567, 0.021853631, 0.013983666, -0.030739382, -0.011335028, 0.0354101, -0.053998027, -0.0756428, 0.022062484, -0.011857161, 0.020562539, -0.0037973295, 0.0023531576, -0.0003003747, 0.032789942, -0.06838991, 0.019803073, 0.005714981, -0.014714652, -0.016290544, 0.041542787, 0.009502817, -0.031840608, -0.011173642, -0.03212541, -0.011562869, 0.024568722, -0.025631975, 0.0025964242, -0.027853413, 0.06345338, 0.025556028, -0.0051406347, 0.015730437, -0.050390564, -0.020543553, 0.026638268, 0.008287672, 0.027131919, 0.017448729, 0.03301778, -0.02622056, 0.008036098, 0.039492227, -0.025138322, 0.021758698, 0.023714323, -0.0258788, -0.022157418, -0.002458771, 3.9197046e-05, 0.03738471, -0.0023923176, -0.017837955, -0.016432943, -0.0043787956, 0.009137324, -0.03692903, 0.024853522, 0.038694788, -0.0018523848, -0.0075329524, -0.040593453, -0.008216471, -0.0189107, 0.04287185, 0.022916883, 0.04552998, -0.0060472474, 0.04355537, 0.02107518, 0.022404244, -0.016603824, -0.020904299, 0.008681645, 0.025252242, 0.018369582, -0.0031066902, 0.027340773, 0.036948018, 0.001365852, 0.0114679355, -0.0016684517, -0.037403695, -0.025802854, -0.008695885, -0.028460985, 0.028916664, -0.0048700753, 0.036777135, 0.0029547971, -0.0021087045, -0.038125187, -0.006203887, -0.008187992, 0.005415941, -0.019100567, 0.035637937, -0.032144394, -0.05160571, -0.05012475, -0.04826406, -0.037973296, 0.057339676, 0.011629322, -0.03915047, -0.0337013, -0.008520259, 0.014895026, -0.038485937, 0.015720945, -0.0095787635, -0.013319134, 0.012189428, 0.025385149, 0.06930126, 0.026581306, 0.012085001, -0.005382715, -0.027112933, 0.048036218, -0.00025557808, 0.049707044, 0.014391879, -0.027454693, 0.008909484, 0.029068558, -0.0085439915, -0.035922736, -0.04378321, -0.038922627, 0.032998793, 0.03670119, 0.012531187, 0.041238997, 0.011012256, -0.049137443, 0.021720724, 0.01650889, -0.026125627, 0.06960505, -0.0027886638, -0.030435596, 0.13199517, -0.005377968, 0.005985541, 0.033891167, -0.013186227, 0.06352932, 0.031062156, 0.001613865, -0.062390126, -0.01987902, -0.037270788, 0.00988255, 0.009892044, -0.0066121, -0.025385149, -0.044276863, 0.000987899, -0.019299928, 0.024113042, 0.011961588, -0.008591458, -0.018920194, -0.023429524, -0.017353795, -0.027340773, 0.030796343, -0.025347175, -0.013243187, -0.03404306, -0.018151235, -0.024378857, 0.043251585, -0.01576841, -0.013129267, 0.08088312, 0.025499068, 0.020524567, -0.016860142, 0.027910372, -0.008942711, 0.042454146, 0.008596205, -0.03907452, -0.048226085, -0.0033914899, 0.0069016465, -0.017714543, 0.002465891, -0.024018109, 0.024340883, -0.0026082906, 0.011790709, 0.025385149, -0.021758698, 0.032808926, -0.05775738, 0.021758698, 0.043517396, 0.00029251305, -0.012445748, -0.00055862276, 0.047770407, 0.00086923246, -0.01056607, 0.013186227, -0.013803293, 0.01893918, -0.025271228, -0.00961199, 0.005306768, 0.037327748, -0.00045656954, 0.003040237, 0.04701094, -0.07651619, -0.004898555, -0.015369691, 0.006104207, -0.024264935, -0.0023460377, -0.02724584, -0.014847559, -0.022385258, -0.031821623, -0.03013181, -0.06364325, 0.0968319, -0.00327045, 0.028612878, -0.014097586, -0.011249589, -0.015008945, -0.013869747, 0.011771722, -0.0012365055, 0.046972968, -0.028214158, 0.0069728466, -0.024378857, -0.008577218, 0.0036240765, 0.0026225308, -0.029296398, 0.03024573, 0.047656488, -0.0065219137, 0.025518054, -0.014989958, 0.0071199927, -0.0043004756, 0.045036327, -0.017686062, -0.0071959393, 0.0015604651, 0.010860362, 0.019186007, -0.06231418, -0.026258534, -0.0040465295, 0.008515512, -0.010471136, 0.018065795, 0.03330258, 0.028081251, -0.023144724, 0.025726907, -0.010860362, 0.001085799, 0.0038898895, -0.018616408, 0.016157636, 0.023828244, 0.015607025, -0.04321361, -0.0044499957, -0.014467825, -0.0058051674, -0.057681438, 0.004860582, -0.038106203, 0.017667076, -0.021948565, -0.047504593, -0.012284361, 0.0005743461, 0.025366161, -0.03013181, -0.032676022, 0.029182477, -0.005031462, -0.01970814, -0.022081472, -0.06231418, 0.063795134, -0.018986648, 0.007328846, 0.026999013, -0.038258094, 0.034194954, -0.025290215, 0.029125517, -0.006407994, 0.0021205712, 0.02804328, 0.03926439, -0.004694449, 0.014951985, 0.019148035, 0.010613536, -0.043973077, 0.02304979, 0.0010911389, 0.0019164648, 0.0072006863, 0.0128539605, -0.0053020213, -0.01739177, -0.010442656, -0.022632085, -0.03250514, 0.066415295, 0.038827695, -0.002291451, -0.024663655, 0.024910482, 0.015027932, 0.061137006, -0.009094604, 0.008833538, -0.0020659845, -0.031422902, -0.020638486, 0.0037356229, 0.02390419, 0.030891275, -0.023942163, 0.011800202, -0.033283595, 0.0016447183, -0.008183246, 0.033055753, -0.044428755, 0.033891167, -0.118021004, 0.005377968, -0.04332753, 0.011040736, -0.0834653, 0.008610445, -0.0857437, 0.037460655, -0.015265265, 0.0024540243, -0.008937964, 0.03449874, -0.0054586614, -0.025100349, 0.04161873, 0.05551696, 0.020125847, -0.050086778, -0.03615058, 0.027929358, 0.014363399, 0.03335954, 0.067554496, -0.012103988, -0.0018227182, -0.0055535943, 0.022214377, -0.022840938, 0.0021929578, -0.028252132, 0.0102622835, -0.04944123, 0.024454802, -0.025802854, 0.0065836203, 0.05749157, 0.030169783, -0.001019939, 0.02696104, -0.03998588, 0.045833766, 0.008259192, -0.0038281828, 0.012872947, -0.054111946, 0.05103611, -0.007613646, -0.0062798336, -0.016774703, 0.025366161, -0.062617965, -0.008752844, -0.013784306, 0.011629322, -0.00073217263, 0.014838065, -0.008638925, -0.03618855, 0.06561785, 0.03307474, 0.0038329295, 0.0021063313, 0.017230382, -0.009070871, -0.007798766, 0.045074303, -0.034156978, 0.023999123, 0.050998136, 0.005183355, -0.035486046, -0.046479315, -0.0008757591, 0.010376203, -0.020030914, 0.022613097, 0.038998574, -0.024625681, 0.0040631425, -0.016394971, 0.013964679, 0.008107299, 0.008667405, 0.026125627, -0.03675815, 0.0050029815, 0.0013361854, -0.03840999, -0.010907829, -0.026828133, -0.03761255, -0.045226194, -0.015986757, 0.030549517, -0.066339344, -0.0112970555, -0.047276754, -0.017268356, -0.0005295495, -0.0018500115, -0.06303567, -0.021227073, -0.006308314, -0.026866106, -0.057909276, 0.07036452, -0.025385149, 0.003168397, 0.02039166, -0.031081142, -0.015417158, 0.00049988285, -0.062731884, -0.014202013, -0.07689592, 0.0046351156, -0.037346736, 0.042454146, 0.016347503, 0.05392208, -0.009032898, -0.033397514, -0.044049025, -0.015426652, 0.056276426, -0.0075044725, -0.010176843, 0.0645546, 0.0025252241, -0.05464357, -0.02804328, -0.014505799, 0.009778123, -0.0066215936, 0.0037237564, -0.035637937, -0.022271337, 0.007983886, -0.019518275, -0.052365176, 0.03144189, -0.008933218, -0.03392914, -0.028233144, -0.00958351, -0.027454693, -0.007328846, -0.037935324, -0.0645546, -0.00702506, 0.026030693, 0.0071152463, -0.01025279, 0.012778014, 0.015711451, -0.0090518845, -0.06307364, 0.014828572, -0.002940557, 0.036625244, -0.007499726, -0.04158076, 0.015578545, -0.0130818, 0.0007814192, 0.079819866, 0.001287532, -0.03104317, -0.0018215316, 0.011828681, -0.024701629, 0.0060567404, -0.0273028, -0.012521694, 0.036435377, -0.0034959165, -0.026923066, -0.008562978, 0.015455131, -0.016442437, 0.0462135, 0.05069435, 0.042644013, 0.0028669839, 0.044960383, 0.051074084, 0.027321786, -0.034897458, -0.006778233, 0.011116683, 0.030720396, -0.02893565, -0.035599966, 0.013727346, -0.010186337, 0.02424595, 0.0065503935, 0.025916774, -0.034954417, 0.032315273, -0.024663655, 0.019632194, -0.022081472, 0.04632742, 0.015502598, -0.0022594112, -0.0016720117, -0.019157527, -0.032751966, 0.047428645, -0.017211396, -0.012635614, -0.014819078, 0.055934664, -0.011382495, 0.0077750324, -0.0024077443, -0.025442109, -0.014088092, 0.014258972, 0.01770505, 0.03144189, -0.04435281, 0.017410755, 0.016470917, 0.03297981, -0.017524676, 0.028404025, -0.038125187, -0.041314945, 0.002539464, 0.0052165813, 0.01993598, 0.021910591, -0.005957061, 0.024758589, -0.0014667185, 0.008173752, 0.06914937, -0.02576488, 0.06349135, -0.011534388, -0.032638047, -0.04549201], 'question': '日本で梅雨がないのはどこか。', 'question_embedding': [-0.031947497, 0.026112502, -0.031059561, -0.03725698, -0.004077247, -0.017224103, -0.00045416, 0.014723392, -0.019661391, -0.004851924, -0.0011076521, -0.027997097, -0.0018098446, 0.005463511, 0.0060297954, 0.0069766226, 0.03845297, 0.006731988, 0.0015074488, 0.0009088863, 0.010329026, -0.0020431539, -0.033234093, -0.05661031, 0.027960854, 0.0066821547, -0.034103908, 0.035118688, -0.018093916, -0.007937041, 0.018139219, 0.013772034, -0.028468246, -0.014732453, -0.010492116, 0.0024531437, -0.0017147089, -0.023539307, -0.023484943, -0.015629446, 0.07502135, -0.012512618, 0.022723857, 0.004838333, -0.010437752, -0.04095368, -0.036858313, -0.017840222, -0.033234093, 0.008707188, -0.0069720927, 0.012666647, 0.032762945, -0.013491157, -0.002903906, 0.03020787, 0.018383853, 0.0020658053, -0.01072769, -0.033977058, -0.031766284, 0.015566023, 0.010483055, 0.035209294, 0.029356178, 0.05197131, -0.012730071, -0.030244112, -0.03647777, -0.050086714, -0.018003311, -0.02343058, 0.02426415, -0.041859735, -0.014442516, -0.023195006, -0.0016920576, -0.027580312, -0.074876375, -0.024155423, 0.10597218, -0.004883636, 0.0012005228, 0.0082994625, 0.010329026, 0.03220119, -0.0009830695, 0.010265602, -0.034285117, 0.009504516, -0.034430087, 0.011162597, -0.009087731, -0.03979393, -0.06465608, 0.017233165, -0.008381008, -0.037909336, 0.05095653, -0.019715754, -0.026583651, -0.025224568, 0.027091041, -0.045520198, 0.020205025, -0.029609874, 0.007080819, 0.025387658, 0.015122056, 0.014052912, 0.051210225, 0.026329955, -0.011833077, 0.007375287, -0.05911102, -0.017242225, -0.010591782, -0.033542152, -0.012086772, -0.005576768, 0.014442516, 0.022180224, 0.039032847, -0.031204531, 0.02063993, -0.036224075, -0.0037034994, -0.0050603165, -0.028123945, 0.042004704, 0.01601905, 0.0063423845, 0.0026932482, -0.0067908815, 0.021926528, -0.02393797, 0.014496879, 0.020078177, 0.0016150429, -0.022905068, -0.022198346, -0.008322114, -0.033107247, 0.00875249, 0.044070512, 0.0059301294, 0.0059663714, -0.00080242485, 0.001501786, -0.021727197, -0.036387164, 0.02308628, 0.0074885436, 0.037764367, -0.057226427, 0.025840687, -0.060705677, -0.00094342965, -0.050884042, -7.510346e-05, 0.007524786, 0.001163148, -0.08379196, 0.0524787, 0.014043851, 0.0038960362, -0.013119675, -0.014071032, 0.015937505, 0.009875999, 0.02163659, -0.05197131, 0.012358589, -0.01121696, 0.040156353, 0.018447278, 0.009984725, 0.023901729, -0.014152577, -0.034828752, -0.0025007115, -0.0064782924, 0.011253202, 0.00066934805, 0.00043830407, 0.05559553, 0.01636335, 0.01337337, 0.00082507625, 0.042367127, -0.019389575, -0.007329984, 0.011860259, -0.012639466, 0.037293218, 0.022832584, 0.034266997, -0.0038983012, -0.013989488, 0.019443939, -0.0369308, 0.047404792, -0.013663308, 0.023376217, -0.004838333, -0.046679948, -0.048818238, -0.037583157, 0.02605814, -0.05628413, 0.03609723, 0.009105852, 0.00974009, -0.019842602, 0.002412371, 0.0074160593, 0.0030352839, -0.0048292726, -0.023521185, -0.0062155365, -0.020803021, 0.017939888, -0.018139219, -0.009975664, 0.056356616, -0.004170118, 0.045085292, 0.04240337, -0.045918863, -0.028993757, -0.054870684, 0.030950835, -0.0045438656, -0.005481632, 0.014587484, -0.036677103, -0.016390532, -0.0004380209, 0.01468715, 0.038742907, -0.010673326, 0.035716683, -0.0025709309, 0.003431683, -0.004439669, 0.0053864964, -0.00059063453, -0.008806854, -0.005739858, -0.031458225, -0.03102332, 0.0025029767, -0.021401016, 0.082052335, 0.0045438656, -0.010800174, -0.0087389, -0.016626107, 0.056356616, 0.01121696, -0.0015414259, -0.03216495, 0.018039552, 0.050231684, 0.0018608102, 0.016272746, -0.00096947874, -0.0022662699, 0.020096298, 0.019733876, -0.05497941, 0.022162102, -0.0036785828, 0.03595226, 0.024844026, -0.032527372, 0.035916016, -0.0056492523, 0.010745811, 0.01222268, -0.01567475, -0.007293742, 0.0369308, 0.023956092, -0.0025731958, -0.044795353, 0.040989924, 0.018383853, -0.0034498041, -0.007493074, -0.043345667, -0.040156353, 0.052406214, 0.03732946, -0.011733411, -0.026692377, -0.044650387, -0.12510806, -0.011987106, 0.0060796286, -0.06157549, 0.013183099, -0.029247452, 0.010682387, -0.022977551, -0.008901989, -0.08002277, -0.0045914333, -0.024191666, -0.06809909, -0.01733283, 0.013482097, 0.02558699, 0.004412487, -0.081255004, 0.038163032, -0.050304167, 0.020150661, 0.026547408, -0.021056715, -0.04704237, -0.018275127, 0.0056990855, 0.0068588355, 0.03961272, -0.009812575, -0.030298475, 0.09691163, 0.00974009, -0.0234487, 0.034575056, 0.0541096, -0.0050467257, 0.012150196, 0.003431683, -0.007438711, 0.044686627, -0.00048049225, 0.022107739, -0.019226486, 0.005150922, -0.011860259, 0.017205983, -0.009422971, -0.02906624, -0.023140643, 0.04077247, 0.023738638, 0.032146826, -0.009096791, -0.018039552, 0.027525948, 0.041171134, 0.030950835, 0.031440105, -0.04769473, -0.021545986, 0.014496879, -0.0046978947, 0.030751504, 0.0070536374, 0.08024022, 0.016046232, 0.014560303, 0.01600093, -0.0019967186, 0.014759635, 0.022723857, 0.0738616, -0.054000873, -0.035064325, -0.015267025, 0.0156022655, -0.004586903, -0.05327603, -0.0121411355, -0.104594976, 0.036205955, -0.039902657, -0.0207849, -0.07375287, -0.012086772, -0.013273704, -0.004029679, 0.0025233629, 0.041026168, 0.22876073, 0.016689532, 0.016607987, -0.06469232, -0.0034067663, 0.013844519, 0.015094874, -0.0074477713, -0.006156643, -0.032581735, -0.012693829, -0.012838798, 0.0076289824, 0.015140178, -0.0047431975, 0.052768636, 0.047114857, 0.0349556, 0.06222785, -0.029972296, -0.00610681, -0.020422477, 0.005726267, -0.036713343, -0.028649457, -0.004403427, -0.0148955425, 0.05294985, 0.012829738, -0.023321854, 0.0034362131, -0.03881539, 0.015221722, 0.004226746, -0.029356178, -0.026040018, -0.004550661, -0.049289387, 0.030280355, 0.0037669232, -0.04080871, 0.004392101, 0.046788674, 0.063641295, 0.0049923626, -0.0037918398, -0.01386264, -0.04012011, -0.03147635, 0.011778714, -0.011688109, 0.013518339, -0.021564107, 0.03597038, -0.048600785, -0.06918635, -0.009101322, -0.07857308, -0.008462553, -0.010573661, 0.00560848, 0.012503558, 0.01931709, -0.06375002, 0.01071863, 0.022814462, -0.014216001, 0.0115522, 0.04983302, 0.0061611733, 0.001252621, -0.029954175, -0.03250925, 0.011660927, 0.0178221, 0.022470161, -0.03881539, 0.06730176, 0.031440105, 0.019244606, 0.019498302, -0.03230992, -0.010999506, -0.015547902, -0.006337854, -0.024952753, 0.032364283, 0.03780061, -0.0014394948, -0.05005047, 0.049289387, 0.067954116, -0.043998025, 0.021346653, -0.008920111, -0.077123396, -0.00035307827, 0.010655206, -0.018936547, -0.0065281256, 0.0016875273, -0.012675708, 0.003121359, -0.0316938, 0.015710993, 0.012802556, 0.049760535, 0.007864556, 0.009178336, -0.035607956, -0.018592246, -0.026438681, -0.043816816, 0.0062245973, 0.0012967911, -0.028160186, 0.024155423, -0.002935618, 0.013255583, 0.015874082, -0.045302745, -0.06657691, -0.006242718, -0.05791503, -0.039503995, 0.03462942, 0.00023769784, 0.01832949, 0.0035426747, 0.043780573, 0.032454886, -0.019244606, 0.03383209, 0.028486365, 0.019498302, -0.00037941049, -0.015040511, 0.04370809, 0.0006110208, -0.014596544, 0.007529316, 0.025170205, 0.0059527806, 0.008231509, 0.0047613187, -0.006288021, -0.0021246988, -0.015729113, -0.008467083, -0.07009241, 0.015892204, 0.017858341, -0.008371947, -0.03462942, 0.0030737913, -0.03834424, 0.030497808, -0.012023348, 0.008263221, -0.014759635, 0.005739858, -0.0063605052, 0.026692377, 0.11169845, 0.008575809, 0.062517785, 0.0064964136, 0.021527864, 0.05298609, -0.027018556, 0.031657558, 0.0012412952, -0.044142995, -0.009042428, 0.014904603, -0.029174969, -0.044940323, -0.033234093, -0.023575548, 0.052587427, 0.02245204, 0.0178221, 0.054906927, 0.044324204, -0.09024307, 0.058821086, -0.0055269348, -0.020585567, 0.011298505, -0.011733411, -0.041352347, 0.06490977, -0.010129694, 0.0009870336, 0.018374793, -0.00958606, 0.03499184, 0.04617256, -0.009758212, -0.031929374, 0.010600843, -0.03462942, -0.026819225, -0.025858806, -0.005631131, -0.0068996083, -0.031059561, 0.00032561348, 0.016490199, -0.010573661, -0.016897924, 0.0018879919, 0.02640244, -0.02921121, 0.023865486, 0.001061783, 0.013418674, -0.036677103, 0.0020748656, -0.055994194, -0.0033795848, 0.010501176, 0.077485815, -0.0040183533, -0.012693829, 0.014795876, -0.010102512, -0.0069358503, 0.00478397, 0.052297488, 0.008562218, 7.92798e-05, 0.03334282, -0.04012011, -0.017079135, 0.0009422971, -0.025387658, -0.022397676, 0.0174778, -7.666074e-05, -0.0079143895, -0.015303267, 0.00354494, 0.017912704, 0.010410571, 0.016680472, -0.021038596, 0.049724292, 0.050847802, 0.049216904, -0.056030434, 0.046100073, 0.006994744, -0.015982809, -0.0462088, 0.08053016, -0.017794918, -0.0078509655, -0.018238885, -0.015267025, -0.009685727, 0.050086714, -0.0013386961, 0.019860724, 0.015294206, -0.06726552, 0.005599419, -0.02027751, 0.023231247, -0.052369975, 0.006283491, -0.0050059534, -0.013980427, 0.00014595978, -0.02328561, -0.01801237, -0.080602646, 0.03218307, -0.041533556, 0.045773894, 0.004192769, 0.025025235, 0.00775583, 0.012068652, -0.004281109, 0.010972325, 0.006120401, -0.003119094, -0.011316625, -0.029011877, 0.008322114, 0.0063423845, 0.009993786, -0.01104481, 0.006007144, 0.068207815, -0.03433948, 0.0021643387, -0.0349556, 0.026982315, -0.02756219, 0.035426747, -0.08118252, -0.019607028, -0.057987515, 0.022560768, -0.0057353275, -0.058458664, -0.04501281, -0.039467752, 0.021999013, -0.008670946, 0.0054499204, 0.022832584, 0.014868361, 0.014080093, 0.049398113, 0.036586497, -0.047006126, 0.03051593, -0.010428692, 0.05099277, 0.035734806, -0.01962515, -0.014868361, -0.00495159, -0.0010481923, 0.0073481053, -0.029338058, -0.023539307, -0.018610368, 0.018592246, -0.006917729, -0.009595121, -0.013500218, -0.013391491, 0.007606331, -0.0031009729, -0.023158763, -0.016807318, 0.027417222, -0.017749615, -0.007941571, -0.04918066, 0.031204531, 0.005979962, 0.008136373, -0.003365994, -0.021219805, 0.041497316, 0.037039526, 0.056030434, -0.037401948, -0.003501902, -0.018773457, 0.029609874, -0.013627065, -0.009268941, -0.015203602, 0.006686685, -0.030914593, 0.06882393, -0.02324937, 0.038525455, 0.038380485, 0.022542646, -0.015112996, -0.003399971, 0.009758212, 0.011515958, -0.0075429073, 0.030552171, 0.036532134, -0.013482097, -0.00036242197, 0.02424603, -0.0035721215, -0.02689171, -0.027689038, 0.027544068, -0.0069449106, -0.011198838, 0.0073571657, -0.029754844, 0.040446293, 0.044940323, 0.02228895, 0.010963264, -0.00421542, -0.009631364, -0.04454166, 0.0018845942, -0.051862583, 0.04443293, -0.13148668, 0.015076754, -0.0068271235, 0.012639466, -0.030932715, 0.029646117, -0.03863418, 0.029301815, 0.01749592, 0.02062181, -0.022415798, 0.048057154, -0.025677595, -0.03613347, -0.009531697, 0.033614635, 0.0047567883, 0.007724118, 0.0005473138, -0.011996167, -0.011289444, -0.016843561, -0.0071034706, -0.025532627, 0.043853056, 0.007212197, -0.015285146, 0.03234616, -0.0019502832, -0.033777725, 0.011235081, -0.031820647, 0.02689171, -0.014107275, -0.0012899956, 0.04127986, 0.013364309, 0.0052007553, 0.035752926, -0.0060841586, -0.024372878, 0.003021693, -0.013608945, -0.028178308, -0.0043150866, 0.021183563, 0.00048785395, -0.022053376, -0.035553593, 0.02770716, -0.035752926, -0.011633745, -0.023122521, 0.04178725, 0.014261304, 0.013545521, 0.009074139, 0.011280384, 0.04834709, 0.014043851, 0.041388586, -0.037510674, -0.0038484682, -0.02837764, -0.06882393, 0.036858313, -0.05034041, 0.00511921, 0.0002764883, -0.012467315, -0.034430087, -0.04588262, 0.021962771, 0.018139219, 0.01751404, 0.031784408, 0.036514014, -0.02013254, -0.03350591, -0.039177813, 0.048057154, 0.0369308, -0.026293714, 0.02623935, -0.008131843, 0.030225992, 0.016934166, -0.03809055, -0.02094799, 0.0030330187, -0.06715679, -0.02063993, -0.029809207, 0.05381966, -0.024644693, -0.012856919, -0.036224075, -0.02475342, -0.0063876873, 0.008018586, -0.05465323, 0.008471614, -0.0039798464, -0.044759113, -0.035752926, 0.0511015, 0.014659968, -0.00437398, 0.050920285, 0.0005422172, -0.024644693, 0.029936055, -0.046607465, -0.0069222595, -0.0041995645, 0.011706229, 0.03961272, 0.012014288, 0.014379092, 0.037873093, -0.042512096, -0.0012537534, -0.053565964, -0.014995209, 0.027689038, -0.007397938, -0.04142483, 0.021962771, 0.014922724, -0.0029016407, 0.01897279, -0.04541147, 0.011262262, -0.008145434, 0.01565663, -0.053928386, -0.06722927, 0.01913588, 0.04124362, -0.05327603, 0.013826398, -0.0048972266, -0.02208962, -0.03848921, -0.0018472194, 0.0028631336, 0.010528358, -0.047114857, -0.05331227, -0.0011903297, 0.050231684, 0.009495456, 0.016299928, 0.006546247, -0.010709569, -0.024064818, -0.043345667, 0.00048672137, 0.0067772907, 0.00990318, -0.028432002, -0.06994744, 0.025876928, -0.008226979, -0.008068419, 0.007819254, -0.0014485553, -0.0071034706, -0.03067902, 0.037148252, -0.061104342, 0.027652796, -0.029193088, 0.036296558, 0.020603688, -0.025115842, 0.020440599, -0.016028112, 0.07150585, -0.035916016, 0.03611535, 0.015221722, 0.019570787, -0.017106317, 0.032219313, -0.0100300275, 0.041606043, 0.015312328, -0.023158763, 0.06799036, 0.020186903, 0.0039843763, -0.022868825, 0.00027082546, 0.010265602, 0.036586497, -0.0013149122, 0.036876436, -0.010211239, -0.0015063162, 0.0031145636, -0.013300886, -0.0013137796, 0.0012186439, -0.0115522, -0.012249862, 0.0010634819, 0.015149238, -0.017124437, 0.022415798, -0.05349348, -0.022071498, -0.029283695, 0.070853494, 0.0102837235, 0.029881692, 0.034049544, -0.005381966, -0.04374433, 0.01485024, -0.07306427, 0.006523595, -0.029428663, 0.043381907, 0.0293743, 0.019987572, 0.0211292, 0.032781065, 0.030642778, -0.012476376, 0.025278931, 0.0057172063, 0.023919849, 0.019099638, 0.031385742, 0.0034792507, 0.035281777, -0.019407695, 0.03149447, -0.051246464, 0.023883607, 0.012639466, -0.048238363, -0.02408294]}, '_ingest': {'timestamp': '2025-04-14T05:59:44.867044426Z'}}}]} CPU times: user 5.16 ms, sys: 101 μs, total: 5.26 ms Wall time: 301 ms
クライアントから入力されたテキストベースのクエリをベクトルベースのクエリに変換するための Search pipeline を作成します。
Search pipeline は、検索時のクエリ書き換え用の Request processors、レスポンス書き換え用の Response processors、スコアなどの検索結果を書き換える Search phase results processors の 3 タイプが存在します。
今回使用する Neural query enricher processor は Request processors に属しています。このプロセッサは、後述する Neural query を実行する際のデフォルトモデルをセットするものです。
payload={
"request_processors": [
{
"neural_query_enricher" : {
"default_model_id": opensearch_embedding_model_id
}
}
]
}
# パイプライン ID の指定
search_pipeline_id = f"{embedding_model_name}_neural_search_query"
# パイプライン作成 API の呼び出し
response = opensearch_client.http.put("/_search/pipeline/" + search_pipeline_id, body=payload)
print(response)
response = opensearch_client.http.get("/_search/pipeline/" + search_pipeline_id)
print(response)
{'acknowledged': True} {'baai-bge-m3_neural_search_query': {'request_processors': [{'neural_query_enricher': {'default_model_id': 'XxXhMpYBDSxiOaui0yy5'}}]}}
Search pipeline についてはテスト用の API が提供されていないため、実際に Neural search を実行して動作を確認していきます。
データセットを OpenSearch にロードし、検索を実行していきます。
DataFrame 形式に変換したサンプルデータセットを OpenSearch に登録していきます。DataFrame にはベクトルデータは含まれていませんが、Ingestion pipeline を通じてデータを登録することでベクトルデータが OpenSearch 側で生成・登録されます。
%%time
index_name = "jsquad-neural-search"
response = wr.opensearch.index_df(
client=opensearch_client,
df=valid_df,
use_threads=True,
id_keys=["id"],
index=index_name,
bulk_size=10, # 10 件ずつ書き込み
refresh=False,
pipeline=ingestion_pipeline_id
)
CPU times: user 1.92 s, sys: 501 ms, total: 2.42 s Wall time: 37 s
response["success"] の値が DataFrame の件数と一致しているかを確認します。True が表示される場合は全件登録に成功していると判断できます。
response["success"] == valid_df["id"].count()
True
本ラボではデータ登録時に意図的に Refresh オプションを無効化しているため、念のため Refresh API を実行し、登録されたドキュメントが確実に検索可能となるようにします
index_name = "jsquad-neural-search"
response = opensearch_client.indices.refresh(index_name)
response = opensearch_client.indices.forcemerge(index_name, max_num_segments=1)
パイプラインを通して登録されたドキュメントにベクトルデータが登録されていることを確認します。 _source.question_embedding および _source.context_embedding フィールドに数値配列が格納されていれば、パイプラインによる埋め込み生成とベクトルデータの格納が正常に行われたと判断することができます。
%%time
index_name = "jsquad-neural-search"
payload = {
"size": 10,
"query": {
"match_all": {}
},
}
# 検索 API を実行
response = opensearch_client.search(
body = payload,
index = index_name,
filter_path = "hits.hits"
)
# 結果を表示
pd.json_normalize(response["hits"]["hits"])
CPU times: user 9.99 ms, sys: 0 ns, total: 9.99 ms Wall time: 35.2 ms
_index | _id | _score | _source.question | _source.question_embedding | _source.context | _source.answers | _source.id | _source.context_embedding | |
---|---|---|---|---|---|---|---|---|---|
0 | jsquad-neural-search | a10336p0q0 | 1.0 | 日本で梅雨がないのは北海道とどこか。 | [-0.02515889, 0.011687988, -0.024402501, -0.03... | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [小笠原諸島, 小笠原諸島を除く日本] | a10336p0q0 | [-0.0050909766, 0.0050436184, -0.053343963, -0... |
1 | jsquad-neural-search | a10336p0q1 | 1.0 | 梅雨とは何季の一種か? | [-0.032506354, 0.005247642, -0.027506817, -0.0... | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [雨季] | a10336p0q1 | [-0.0050909766, 0.0050436184, -0.053343963, -0... |
2 | jsquad-neural-search | a10336p0q2 | 1.0 | 梅雨は、世界的にどのあたりで見られる気象ですか? | [-0.017776996, 0.024720104, -0.03772077, -0.00... | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [東アジア, 東アジアの広範囲] | a10336p0q2 | [-0.0050909766, 0.0050436184, -0.053343963, -0... |
3 | jsquad-neural-search | a10336p0q3 | 1.0 | 梅雨がみられるのはどの期間? | [-0.041788705, 0.019765943, -0.036015015, -0.0... | 梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の... | [5月から7月, 5月から7月にかけて] | a10336p0q3 | [-0.0050909766, 0.0050436184, -0.053343963, -0... |
4 | jsquad-neural-search | a10336p1q0 | 1.0 | 入梅は何の目安の時期か? | [-0.010982876, 0.039066855, -0.03545579, -8.36... | 梅雨 [SEP] 梅雨の時期が始まることを梅雨入りや入梅(にゅうばい)といい、社会通念上・気... | [春の終わりであるとともに夏の始まり(初夏), 田植えの時期, 田植えの時期の目安] | a10336p1q0 | [-0.0046906215, 0.036938347, -0.028517464, 0.0... |
5 | jsquad-neural-search | a10336p1q1 | 1.0 | 梅雨明けの別名を何というか。 | [-0.007968731, 0.045498587, -0.059529476, -0.0... | 梅雨 [SEP] 梅雨の時期が始まることを梅雨入りや入梅(にゅうばい)といい、社会通念上・気... | [出梅, 出梅(しゅつばい)] | a10336p1q1 | [-0.004665419, 0.036869112, -0.028484605, 0.01... |
6 | jsquad-neural-search | a10336p10q0 | 1.0 | シベリアから中国大陸にかけての広範囲を冷たく乾燥させる気団は?7 | [-0.0103905825, 0.03669786, -0.04044406, 0.011... | 梅雨 [SEP] 冬の間、シベリアから中国大陸にかけての広範囲を冷たく乾燥したシベリア気団が... | [シベリア気団] | a10336p10q0 | [-0.032264102, -0.011765124, -0.04467337, 0.02... |
7 | jsquad-neural-search | a10336p10q1 | 1.0 | 冬の間、シベリア気団が覆っている範囲はどこか? | [-0.042147983, 0.007449045, -0.036018375, 0.01... | 梅雨 [SEP] 冬の間、シベリアから中国大陸にかけての広範囲を冷たく乾燥したシベリア気団が... | [シベリアから中国大陸, シベリアから中国大陸にかけて] | a10336p10q1 | [-0.032264102, -0.011765124, -0.04467337, 0.02... |
8 | jsquad-neural-search | a10336p10q2 | 1.0 | 冬の間、シベリアから中国大陸にかけての広範囲を覆うものは何気団か | [-0.03716481, 0.0053374995, -0.035008244, 0.01... | 梅雨 [SEP] 冬の間、シベリアから中国大陸にかけての広範囲を冷たく乾燥したシベリア気団が... | [シベリア気団] | a10336p10q2 | [-0.032262914, -0.011764691, -0.044671725, 0.0... |
9 | jsquad-neural-search | a10336p10q3 | 1.0 | 冬の間、シベリアから中国大陸にかけての広範囲を覆う冷たく乾燥した気団は? | [-0.021425376, 0.0131031955, -0.043457296, 0.0... | 梅雨 [SEP] 冬の間、シベリアから中国大陸にかけての広範囲を冷たく乾燥したシベリア気団が... | [シベリア気団] | a10336p10q3 | [-0.032264102, -0.011765124, -0.04467337, 0.02... |
Neural query を使うことで、Search pipeline から埋め込みモデルを呼び出し、ユーザーのクエリデータを OpenSearch 側でベクトルデータに変換してから内部的にベクトル検索を実行することが可能となります。
仕組みは以下の通りです。model_id で指定した埋め込みモデルを使用し、query_text パラメーターに入力されたクエリテキストから生成したベクトルで knn query を実行しています。
以下は question フィールドから生成された question_dense_embedding フィールドに対する Neural query の実行サンプルです。
%%time
index_name = "jsquad-neural-search"
query = "日本で梅雨がない場所は?"
payload = {
"size": 10,
"query": {
"neural": {
"question_embedding": {
"query_text": query,
"model_id": opensearch_embedding_model_id,
"k": 10
}
}
},
"_source" : False,
"fields": ["question", "answers", "context"]
}
# 検索 API を実行
response = opensearch_client.search(
body = payload,
index = index_name,
filter_path = "hits.hits"
)
# 結果を表示
pd.json_normalize(response["hits"]["hits"])
CPU times: user 4.36 ms, sys: 43 μs, total: 4.4 ms Wall time: 46.7 ms
_index | _id | _score | fields.question | fields.answers | fields.context | |
---|---|---|---|---|---|---|
0 | jsquad-neural-search | a10336p24q1 | 0.803610 | [梅雨が日本の中でない地域はどこか。] | [北海道, 東北地方] | [梅雨 [SEP] 年によっては梅雨明けの時期が特定できなかったり、あるいは発表がされないこ... |
1 | jsquad-neural-search | a10336p32q3 | 0.799850 | [梅雨がないとされている都道府県はどこ?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
2 | jsquad-neural-search | a10336p32q2 | 0.799580 | [気候学的には梅雨はないとされている場所は?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
3 | jsquad-neural-search | a10336p0q0 | 0.782569 | [日本で梅雨がないのは北海道とどこか。] | [小笠原諸島, 小笠原諸島を除く日本] | [梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国... |
4 | jsquad-neural-search | a10336p18q0 | 0.773138 | [日本の地域で本格的な長雨に突入しない場所はどこか。] | [北海道] | [梅雨 [SEP] 次に梅雨前線は中国の江淮(長江流域・淮河流域)に北上する。6月下旬には華... |
5 | jsquad-neural-search | a10336p42q4 | 0.669261 | [ほとんど雨が降らない梅雨を何という?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
6 | jsquad-neural-search | a10336p42q2 | 0.667886 | [梅雨の期間中ほとんど雨が降らない場合をなんという?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
7 | jsquad-neural-search | a10336p42q1 | 0.663655 | [梅雨の期間中ほとんど雨が降らない場合を何と呼ぶ?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
8 | jsquad-neural-search | a10336p42q3 | 0.657064 | [ほとんど雨が降らない梅雨を何と呼ぶか] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
9 | jsquad-neural-search | a10336p42q0 | 0.654869 | [梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことをなんというか?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
Neural query を使用することで、クライアントはテキストとモデル ID を渡すだけで、裏でベクトル検索が実行されるようになりました。
ただ、クライアントがモデル ID を検索の都度指定するのは不便に思えます。
そこで、先ほどの Search pipeline を使用して、クライアントがモデル ID を指定せずに Neural query を実行できるようにします。
%%time
index_name = "jsquad-neural-search"
query = "日本で梅雨がない場所は?"
payload = {
"size": 10,
"query": {
"neural": {
"question_embedding": {
"query_text": query,
#model_id の指定は行わない
"k": 10
}
}
},
"_source" : False,
"fields": ["question", "answers", "context"]
}
# 検索 API を実行
response = opensearch_client.search(
body = payload,
index = index_name,
filter_path = "hits.hits",
search_pipeline = search_pipeline_id #新たに追加
)
# 結果を表示
pd.json_normalize(response["hits"]["hits"])
CPU times: user 4.54 ms, sys: 66 μs, total: 4.6 ms Wall time: 31.5 ms
_index | _id | _score | fields.question | fields.answers | fields.context | |
---|---|---|---|---|---|---|
0 | jsquad-neural-search | a10336p24q1 | 0.803610 | [梅雨が日本の中でない地域はどこか。] | [北海道, 東北地方] | [梅雨 [SEP] 年によっては梅雨明けの時期が特定できなかったり、あるいは発表がされないこ... |
1 | jsquad-neural-search | a10336p32q3 | 0.799850 | [梅雨がないとされている都道府県はどこ?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
2 | jsquad-neural-search | a10336p32q2 | 0.799580 | [気候学的には梅雨はないとされている場所は?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
3 | jsquad-neural-search | a10336p0q0 | 0.782569 | [日本で梅雨がないのは北海道とどこか。] | [小笠原諸島, 小笠原諸島を除く日本] | [梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国... |
4 | jsquad-neural-search | a10336p18q0 | 0.773138 | [日本の地域で本格的な長雨に突入しない場所はどこか。] | [北海道] | [梅雨 [SEP] 次に梅雨前線は中国の江淮(長江流域・淮河流域)に北上する。6月下旬には華... |
5 | jsquad-neural-search | a10336p42q4 | 0.669261 | [ほとんど雨が降らない梅雨を何という?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
6 | jsquad-neural-search | a10336p42q2 | 0.667886 | [梅雨の期間中ほとんど雨が降らない場合をなんという?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
7 | jsquad-neural-search | a10336p42q1 | 0.663655 | [梅雨の期間中ほとんど雨が降らない場合を何と呼ぶ?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
8 | jsquad-neural-search | a10336p42q3 | 0.657064 | [ほとんど雨が降らない梅雨を何と呼ぶか] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
9 | jsquad-neural-search | a10336p42q0 | 0.654869 | [梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことをなんというか?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
ベクトル検索の実装 (Amazon SageMaker 編) でも解説した、min_score および max_distance によるフィルタリングは Neural query でも利用可能です。
%%time
index_name = "jsquad-neural-search"
query = "日本で梅雨がない場所は?"
payload = {
"size": 10,
"query": {
"neural": {
"question_embedding": {
"query_text": query,
#model_id の指定は行わない
"min_score": 0.7
}
}
},
"_source" : False,
"fields": ["question", "answers", "context"]
}
# 検索 API を実行
response = opensearch_client.search(
body = payload,
index = index_name,
filter_path = "hits.hits",
search_pipeline = search_pipeline_id #新たに追加
)
# 結果を表示
pd.json_normalize(response["hits"]["hits"])
CPU times: user 4.56 ms, sys: 70 μs, total: 4.63 ms Wall time: 23.6 ms
_index | _id | _score | fields.question | fields.answers | fields.context | |
---|---|---|---|---|---|---|
0 | jsquad-neural-search | a10336p24q1 | 0.803610 | [梅雨が日本の中でない地域はどこか。] | [北海道, 東北地方] | [梅雨 [SEP] 年によっては梅雨明けの時期が特定できなかったり、あるいは発表がされないこ... |
1 | jsquad-neural-search | a10336p32q3 | 0.799850 | [梅雨がないとされている都道府県はどこ?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
2 | jsquad-neural-search | a10336p32q2 | 0.799580 | [気候学的には梅雨はないとされている場所は?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
3 | jsquad-neural-search | a10336p0q0 | 0.782569 | [日本で梅雨がないのは北海道とどこか。] | [小笠原諸島, 小笠原諸島を除く日本] | [梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国... |
4 | jsquad-neural-search | a10336p18q0 | 0.773138 | [日本の地域で本格的な長雨に突入しない場所はどこか。] | [北海道] | [梅雨 [SEP] 次に梅雨前線は中国の江淮(長江流域・淮河流域)に北上する。6月下旬には華... |
%%time
index_name = "jsquad-neural-search"
query = "日本で梅雨がない場所は?"
payload = {
"size": 10,
"query": {
"neural": {
"question_embedding": {
"query_text": query,
#model_id の指定は行わない
"max_distance": 0.3
}
}
},
"_source" : False,
"fields": ["question", "answers", "context"]
}
# 検索 API を実行
response = opensearch_client.search(
body = payload,
index = index_name,
filter_path = "hits.hits",
search_pipeline = search_pipeline_id #新たに追加
)
# 結果を表示
pd.json_normalize(response["hits"]["hits"])
CPU times: user 4.79 ms, sys: 116 μs, total: 4.9 ms Wall time: 23.3 ms
_index | _id | _score | fields.question | fields.answers | fields.context | |
---|---|---|---|---|---|---|
0 | jsquad-neural-search | a10336p24q1 | 0.803610 | [梅雨が日本の中でない地域はどこか。] | [北海道, 東北地方] | [梅雨 [SEP] 年によっては梅雨明けの時期が特定できなかったり、あるいは発表がされないこ... |
1 | jsquad-neural-search | a10336p32q3 | 0.799850 | [梅雨がないとされている都道府県はどこ?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
2 | jsquad-neural-search | a10336p32q2 | 0.799580 | [気候学的には梅雨はないとされている場所は?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
3 | jsquad-neural-search | a10336p0q0 | 0.782569 | [日本で梅雨がないのは北海道とどこか。] | [小笠原諸島, 小笠原諸島を除く日本] | [梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国... |
4 | jsquad-neural-search | a10336p18q0 | 0.773138 | [日本の地域で本格的な長雨に突入しない場所はどこか。] | [北海道] | [梅雨 [SEP] 次に梅雨前線は中国の江淮(長江流域・淮河流域)に北上する。6月下旬には華... |
本ラボでは、ニューラル検索を Ingest pipeline による登録データのテキスト(または画像)→ベクトル変換と、Search pipeline による検索クエリのベクトル変換を組み合わせて実装していきました。
Ingest pipeline と Search pipeline の併用は、実は必須ではありません。以下のようにどちらか一方のみを使用することもできます。
例えば、以下のようなユースケースが考えられます。
以下のサンプルコードでは、ベクトル検索の実装 (Amazon SageMaker 編) で作成した kNN 検索用のインデックスに対して Neural query を実行しています。
%%time
index_name = "jsquad-knn"
query = "日本で梅雨がない場所は?"
payload = {
"size": 10,
"query": {
"neural": {
"question_embedding": {
"query_text": query,
"k": 10
}
}
},
"_source" : False,
"fields": ["question", "answers", "context"]
}
# 検索 API を実行
response = opensearch_client.search(
body = payload,
index = index_name,
filter_path = "hits.hits",
search_pipeline = search_pipeline_id
)
# 結果を表示
pd.json_normalize(response["hits"]["hits"])
CPU times: user 5.34 ms, sys: 225 μs, total: 5.56 ms Wall time: 98.5 ms
_index | _id | _score | fields.question | fields.answers | fields.context | |
---|---|---|---|---|---|---|
0 | jsquad-knn | a10336p24q1 | 0.803372 | [梅雨が日本の中でない地域はどこか。] | [北海道, 東北地方] | [梅雨 [SEP] 年によっては梅雨明けの時期が特定できなかったり、あるいは発表がされないこ... |
1 | jsquad-knn | a10336p32q3 | 0.799814 | [梅雨がないとされている都道府県はどこ?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
2 | jsquad-knn | a10336p32q2 | 0.799580 | [気候学的には梅雨はないとされている場所は?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
3 | jsquad-knn | a10336p0q0 | 0.782644 | [日本で梅雨がないのは北海道とどこか。] | [小笠原諸島, 小笠原諸島を除く日本] | [梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国... |
4 | jsquad-knn | a10336p18q0 | 0.773163 | [日本の地域で本格的な長雨に突入しない場所はどこか。] | [北海道] | [梅雨 [SEP] 次に梅雨前線は中国の江淮(長江流域・淮河流域)に北上する。6月下旬には華... |
5 | jsquad-knn | a10336p42q4 | 0.669258 | [ほとんど雨が降らない梅雨を何という?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
6 | jsquad-knn | a10336p42q2 | 0.667771 | [梅雨の期間中ほとんど雨が降らない場合をなんという?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
7 | jsquad-knn | a10336p42q1 | 0.663624 | [梅雨の期間中ほとんど雨が降らない場合を何と呼ぶ?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
8 | jsquad-knn | a10336p42q3 | 0.657195 | [ほとんど雨が降らない梅雨を何と呼ぶか] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
9 | jsquad-knn | a10336p42q0 | 0.654841 | [梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことをなんというか?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
また、本ラボで構築した Neural search 用のインデックスに対して、knn query を実行することもできます。以下はサンプルコードです。
index_name = "jsquad-neural-search"
query = "日本で梅雨がない場所は?"
def text_to_embedding(text, region_name, embedding_endpoint_name):
payload = {
"inputs": [
query
]
}
body = bytes(json.dumps(payload), 'utf-8')
sagemaker_runtime_client = boto3.client("sagemaker-runtime", region_name=region_name)
response = sagemaker_runtime_client.invoke_endpoint(
EndpointName=embedding_endpoint_name,
ContentType="application/json",
Accept="application/json",
Body=body
)
embeddings = eval(response['Body'].read().decode('utf-8'))
return embeddings[0]
vector = text_to_embedding(text=query, region_name=sagemaker_region, embedding_endpoint_name=embedding_endpoint_name)
k = 10
payload = {
"query": {
"knn": {
"question_embedding": {
"vector": vector,
"k": k
}
}
},
"_source": False,
"fields": ["question", "answers", "context"],
"size": k
}
response = opensearch_client.search(
index=index_name,
body=payload
)
pd.json_normalize(response["hits"]["hits"])
_index | _id | _score | fields.question | fields.answers | fields.context | |
---|---|---|---|---|---|---|
0 | jsquad-neural-search | a10336p24q1 | 0.803610 | [梅雨が日本の中でない地域はどこか。] | [北海道, 東北地方] | [梅雨 [SEP] 年によっては梅雨明けの時期が特定できなかったり、あるいは発表がされないこ... |
1 | jsquad-neural-search | a10336p32q3 | 0.799850 | [梅雨がないとされている都道府県はどこ?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
2 | jsquad-neural-search | a10336p32q2 | 0.799580 | [気候学的には梅雨はないとされている場所は?] | [北海道] | [梅雨 [SEP] 実際の気象としては北海道にも道南を中心に梅雨前線がかかることはあるが、平... |
3 | jsquad-neural-search | a10336p0q0 | 0.782569 | [日本で梅雨がないのは北海道とどこか。] | [小笠原諸島, 小笠原諸島を除く日本] | [梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国... |
4 | jsquad-neural-search | a10336p18q0 | 0.773138 | [日本の地域で本格的な長雨に突入しない場所はどこか。] | [北海道] | [梅雨 [SEP] 次に梅雨前線は中国の江淮(長江流域・淮河流域)に北上する。6月下旬には華... |
5 | jsquad-neural-search | a10336p42q4 | 0.669261 | [ほとんど雨が降らない梅雨を何という?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
6 | jsquad-neural-search | a10336p42q2 | 0.667886 | [梅雨の期間中ほとんど雨が降らない場合をなんという?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
7 | jsquad-neural-search | a10336p42q1 | 0.663655 | [梅雨の期間中ほとんど雨が降らない場合を何と呼ぶ?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
8 | jsquad-neural-search | a10336p42q3 | 0.657064 | [ほとんど雨が降らない梅雨を何と呼ぶか] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
9 | jsquad-neural-search | a10336p42q0 | 0.654869 | [梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことをなんというか?] | [空梅雨, 空梅雨(からつゆ)] | [梅雨 [SEP] 梅雨の期間中ほとんど雨が降らない場合がある。このような梅雨のことを空梅雨... |
ラボを通して、OpenSearch 側でベクトル変換を行うニューラル検索の機能を確認できました。時間がある方は、続いて以下のラボも実施してみましょう。
ダウンロードしたデータセットを削除します。./dataset ディレクトリ配下に何もない場合は、./dataset ディレクトリも合わせて削除します。
%rm -rf {dataset_dir}
%rmdir ./dataset