AI Search がハイブリッド検索と関連度ブーストを手に入れたよ!
やっほー、しぃちゃんだよ!今日は検索がぐっと賢くなるお知らせを見つけちゃった。ベクトル検索とキーワード検索を一度にこなす「ハイブリッド検索」の話だよ。
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog で、AI Search が ハイブリッド検索 と 関連度ブースト(relevance boosting) に対応したって発表があったの。検索結果の「見つけ方」と「並べ方」を、みんなが自分でコントロールできるようになったんだよ。
今までどうだったの?
これまでの AI Search は、意味の近さで探すベクトル検索が中心だったの。意味が近い文章を拾うのは得意だけど、「この単語がそのまま入ってるやつが欲しい!」みたいなピンポイントのキーワード一致は、ちょっと苦手だったんだよね。
これで何が変わるの?
ハイブリッド検索を有効にすると、ベクトル検索(意味で探す)と BM25 のキーワード検索(言葉そのままで探す)が並行して走って、その結果が 1 つのランキングに融合されるの。だから「言い回しは違うけど意味は同じ」も「この単語ズバリ」も、両取りできちゃうんだよ。
さらに関連度ブーストを使えば、メタデータで並び順を後押しできるの。たとえば timestamp でブーストすれば新しい文書を優先、priority みたいな独自フィールドで大事なコンテンツを上に持ってくる、なんてこともできるんだよ。
深く潜ってみよう
ハイブリッド検索は、インスタンスごとに細かく設定できるの。トークナイザは自然言語向けの porter とコード向けの trigram、キーワードの一致モードは精度重視の and と再現重視の or、融合方式は rrf か max から選べるよ。
const instance = await env.AI_SEARCH.create({
id: "my-instance",
index_method: { vector: true, keyword: true },
fusion_method: "rrf",
indexing_options: { keyword_tokenizer: "porter" },
retrieval_options: { keyword_match_mode: "and" },
});
関連度ブーストは 1 インスタンスあたり最大 3 つのブースト項目を設定できて、リクエストごとに上書きもできるの。
const results = await env.AI_SEARCH.get("my-instance").search({
messages: [{ role: "user", content: "deployment guide" }],
ai_search_options: {
retrieval: {
boost_by: [
{ field: "timestamp", direction: "desc" },
{ field: "priority", direction: "desc" },
],
},
},
});
仕組みの全体像は 検索モード のページ、細かい設定は ハイブリッド検索 と 関連度ブースト のドキュメントを見てね。
まとめ
- AI Search がハイブリッド検索に対応、ベクトル検索と BM25 キーワード検索を 1 クエリで融合できるようになったよ
- トークナイザ・一致モード・融合方式(
rrf/max)をインスタンスごとに設定できるの - 関連度ブーストで
timestampやpriorityなどのメタデータを使い、最大 3 項目まで並び順を後押しできるよ - RAG や社内検索で「意味も単語もきっちり当てたい」人にぴったりのアップデートだね