クエリ構文
URL
curl -X POST /search or curl -X POST /vector-service/search
サンプル URL では、リクエストヘッダーのパラメーターやエンコーディングメソッドなどの情報は省略されています。
サンプル URL では、OpenSearch インスタンスへの接続に使用するエンドポイントも省略されています。
上記の URL に連結されているすべてのリクエストパラメーターの定義、使用方法、および値の例については、このトピックの「リクエストパラメーター」セクションをご参照ください。
プロトコル
HTTP
リクエストメソッド
POST
サポートされているフォーマット
JSON
署名メソッド
次のメソッドを使用して、リクエスト署名を計算できます。リクエスト署名は、認証ヘッダーに格納されます。
パラメーター | 型 | 説明 |
accessUserName | 文字列 | ユーザー名。ユーザー名は、[インスタンスの詳細] ページの [API エンドポイント] セクションで確認できます。 |
accessPassWord | 文字列 | パスワード。[インスタンスの詳細] ページの [API エンドポイント] セクションでパスワードを変更できます。 |
import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;
public class GenerateAuthorization {
public static void main(String[] args) throws Exception {
String accessUserName = "username"; // ユーザー名
String accessPassWord = "password"; // パスワード
String realmStr = "" + accessUserName + ":" + accessPassWord + "";
String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
System.out.println(authorization);
}
}認証ヘッダーの値の有効な形式:
cm9vdDp******mdhbA==HTTP リクエストで認証ヘッダーを指定する場合は、Basic プレフィックスを追加する必要があります。
例:
authorization: Basic cm9vdDp******mdhbA==リクエストパラメーター
パラメーター | 型 | 必須 | デフォルト値 | 説明 |
tableName | 文字列 | はい | デフォルト値なし | クエリ対象のテーブルの名前。 |
knn | オブジェクト | いいえ | デフォルト値なし | k 近傍法 (kNN) クエリパラメーター。 |
knn.vector | リスト [float] | はい | デフォルト値なし | クエリ対象の密ベクトルデータ。 |
knn.topk | int | いいえ | デフォルト値なし | 返される結果の数。 |
knn.filter | String | いいえ | "" | フィルター条件の式。 |
knn.weight | Float | いいえ | 1.0 | kNN クエリ結果の重み。スコアに重みを掛けた結果がソートスコアとして使用されます。 |
text | オブジェクト | いいえ | デフォルト値なし | テキストクエリパラメーター。 |
text.queryString | String | はい | デフォルト値なし | HA3 でサポートされているクエリ句の構文。複数のテキストインデックスで AND 演算子と OR 演算子を使用してネストされた条件をサポートします。 |
text.queryParams | Map<String, String> | いいえ | {} | データクエリの パラメーター:
|
text.filter | String | いいえ | "" | フィルター条件の式。 |
text.weight | Float | いいえ | 1.0 | テキストクエリ結果の重み。スコアに重みを掛けた結果がソートスコアとして使用されます。 |
text.terminateAfter | Integer | いいえ | 0 | 各シャードでクエリ条件を満たすドキュメントの最大数。指定された値に達すると、クエリは終了します。デフォルト値は 0 です。値に制限はありません。 |
size | Integer | いいえ | 100 | 返される結果の数。 |
from | Integer | いいえ | 0 | 結果セット内でドキュメントの返却を開始する値。 |
outputFields | List[String] | いいえ | [] | 結果に返すフィールド。 |
order | String | いいえ | DESC | 結果をソートする順序。
|
rank | オブジェクト | いいえ | {} | 2 つの結果セットをマージするために使用されるポリシー。サポートされているポリシー:
|
使用上の注意
kNN は単一ベクトルクエリのみをサポートし、クエリパラメーターは API クエリのパラメーターと同じです。
ベクトルスコアは変換する必要があります。
kNN スコアとテキストスコアを組み合わせるには、kNN ベクトルスコアを変換する必要があります。
# ユークリッド距離 score = 1.0 / (1.0 + l2_distance^2) # 内積距離 score = (1.0 + ip_distance) / 2.0kNN クエリの order パラメーターは有効になりません。外側のレイヤーの order パラメーターが使用されます。
デフォルトのソート順
構成方法: rank パラメーターを構成しないか、rank パラメーターを空のままにします。
{ "rank": {} }2 つの結果セットでプライマリキーが同じドキュメントのスコアを重みに基づいて結合します。加重スコアに基づいて結果をソートします。
score(i) = knn_score(i) * knn_weight + text_score(i) * text_weight
RRF
構成方法:
{ "rank": { "rrf": { "rankConstant": 60 } } } # rankConstant はオプションです。デフォルト値: 60。式
score = 0.0 if d in result(q): score += 1.0 / (rankConstant + rank(result(q), d)) return score # rankConstant は、結果セット内のドキュメントのランキングが最終スコアに影響を与える程度を決定するソート定数です。値が大きいほど、ランクの低いドキュメントが最終スコアに与える影響が大きくなります。このパラメーターの値は、1 以上の整数である必要があります。デフォルト値: 60。 # rank(result(q), d) は、結果セット内のドキュメントの位置を示し、1 から始まります。
クエリ例
{
"tableName": "test",
"text": {
"queryString": "title:'Alibaba'",
"queryParams": {
"default_op": "OR"
},
"filter": "count > 0",
"terminateAfter": 100000
},
"knn": {
"vector": [0.1, 0.2, 0.3, 0.4, 0.5],
"namespace": "1",
"topK": 100
},
"order": "DESC",
"size": 10,
"rank": {
"rrf": {
"rankConstant": 1
}
},
"outputFields": ["title"]
}返された結果
{
"totalTime": 8.522,
"coveredPercent": 1.0,
"totalCount": 5,
"result": [
{
"__source__": 2,
"score": 0.833333,
"namespace": 1,
"id": 2,
"fields": {
"title": "a b c"
}
},
{
"__source__": 3,
"score": 0.666666,
"namespace": 1,
"id": 1,
"fields": {
"title": "a b"
}
},
{
"__source__": 3,
"score": 0.333333,
"namespace": 2,
"id": 5,
"fields": {
"title": "c"
}
},
{
"__source__": 2,
"score": 0.25,
"namespace": 2,
"id": 4,
"fields": {
"title": "b c"
}
},
{
"__source__": 2,
"score": 0.2,
"namespace": 1,
"id": 0,
"fields": {
"title": "a"
}
}
]
}結果パラメーター:
フィールド | 型 | 説明 |
id | スキーマで構成されたデータ型。 | プライマリキーの値。 |
namespace | スキーマで構成されたデータ型。 | kNN によってクエリされるベクトルインデックスの名前空間。このフィールドは、名前空間が構成されている場合にのみ使用できます。 |
vector | List[Float] | kNN によってクエリされるベクトルインデックスの値。 kNN クエリに "includeVector": true 構成を追加する必要があります。 |
score | Float | ソートのスコア。 |
fields | Map<String, FieldType> | 返されたフィールド。キーと値のペアの形式です。 |
totalTime | Integer | 応答時間。単位: ミリ秒。 |
totalCount | Integer | 返された結果の数。 |
__source__ | Integer | データの取得元のクエリのタイプ。有効な値: 1: kNN クエリ。 2: テキストクエリ。 3: kNN クエリとテキストクエリ。 |
coveredPercent | Float | データの返却に成功したシャードの割合。たとえば、値 1.0 は、すべてのシャードがデータの返却に成功したことを示します。 |