メタデータフィルタとは
Metadata Filter / メタデータフィルタリング
文書に付随するメタデータの条件でベクトル検索の対象を絞り込む仕組み
ひとことで言うと
日付や種類などの付加情報を条件にして、検索対象を絞り込む仕組み。
概要
メタデータフィルタとは、ベクトル検索する際に、文書に付随するメタデータ(作成日・カテゴリ・著者・アクセス権限等)の条件を指定して検索対象をあらかじめ絞り込む仕組み。 埋め込みベクトルの類似度だけでは「最新の文書に限定する」「特定のカテゴリだけを対象にする」「特定ユーザーが閲覧権限を持つ文書だけを返す」といった要件を満たせないため、多くのベクトルデータベースがベクトル類似度検索とメタデータによる条件絞り込みを組み合わせて実行できる機能を提供している。 アクセス権限に基づくフィルタリングは、本来閲覧権限のないユーザーへ文書内容がLLMの回答を通じて漏れることを防ぐセキュリティ上の要件としても重要。
背景
埋め込みベクトルは文書の意味的な内容を表現するが、日付やアクセス権限といった構造化された属性情報までは表現しない。 実運用のRAGシステムでは、意味的な関連性に加えてこうした構造化属性による絞り込みが必要になる場面が多く、メタデータフィルタはこの需要へ応えるために整備された。
アーキテクチャ
各ベクトルに、文書ID・カテゴリ・作成日・アクセス権限といったメタデータをキーと値のペアで付与して格納する。 検索時には、メタデータに対する条件式(等号・範囲・所属集合等)を指定し、その条件を満たすベクトルの集合内でのみ類似度を計算する(プレフィルタリング)か、類似度検索の結果に事後的に条件を適用する(ポストフィルタリング)。
コード例
メタデータ条件を指定してベクトル検索を絞り込む
index.query(
vector=query_embedding,
top_k=5,
filter={
"category": {"$eq": "faq"},
"created_at": {"$gte": "2025-01-01"},
},
)利点
- 意味的な類似度だけでは表現できない、日付やアクセス権限等の構造化条件を検索に組み込める
- マルチテナントのアプリケーションで、テナントやユーザーごとに検索範囲を分離できる
- 検索対象の候補数をあらかじめ絞ることで、無関係な結果の混入を防ぎやすい
欠点
- フィルタ条件を厳しくしすぎると候補数が少なくなりすぎ、十分な検索結果を得にくくなる
- プレフィルタリングの実装によっては、フィルタ処理がボトルネックとなり検索速度に影響することがある
- メタデータのスキーマ設計やインデックス設定を誤ると、期待通りに絞り込めない場合がある
比較
- ベクトルデータベース — メタデータフィルタは、多くのベクトルデータベースが提供するベクトル類似度検索を補完する機能
- ハイブリッド検索 — メタデータフィルタは構造化属性による絞り込み、ハイブリッド検索は検索アルゴリズム自体の組み合わせという点で目的が異なる
関連用語
よくある質問
メタデータフィルタとハイブリッド検索の違いは?
メタデータフィルタは日付やカテゴリ等の構造化属性による絞り込み。 ハイブリッド検索はセマンティック検索とキーワード検索という検索アルゴリズム自体の組み合わせ。 両者は組み合わせて使うことも多い。
アクセス権限によるフィルタリングはなぜ重要?
RAGシステムがLLMの回答を通じて、本来閲覧権限のないユーザーへ機密文書の内容を漏らしてしまうことを防ぐため、検索段階でアクセス権限に基づく絞り込みを行う必要がある。
参考文献
- DocumentationPinecone: Metadata Filtering