0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RAGで検索したのに欲しい情報が出ないとき、まず検索クエリを疑う

0
Posted at

要約

RAG を作っていて「検索したのに欲しい情報が出ない」とき、Vector DB や embedding model 、reranker を見直しがちです。でも、実装していて最初に踏んだのはそこではなく、ユーザーの入力をそのまま検索クエリにしていたことでした。本記事は、trend-to-rule という小さな実装で踏んだ「検索クエリ設計のズレ」の記録です。

踏んだズレ:user prompt をそのまま retrieval query にしていた

trend-to-rule は、流行記事から「共通ルール」を抽出し、それをユーザーが次に見られる形へ戻す実験です。

ここで最初、ユーザーの入力をそのまま検索に使っていました。たとえば、

今っぽいけど浮かない服が知りたい

これは入力としては自然です。でも、検索クエリとしては遠い。

理由は単純で、ユーザーの言葉は「欲しい答えの表現」であって、LLM が回答するために必要な evidence の表現とは限らないからです。検索したいのは、その文そのものではなく、その答えを作るために必要な evidence です。

だから、間に一つ変換を置く必要がありました。

user prompt
  → search intent
  → retrieval query

同じズレが、画像検索でも起きた

trend-to-rule では、抽出した共通ルールを「たとえばこんな服」と画像で見せたかった。そこで、共通ルールをそのまま画像検索に投げた。

落ち着いたベースカラーに、少しゆとりのあるシルエットを合わせる

でも、欲しい画像には届かなかった。共通ルールは判断のための抽象化であって、画像検索に必要なのは色・アイテム・シルエット・スタイル名のような視覚的な手がかりだからです。

つまり、こういう変換が要りました。

共通ルール
  → visual search intent
  → image search query   例: navy relaxed shirt gray wide trousers minimal outfit
  → real examples

一般化すると

user prompt も、共通ルールも、そのまま検索クエリではない。どちらも、間に「検索意図への変換」が必要だった。

ここを同一視すると、起きることは一つです。検索結果を見ながら調整しているつもりで、実際には作った人が横で見て、言い換えて、検索し直している。検索意図の変換を、手作業で補っているだけになります。

だから、変換を Runtime 側の責務として明示的に持つ。それが、この実装で一番効いたところでした。

実装

trend-to-rule では、生成した共通ルールや提案から画像検索用のクエリを作り、画像検索で「たとえばこんな服」に近い例へつなげています。画像そのものを生成するのではなく、抽出したルールを現実の画像例へ接続するための機能です。

もう少し体系的に見たい場合

この「user prompt をそのまま検索クエリにしない」という話は、検索クエリだけでなく retrieved evidence、failure mode、rerank、共通ルール、output boundary まで、RAG の責務を順に分けて Zenn 本にまとめました。本記事はその入口にあたる検索クエリ設計の各論です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?