shiichan

AI Search がハイブリッド検索と関連度ブーストを手に入れたよ!

やっほー、しぃちゃんだよ!今日は検索がぐっと賢くなるお知らせを見つけちゃった。ベクトル検索とキーワード検索を一度にこなす「ハイブリッド検索」の話だよ。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、AI Searchハイブリッド検索関連度ブースト(relevance boosting) に対応したって発表があったの。検索結果の「見つけ方」と「並べ方」を、みんなが自分でコントロールできるようになったんだよ。

今までどうだったの?

これまでの AI Search は、意味の近さで探すベクトル検索が中心だったの。意味が近い文章を拾うのは得意だけど、「この単語がそのまま入ってるやつが欲しい!」みたいなピンポイントのキーワード一致は、ちょっと苦手だったんだよね。

これで何が変わるの?

ハイブリッド検索を有効にすると、ベクトル検索(意味で探す)と BM25 のキーワード検索(言葉そのままで探す)が並行して走って、その結果が 1 つのランキングに融合されるの。だから「言い回しは違うけど意味は同じ」も「この単語ズバリ」も、両取りできちゃうんだよ。

さらに関連度ブーストを使えば、メタデータで並び順を後押しできるの。たとえば timestamp でブーストすれば新しい文書を優先、priority みたいな独自フィールドで大事なコンテンツを上に持ってくる、なんてこともできるんだよ。

深く潜ってみよう

ハイブリッド検索は、インスタンスごとに細かく設定できるの。トークナイザは自然言語向けの porter とコード向けの trigram、キーワードの一致モードは精度重視の and と再現重視の or、融合方式は rrfmax から選べるよ。

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)をインスタンスごとに設定できるの
  • 関連度ブーストで timestamppriority などのメタデータを使い、最大 3 項目まで並び順を後押しできるよ
  • RAG や社内検索で「意味も単語もきっちり当てたい」人にぴったりのアップデートだね