このトピックでは、HTTP API を使用してコレクション内でグループ化された類似性検索を実行する方法について説明します。
前提条件
メソッドと URL
POST https://{Endpoint}/v1/collections/{CollectionName}/query_group_by
例
コードを正しく実行するには、サンプルコードの YOUR_API_KEY を実際の API キーに、YOUR_CLUSTER_ENDPOINT をクラスターのエンドポイントに置き換える必要があります。
この例では、
group_by_demo
という名前のコレクションを使用します。このコレクションの詳細については、「グループ化されたベクトル検索」をご参照ください。
ベクトルを使用してグループ化された類似性検索を実行する
l -XPOST \
-H 'dashvector-auth-token: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"vector": [0.1, 0.2, 0.3, 0.4],
"group_by_field": "document_id",
"group_topk": 1,
"group_count": 3,
"include_vector": true
}' https://YOUR_CLUSTER_ENDPOINT/v1/collections/group_by_demo/query_group_by
サンプル出力は次のとおりです。
{
"code": 0,
"request_id": "d6df634a-683d-445e-abe0-d547091d6b3a",
"message": "Success",
"output": [
{
"docs": [
{
"id": "4",
"vector": [
0.621783971786499,
0.5220040082931519,
0.8403469920158386,
0.995602011680603
],
"fields": {
"document_id": "paper-02",
"content": "xxxD",
"chunk_id": 2
},
"score": 0.028402328
}
],
"group_id": "paper-02"
},
{
"docs": [
{
"id": "1",
"vector": [
0.26870301365852356,
0.8718249797821045,
0.6066280007362366,
0.6342290043830872
],
"fields": {
"document_id": "paper-01",
"content": "xxxA",
"chunk_id": 1
},
"score": 0.08141637
}
],
"group_id": "paper-01"
},
{
"docs": [
{
"id": "6",
"vector": [
0.661965012550354,
0.730430006980896,
0.6105219721794128,
0.22164000570774078
],
"fields": {
"document_id": "paper-03",
"content": "xxxF",
"chunk_id": 1
},
"score": 0.2513085
}
],
"group_id": "paper-03"
}
]
}
プライマリキーに関連付けられたベクトルを使用してグループ化された類似性検索を実行する
curl -XPOST \
-H 'dashvector-auth-token: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"id": "1",
"group_by_field": "document_id",
"group_topk": 1,
"group_count": 3,
"include_vector": true
}' https://YOUR_CLUSTER_ENDPOINT/v1/collections/group_by_demo/query_group_by
ベクトルまたはプライマリキーと条件付きフィルターを使用してグループ化された類似性検索を実行する
curl -XPOST \
-H 'dashvector-auth-token: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"filter": "chunk_id > 1",
"group_by_field": "document_id",
"group_topk": 1,
"group_count": 3,
"include_vector": true
}' https://YOUR_CLUSTER_ENDPOINT/v1/collections/group_by_demo/query
密ベクトルと疎ベクトルの両方を使用してグループ化された検索を実行する
curl -XPOST \
-H 'dashvector-auth-token: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"vector": [0.1, 0.2, 0.3, 0.4],
"sparse_vector":{"1":0.4, "10000":0.6, "222222":0.8},
"group_by_field": "document_id",
"group_topk": 1,
"group_count": 3,
"include_vector": true
}' https://YOUR_CLUSTER_ENDPOINT/v1/collections/group_by_demo/query
リクエストパラメーター
vector
または id
パラメーターを指定する必要があります。
パラメーター | 場所 | タイプ | 必須 | 説明 |
{Endpoint} | path | str | はい | クラスターのエンドポイント。エンドポイントは、コンソールの クラスターの詳細 ページで確認できます。 |
{CollectionName} | path | str | はい | コレクションの名前。 |
dashvector-auth-token | header | str | はい | API キー。 |
group_by_field | body | str | はい | グループ化された検索を実行するフィールドの名前。スキーマフリーフィールドはサポートされていません。 |
group_count | body | int | いいえ | 返されるグループの最大数。これはベストエフォートパラメーターです。一般的に、指定された数のグループが返されます。 |
group_topk | body | int | いいえ | グループごとに返される類似結果の数。これはベストエフォートパラメーターであり、group_count よりも優先順位が低くなります。 |
vector | body | array | いいえ | ベクトル。 |
sparse_vector | body | dict | いいえ | 疎ベクトル。 |
id | body | str | いいえ | プライマリキー。プライマリキーに関連付けられたベクトルに基づいて類似性検索が実行されます。 |
filter | body | str | いいえ | 条件付きフィルター。SQL WHERE 句の構文に準拠している必要があります。詳細については、「条件付きフィルタリング」をご参照ください。 |
include_vector | body | bool | いいえ | ベクトルを返すかどうかを指定します。デフォルト値:false。 |
output_fields | body | array | いいえ | 返されるフィールドのリスト。デフォルトではすべてのフィールドが返されます。値が [] の場合、フィールドは返されません。 |
partition | body | str | いいえ | パーティションの名前。 |
レスポンスパラメーター
パラメーター | タイプ | 説明 | 例 |
code | int | 返されたステータスコード。詳細については、「ステータスコード」をご参照ください。 | 0 |
message | str | 返されたメッセージ。 | success |
request_id | str | リクエストの一意の ID。 | 19215409-ea66-4db9-8764-26ce2eb5bb99 |
output | array | グループ化された類似結果。詳細については、「データ型」トピックの「グループ」セクションをご参照ください。 |