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

DashVector:ドキュメントのクエリ

最終更新日:Mar 12, 2026

DashVector コレクションで、指定されたベクター、プライマリキー、またはメタデータフィルターに一致するドキュメントを検索します。このページの例では Java SDK を使用します。

検索モード

query メソッドは、指定するパラメーターに応じて、以下の検索モードをサポートします。

モードパラメーターユースケース
ベクター検索vector密ベクトルに最も近いドキュメントを検索
プライマリキー検索idベクター値を再指定せずに、保存されているベクターに類似したドキュメントを検索
フィルター検索vector または id + filterメタデータ条件で類似度結果を絞り込む
密ベクトル + 疎ベクトルのハイブリッド検索vector + sparseVectorセマンティック類似度とキーワード関連性を組み合わせる
フィルターのみのクエリfilter のみ ( vector または id なし)類似度によるランキングなしで、メタデータ条件に一致するドキュメントを取得

前提条件

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

API シグネチャ

DashVectorCollection は、同期と非同期の 2 つのクエリメソッドを提供します。

// 同期
public Response<List<Doc>> query(QueryDocRequest queryDocRequest);

// 非同期
public ListenableFuture<Response<List<Doc>>> queryAsync(QueryDocRequest queryDocRequest);

どちらのメソッドも、QueryDocRequestBuilder で構築された QueryDocRequest オブジェクトを受け入れます。同期メソッドは、結果が返されるまでブロックします。非同期メソッドは、検索が完了したときに解決される ListenableFuture を返します。

以下の例はすべて、quickstart という名前のコレクションをクエリします。いずれかの例を実行する前に、以下を行ってください。

説明
  1. YOUR_API_KEY をご自身の API キーに、YOUR_CLUSTER_ENDPOINT をご利用のクラスターのエンドポイントに置き換えてください。

  2. quickstart コレクションを作成します。「コレクションの作成」の「例」セクションをご参照ください。

  3. コレクションにドキュメントを挿入します。「ドキュメントの挿入」をご参照ください。

ベクターによる検索

密ベクトルを渡して、最も類似したドキュメントを検索します。

import com.aliyun.dashvector.DashVectorClient;
import com.aliyun.dashvector.DashVectorCollection;
import com.aliyun.dashvector.common.DashVectorException;
import com.aliyun.dashvector.models.Doc;
import com.aliyun.dashvector.models.Vector;
import com.aliyun.dashvector.models.requests.QueryDocRequest;
import com.aliyun.dashvector.models.responses.Response;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) throws DashVectorException {
        DashVectorClient client = new DashVectorClient("YOUR_API_KEY", "YOUR_CLUSTER_ENDPOINT");
        DashVectorCollection collection = client.get("quickstart");

        // 4 次元のクエリベクターを構築
        Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build();

        // ベクター値を含め、類似度が最も高い上位 100 件のドキュメントを返す
        QueryDocRequest request = QueryDocRequest.builder()
            .vector(vector)
            .topk(100)
            .includeVector(true)
            .build();

        Response<List<Doc>> response = collection.query(request);
        assert response.isSuccess();

        System.out.println(response);
        // 出力例:
        // {
        //   "code": 0,
        //   "message": "Success",
        //   "requestId": "b26ce0b8-0caf-4836-8136-df889d79ae91",
        //   "output": [
        //     {
        //       "id": "1",
        //       "vector": {
        //         "value": [0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645]
        //       },
        //       "fields": {
        //         "name": "田中太郎",
        //         "age": 20,
        //         "weight": 100.0,
        //         "anykey1": "String",
        //         "anykey2": 1,
        //         "anykey3": true,
        //         "anykey4": 3.1415926
        //       },
        //       "score": 1.1920929E-7
        //     }
        //   ]
        // }
    }
}
説明

注: includeVector(true) を設定すると、各結果にベクターデータが返されます。topk の値が大きい場合にパフォーマンスを向上させるには、生のベクターが必要でない限り、このパラメーターをデフォルト値 ( false ) のままにしてください。

プライマリキーによる検索

ベクター値を再指定せずに、保存されているドキュメントのベクターを使用して検索します。ドキュメント ID を指定し、オプションで返すフィールドを選択します。

QueryDocRequest request = QueryDocRequest.builder()
    .id("1")
    .topk(100)
    .outputFields(Arrays.asList("name", "age"))  // name と age フィールドのみを返す
    .includeVector(true)
    .build();

Response<List<Doc>> response = collection.query(request);
assert response.isSuccess();

メタデータフィルターを使用した検索

ベクター検索またはプライマリキー検索とメタデータフィルターを組み合わせて、結果を絞り込みます。フィルターは SQL の WHERE 句の構文を使用します。

Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build();

QueryDocRequest request = QueryDocRequest.builder()
    .vector(vector)                                // または、プライマリキー検索には .id("1") を使用
    .topk(100)
    .filter("age > 18")                            // SQL の WHERE 句の構文
    .outputFields(Arrays.asList("name", "age"))
    .includeVector(true)
    .build();

Response<List<Doc>> response = collection.query(request);
assert response.isSuccess();

filter パラメーターは、標準の SQL 比較演算子および論理演算子をサポートします。

フィルター式意味
"age > 18"age が 18 より大きいドキュメント
"age >= 18 AND name = 'zhangsan'"age が 18 以上 かつ namezhangsan
"weight < 80 OR age > 30"weight が 80 未満 または age が 30 より大きいドキュメント

フィルター構文の完全なリファレンスについては、「条件付きフィルタリング」をご参照ください。

密ベクトルと疎ベクトルによるハイブリッド検索

密ベクトルと疎ベクトルを組み合わせて、セマンティック類似度とキーワード関連性を融合させます。疎ベクトルは、キーワードを意識したセマンティック検索のためのキーワードの重みを表します。

Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build();

QueryDocRequest request = QueryDocRequest.builder()
    .vector(vector)
    .sparseVector(
        new HashMap<Integer, Float>() {{
            put(1, 0.4f);
            put(10000, 0.6f);
            put(222222, 0.8f);
        }})  // 疎ベクトル:ディメンションインデックス -> 重み
    .build();

Response<List<Doc>> response = collection.query(request);
assert response.isSuccess();

フィルターのみのクエリ

類似度ランキングなしで、メタデータ条件に一致するドキュメントを取得します。このモードを使用するには、vectorid の両方を省略します。

QueryDocRequest request = QueryDocRequest.builder()
    .topk(100)
    .filter("age > 18")
    .outputFields(Arrays.asList("name", "age"))
    .includeVector(true)
    .build();

// ベクターや ID なし -- 結果はメタデータのみでフィルタリングされる
Response<List<Doc>> response = collection.query(request);
assert response.isSuccess();

リクエストパラメーター

QueryDocRequestQueryDocRequestBuilder で構築します。

説明

注: 類似度検索を実行するには、vector または id のいずれかを指定する必要があります。どちらも指定しない場合、クエリは類似度ランキングなしで、filter 条件に一致するドキュメントのみを返します。

メソッド必須デフォルト説明
vector(Vector vector)いいえ-検索対象の密ベクトル
sparseVector(Map<Integer, Float>)いいえ-ハイブリッド検索用の疎ベクトル
id(String id)いいえ-クエリとして使用するベクターを持つ、保存済みドキュメントのプライマリキー
topk(int topk)いいえ10類似度でランク付けされた、返す結果の最大数
filter(String filter)いいえ-SQL の WHERE 句の構文で記述されたメタデータフィルター。「条件付きフィルタリング
includeVector(bool includeVector)いいえfalse応答にベクター値を含めるかどうか。生のベクターが必要ない場合は、パフォーマンス向上のため false に設定します。
partition(String partition)いいえdefault検索対象のパーティション
outputFields(List<String> outputFields)いいえすべてのフィールド応答に含めるメタデータフィールド
outputField(String field)いいえ-応答に単一のメタデータフィールドを追加します。複数回呼び出すことで、さらにフィールドを追加できます。
build()--QueryDocRequest オブジェクトを構築します。

応答パラメーター

説明

query メソッドは、以下のアクセサーを持つ Response<List<Doc>> オブジェクトを返します。

メソッドタイプ説明
getCode()intステータスコード。詳細については、「ステータスコード0
getMessage()Stringステータスメッセージsuccess
getRequestId()Stringトラブルシューティング用の一意のリクエスト ID19215409-ea66-4db9-8764-26ce2eb5bb99
getOutput()List<Doc>類似度スコアでランク付けされた、一致するドキュメント。「Doc[{"id":"9","vector":{"value":[0.9,0.9,0.9,0.9]},"fields":{"name":"java_9","age":9},"score":90}]
isSuccess()Boolean操作が成功したかどうかtrue

関連トピック