osFoundry / Platform
MMR多様性
Maximal Marginal Relevanceが、トップマッチだけでなく異なる視点をカバーする結果を選びます。
概要
MMR多様化は、ナレッジベースへの問い合わせ時にMaximal Marginal Relevanceを適用するosFoundryの検索ステージです。単純な関連度順の並べ替えには、よく知られた弱点があります。上位の結果が互いにほぼ重複しやすいのです。どれも同じ観点で問い合わせに一致するため、そうなります。同じ段落を言い換えただけのチャンクが5件並べば、そのうち4件はコンテキストウィンドウを無駄に消費し、モデルは問いに対する第二、第三の観点を目にしないまま終わります。MMRは、各候補を問い合わせとの関連度と、すでに選ばれたチャンクとの非類似度の両方で採点し、関連していて、なおかつ互いに異なる結果を選ぶことで、この弱点を解消します。
osFoundryでは、MMRはosStudioのチャットPathごとに組み立てるカスタムRAGパイプラインの一ステージです。問い合わせはまずハイブリッド検索(埋め込み検索とBM25キーワード検索)を通ります。そこにフィルタとリランクのステージを追加し、その後ろにMMRを置けば、すでに質の高い候補集合をさらに多様化できます。このステージは標準的なMMRの制御項目を備えています。純粋な関連度と純粋な多様性のあいだをスライドさせるlambdaパラメータ、選び出す候補プールのサイズ、そしてプロンプトへ渡すチャンク数です。どのステージもバージョン管理され、JSON Schemaで検証される設定なので、コードチャット用のPathとカスタマーサクセス用のPathで異なる多様化ができ、ソースコードに触れずに変更を巻き戻せます。
この効果が最も大きいのは、範囲の広い問いやあいまいな問い、そして語彙が重なるコーパスで、上位の埋め込みヒットが密に固まる場合です。MMRはtop-1の生の関連度をわずかに譲る代わりにカバー範囲を得ます。モデルがナレッジベースに実際に含まれる内容の幅を目にするため、たいていはより根拠のある回答につながります。osFoundryのBYOKかつローカルファーストの姿勢とも一貫しています。検索と多様化はワークスペース内で動き、埋め込みはマネージドのVoyageプロキシまたは自分のキーを通り、パイプラインにシート課金の壁はありません。
主な機能
- 検索パイプラインにMMR(Maximal Marginal Relevance)ステージを追加し、関連度と重複を釣り合わせます。上位結果が最上位ヒットの言い換えに終始せず、異なる観点を拾うようになります
- osStudioでPathごとにMMRを設定できます。関連度と多様性のトレードオフを決めるlambda、候補プールのサイズ、最終的にプロンプトへ渡すチャンク数を指定します
- retrieve、filter、rerankの各ステージの後ろに連結するため、生の埋め込みヒットではなく、すでにランク付けされた候補集合を多様化します
- ハイブリッドな埋め込み検索とBM25検索の結果に対して動作します。Voyageの埋め込みはマネージドプロキシまたはBYOKの自前キーで利用できます
- MMR設定はいずれもJSON Schemaで検証されバージョン管理されるosStudio設定で、ロールバックも可能です。チャット面ごとに異なる多様化を、ソースコードの変更なしに適用できます
活用例
- サポートエンジニア:範囲の広いトラブルシューティングの問いに、ほぼ同じチャンクが5件返る。MMRが各枠を異なる原因で埋めるため、回答が単一の故障モードにとどまらず複数を扱う
- リサーチャー:大規模な文書集合を問い合わせると、上位の埋め込みヒットが一つのセクションに固まる。MMRがコーパスの別の箇所からも候補を拾い、より充実した統合につながる
- osStudioのパイプライン構築者:コードチャット用のPathではMMRのlambdaを厳しい関連度寄りに調整し、探索用のPathではより多様なままにする。いずれもロールバック可能なバージョン管理された設定で行える
よくある質問
Maximal Marginal Relevance(MMR)とは何ですか。なぜRAGに追加するのですか。
MMRは、候補となるパッセージを問い合わせとの関連度で順位付けしつつ、すでに選んだパッセージとの類似度にペナルティを課す選択手法です。上位の検索結果がほぼ重複しがちなときに追加します。MMRがないと、範囲の広い問いに同じことを言う5件のチャンクが返り、モデルは一つの観点しか目にしません。MMRは最も関連するチャンクを残しつつ、残りの枠を別個で補完的なパッセージで埋めます。
osFoundryでMMR多様化を有効にするには?
MMRは、osStudioでチャットPathごとに設定するカスタムRAGパイプラインの一ステージです。retrieve、filter、任意のrerankの各ステージの後ろにMMRステージを追加し、lambda(関連度と多様性のトレードオフ)、候補プール、最終的なチャンク数を設定します。設定はJSON Schemaで検証されバージョン管理されるため、調整して一つのPathで試し、必要ならロールバックできます。
MMRはリランカーと何が違うのですか。
リランカーは、各候補が問い合わせにどれだけよく一致するかだけで再採点し、top-kの精度を高めます。MMRは別の目的を最適化します。選ばれた集合全体で、関連度を最大化しつつ重複を最小化するのです。両者は補完的です。osFoundryではふつう先にリランクして最も一致する候補を得てから、MMRを適用します。こうして、通過するチャンクが単一の最良ヒットの繰り返しではなく、異なる側面を確実にカバーするようにします。