すべてのプロダクト
Search
ドキュメントセンター

DashVector:グループ化された取得

最終更新日:Apr 02, 2026

単一のグループ化されたクエリで、ドキュメントごとに最も関連性の高いチャンクを取得します。結果は、指定したフィールド (例: document_id) によって整理されるため、各グループは最も一致するチャンクのみを表示します。これは、検索拡張生成 (RAG) パイプラインで特に有用です。RAG パイプラインでは、同じファイルからの複数のフラグメントではなく、ソースドキュメントごとに1つの代表的な結果が必要となります。

前提条件

開始する前に、以下があることを確認してください。

エンドポイント

POST https://{Endpoint}/v1/collections/{CollectionName}/query_group_by

注意事項

  • リクエストボディで vector または id のいずれかを指定します。少なくとも1つは必須です。

  • group_by_field はスキーマフリーフィールドをサポートしていません。定義されたスキーマを持つフィールドのみが受け入れられます。

  • group_countgroup_topk はベストエフォート型パラメーターです。サービスはこれらを尊重するために合理的な試みを行いますが、正確な結果は保証されません。group_topkgroup_count よりも優先度が低いです。

すべての例は group_by_demo コレクションを使用しています。このコレクションの設定方法の詳細については、「グループ化されたベクター検索」をご参照ください。

例を実行する前に、YOUR_API_KEY をご利用の API キーに、YOUR_CLUSTER_ENDPOINT をご利用のクラスターエンドポイントに置換します。

ベクターによる検索

密ベクターを送信して、グループごとに最も一致するチャンクを見つけます。

curl -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

応答は output の下に結果をグループ化し、各エントリには group_iddocs 配列が含まれます。

{
    "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 '{
    "filter": "chunk_id > 1",          // 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

条件付きフィルターによる検索

グループ化する前に候補セットを絞り込むために filter を追加します。フィルターは SQL WHERE 句の構文に従う必要があります。

curl -XPOST \
  -H 'dashvector-auth-token: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "filter": "chunk_id > 1",          // 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

リクエストパラメーター

パラメーターロケーションタイプ必須説明
{Endpoint}pathstrYesクラスターエンドポイント。コンソールの「クラスター詳細」ページで確認できます。
{CollectionName}pathstrYesコレクションの名前。
dashvector-auth-tokenheaderstrYesAPI キー。
group_by_fieldbodystrYes結果をグループ化するフィールド。スキーマフリーフィールドはサポートされていません。
group_countbodyintNo返されるグループの最大数。ベストエフォート型であり、正確な数は保証されません。
group_topkbodyintNoグループごとの結果の最大数。ベストエフォート型であり、group_count よりも優先度が低いです。
vectorbodyarrayNo密クエリベクター。id が指定されていない場合は必須です。
sparse_vectorbodydictNo疎クエリベクター。
idbodystrNoプライマリキー。類似検索では、このキーに保存されているベクターが使用されます。vector が指定されていない場合は必須です。
filterbodystrNoSQL WHERE 句の構文を使用した条件付きフィルター。詳細については、「条件付きフィルタリング」をご参照ください。
include_vectorbodyboolNo応答にベクターを含めるかどうかを指定します。デフォルト: false
output_fieldsbodyarrayNo各結果に含めるフィールド。デフォルトではすべてのフィールドが返されます。フィールドを返さない場合は [] を渡します。
partitionbodystrNo検索対象のパーティションの名前。

応答パラメーター

パラメータータイプ説明
codeint状態コード。「状態コード」をご参照ください。0
messagestr状態メッセージ。success
request_idstrリクエスト ID。19215409-ea66-4db9-8764-26ce2eb5bb99
outputarrayグループ化された結果。各エントリには group_iddocs 配列が含まれます。「データ型」のグループセクションをご参照ください。