意味検索は意味的に近い結果を返しますが、必ずしもユーザーが意図した質問に答えるとは限りません。人間は違いを見分けて的外れな結果をスキップできますが、エージェントはそれができません。返ってきた結果を真実として受け取り、誰も事前にチェックしないまま行動を開始します。
そのギャップが最も顕著に現れるのは暗黙のコンテキストです。クエリは質問者には完全に明確でも、システムが正しく回答するために必要な情報が欠けていることがあります。この記事では、Hugging Face の 10,000 件の CNN ニュース記事(2022~2024 年)の公開データセットを使用し、各記事のテキストとトピックラベルをメタデータとして保存して、Pinecone の新しいテキストマッチフィルターが、データセットに事前ラベル付けを必要とせずにこの問題を解決する方法を示します。
曖昧性の問題
「大統領候補は誰ですか?」というクエリを考えます。米国のユーザーがこれを行う場合、ほぼ間違いなく米国大統領選挙を意味しています。しかし、クエリにはその旨が明示されていません。
ベクトル検索だけでは以下の結果が返されます:
| 順位 | 記事ID | スコア | 抜粋 | |------|--------|-------|------| | 1 | 3433 | 0.8168 | 4月23日に11名の大統領候補による初回投票が行われます。ルペンとマクロンが優勢と見られ... | | 2 | 8054 | 0.8138 | フランスの主要政党の大統領候補は決選投票に進めませんでした。人気候のエマニュエル・マクロン... | | 3 | 3421 | 0.8130 | フランスは日曜日に大統領選挙の第1回投票を実施します。候補者たちは政治... |
これらはすべてフランス選挙に関するものであり、ユーザーが実際に尋ねたかった質問には答えていません。
明白な修正方法は、ユーザーにクエリを「米国の大統領候補」と書き換えてもらうことですが、これには2つのコストが伴います。第一に、正確なクエリを書く負担をユーザーに押し付けることです。第二に、エージェントパイプラインでは、最初の検索が悪いと、その後のツール呼び出しも無駄になり、エラーが蓄積します。
メタデータフィルタリングで国による制限は可能ですが、すべてのレコードをあらゆる次元(国、選挙年、地方/全国選挙)に対して事前にラベル付けする必要があります。後からフィルター次元が判明した場合、データセット全体の再処理が必要になり、生産システムでは数十億のレコードに及ぶ可能性があります。
解決策:テキストマッチフィルタリング
Pinecone の全文検索(現在パブリックプレビュー中)はテキストマッチフィルターをサポートしています。これは語彙クエリであり、アプリケーションが処理する必要があるすべてのケースに対して事前にメタデータをラベル付けすることなく、意味検索の候補プールを特定のテキストに一致するレコードに制限します。
同じクエリに「United States」のテキストマッチフィルターを適用すると、結果は次のように変わります:
| 順位 | 記事ID | スコア | 抜粋 | |------|--------|-------|------| | 1 | 5326 | 0.8012 | (CNN) ジョー・バイデン前副大統領はスーパーチューズデーに南部各州で勝利を収めましたが、バーモント州選出のバーニー・サンダース上院議員... | | 2 | 7641 | 0.7992 | (CNN) ヒューマン・ライツ・キャンペーン財団は木曜日、カリフォルニア州でCNN民主党大統領候補タウンホールを開催すると発表しました... | | 3 | 9859 | 0.7987 | (CNN) ドナルド・トランプ大統領と民主党大統領候補ジョー・バイデンは、一連の政策に対して非常に異なる立場を取っています... |
クエリ、モデル、インデックスは上記の検索と同一です。唯一の違いは、ベクトル検索の前に候補プールが「United States」を含むレコードに制限されたことです。
一般化できる場面
ニュース検索では曖昧さがわかりやすいですが、同じパターンはクエリが暗黙のコンテキストを前提とするあらゆる場面で発生します:機械番号やエラーコードに限定された産業用マニュアル、保険金請求をポリシー番号や種類に限定、法務検索を事件や管轄に限定など。ほとんどの意味検索アプリケーションは、クエリが何らかの情報を省略するため、このバージョンに遭遇します。
これらのフィルターは連鎖します:ブール演算子と組み合わせたり、メタデータフィルターと積み重ねたり、他のフィールドに対してテキストマッチフィルターを追加したりすることで、1つのクエリで複数の次元にわたって候補プールを絞り込めます。
エージェントアプリケーションへの影響
エージェントには、意味的に近い結果が実際にタスクに適しているかどうかを再確認するステップがありません。必要なフィルタリングは、結果がエージェントに届く前に実行される必要があります。テキストマッチフィルタリングは、アプリケーションが最終的に必要とするすべてのフィルターに対してデータセットを事前ラベル付けする必要なく、その修正をクエリ自体に組み込みます。誤った検索が無駄なツール呼び出しの連鎖につながるパイプラインでは、クエリ時に候補プールを絞り込む方が、後になってエラーを捕捉するよりもコストが低くなります。