概要
多様化かつ複雑化するビジネス要件に対応するため、OpenSearchはベクトル検索機能を提供しています。特定のシナリオ、特にテスト問題検索や画像検索シナリオでは、ベクトル検索機能をマルチモーダル検索機能と併用することで、検索結果の精度を向上させることができます。このトピックでは、ベクトルインデックスの構文と使用上の注意について説明します。
構文
query = vector_index:'Vector'
Example: 64次元ベクトルインデックスを使用してデータをクエリする
vector: '0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'
例
指定したしきい値を含むクエリの構文
説明: スコアが指定した下限しきい値よりも低い場合、または指定した上限しきい値よりも高い場合、ベクトルが取得プロセスに関与しないことを指定します。
パラメーター形式: &sf=number
例:
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&sf=0.8'
上位 N 個のベクトルをクエリする構文
説明: 返される上位 N 個のベクトルを指定します。
パラメーター形式: &n=number
N パラメーターをベクトルの後に連結します。
例:
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
ベクトルのスコアに基づいて結果を並べ替えるクエリの構文
説明: 並べ替え式で proxima_score ()
関数を指定して、ベクトルのスコアに基づいてクエリ結果を並べ替えます。
手順:
詳細な並べ替えポリシーを作成します。
注: proxima_score 関数のパラメーターとしてベクトルインデックスの名前を指定します。
次の図は、作成された詳細な並べ替えポリシーを使用して、検索テストページでテストを実行する方法を示しています。
ベクトル距離は2つのタイプをサポートしています。デフォルトでは、システムはユークリッド距離 (l2) を距離のタイプとして採用します。
内積距離 (ip): ベクトルのスコアが大きいほど、ドキュメントの関連性が高くなります。
ユークリッド距離 (l2): ベクトルのスコアが小さいほど、ドキュメントの関連性が高くなります。
使用上の注意
デフォルトでは、ベクトルインデックスが構築されるときに、システムはユークリッド距離 (l2) をベクトル距離のタイプとして採用します。内積距離 (ip) を採用する場合は、内積距離タイプのベクトルを正規化してから、エンジンにデータを渡す必要があります。
ベクトルインデックスは、DOUBLE_ARRAY タイプのフィールドにのみ適用できます。
OpenSearch は、64 次元、128 次元、256 次元、および 512 次元のベクトルアナライザーをサポートしています。DOUBLE_ARRAY タイプのフィールドには、各タイプのベクトルアナライザーと一致するように、64、128、256、または 512 個の要素も含まれている必要があります。
ベクトルインデックスの最大長は、エンコード前は 4 KB です。1 つのクエリは最大 2 つのベクトルインデックスをサポートします。