ベクトルの検索(query)

ベクトルデータベースPineconeの「ベクトルの操作」における「ベクトルの検索(query)」は、指定したベクトルに最も近い類似ベクトルをインデックスから取得する処理を指します。これは、**最近傍検索(Nearest Neighbor Search)**としても知られており、レコメンデーション、検索エンジン、RAG(Retrieval-Augmented Generation)などの応用で中心的な機能です。


1. 基本構文(Python SDKの場合)

python
query_response = index.query( vector=[0.1, 0.2, 0.3, ..., 0.n], # 検索したいクエリベクトル top_k=5, # 類似度が高い上位k件を取得 namespace="default", # 対象とする名前空間 include_values=True, # 元のベクトル値を含めるか include_metadata=True # メタデータ(タグ情報)を含めるか )

2. パラメータの詳細

パラメータ 説明
vector 検索対象となるベクトル(リストまたはNumPy配列)。インデックスの次元と一致している必要があります。
top_k 上位何件の類似ベクトルを返すかを指定します。例えばtop_k=5なら5件取得します。
namespace 検索対象のデータを限定するための論理的な区切り。指定しない場合は”default”。
include_values 検索結果に元のベクトル値を含めるか(True/False)。
include_metadata 検索結果に格納時のメタデータを含めるか(True/False)。

3. 返却されるデータ構造の例

json
{ "matches": [ { "id": "item-123", "score": 0.98, "values": [...], "metadata": { "title": "文書A", "category": "技術" } }, ... ], "namespace": "default" }
  • id: 類似ベクトルの一意な識別子

  • score: 類似度スコア(通常は1に近いほど類似)

  • values: (省略可能)格納されたベクトルの値

  • metadata: (省略可能)格納時に付与したメタデータ


4. 類似度計算方式

検索は、インデックス作成時に設定した metric に基づいて実行されます。以下のような距離尺度が使用可能です。

  • cosine: コサイン類似度(角度ベース、主に意味的類似に強い)

  • dotproduct: 内積(大きさと方向の両方に基づく)

  • euclidean: ユークリッド距離(空間的な距離)


5. 応用例

  • 意味的検索(Semantic Search):自然言語文をベクトル化し、類似文書を検索

  • レコメンデーション:ユーザーの行動をベクトル化し、近い製品を提案

  • RAGモデルとの連携:クエリ文をベクトル化して、文書ベクトルから関連部分を取得


6. 注意点

  • クエリベクトルの次元数は、インデックス作成時の dimension と一致していなければなりません。

  • インデックスのタイプやスケーリング設定により、検索精度や速度に差が出ます。

ChatGPT4o 生成日:2025/06/20