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

DashVector:キーワード認識型検索

最終更新日:Apr 01, 2026

キーワード認識型セマンティック検索は、キーワード一致と意味理解を単一の DashVector クエリに組み合わせます。疎ベクトル (ターム頻度用) と密ベクトル (意味理解用) の両方を単一のコレクションに保存することで、2つの個別の検索システムを実行することなく、より強力な再現率を実現します。

基本概念

疎ベクトルは、キーワードとターム頻度を表します。これらは、ほとんどがゼロ値で、いくつかの非ゼロ値を含み、ドキュメント内の各キーワードに1つずつ対応します。DashVector では、疎ベクトル {1:0.4, 10000:0.6, 222222:0.8} は3つのキーワード (要素 1、10000、222222) を持ち、その値は重みです。

密ベクトルは、コンテンツの意味理解を表します。埋め込みモデルは、テキストを固定長の浮動小数点数配列に変換し、キーワード一致では捉えられない概念的な関係をキャプチャします。

疎ベクトル密ベクトル
表現するものキーワードとターム頻度意味情報
構造ほとんどがゼロ、少数の非ゼロ値ほとんどが非ゼロ値
使用技術転置インデックス、TF-IDF、BM25埋め込みモデル
強み正確なターム一致概念的類似性
ギャップの例「激しい雨」と「土砂降りの雨」を一致させることができないトレーニングされていない場合、"rice irrigating" を "irrigating rice" にマッチできません

キーワード認識型セマンティック検索は、両方のギャップを同時に解消します。各結果の最終スコアは、クエリベクトルとドキュメントベクトルの内積であり、密ベクトルと疎ベクトルのスコアが合計されます。

キーワード認識型セマンティック検索を使用するタイミング

キーワード認識型セマンティック検索は、次の場合に使用します。

  • クエリが自然言語と特定のターム (製品名、エラーコード、ID) を組み合わせる場合

  • ユーザーがイディオム、同義語、または言い換えられた概念を検索する場合

  • コーパスが正確なキーワード再現率とコンテキスト理解の両方を必要とする場合

前提条件

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

キーワード認識型セマンティック検索の実行

以下の手順では、コレクションを作成し、両方のベクトルタイプを持つドキュメントを挿入し、ハイブリッドクエリを実行します。

重要

metric='dotproduct' を使用するコレクションのみが疎ベクトルをサポートします。

ステップ 1: コレクションの作成

import dashvector

# Replace YOUR_API_KEY with your API key (see Manage API keys).
# Replace YOUR_CLUSTER_ENDPOINT with your cluster endpoint (see the cluster details page).
client = dashvector.Client(
    api_key='YOUR_API_KEY',
    endpoint='YOUR_CLUSTER_ENDPOINT'
)

# dimension=4 is used here for simplicity.
# Set this to match your actual embedding model's output dimension.
ret = client.create('hybrid_collection', dimension=4, metric='dotproduct')

collection = client.get('hybrid_collection')
assert collection

ステップ 2: 疎ベクトルを持つドキュメントの挿入

from dashvector import Doc

collection.insert(Doc(
    id='A',
    vector=[0.1, 0.2, 0.3, 0.4],
    sparse_vector={1: 0.3, 10: 0.4, 100: 0.3}
))

sparse_vector フィールドは、キーワード ID をその重みにマッピングします。DashText のような疎エンコーダーを使用して、生テキストからこれらを生成します。詳細については、「疎ベクトルエンコーダー」をご参照ください。

ステップ 3: 両方のベクトルタイプでのクエリ

同じクエリで vectorsparse_vector の両方を渡します。DashVector は、両方のベクトルタイプからの内積を合計して、各結果をスコアリングします。

docs = collection.query(
    vector=[0.1, 0.1, 0.1, 0.1],
    sparse_vector={1: 0.3, 20: 0.7}
)

結果は、結合された内積スコアによってランク付けされます。スコアが高いほど関連性が高くなります。

疎ベクトルエンコーダー

DashText は、DashVector に推奨される疎ベクトルエンコーダーです。生テキストを上記の sparse_vector 形式に変換します。セットアップ手順については、「DashText クイックスタート」をご参照ください。

次のステップ