すべての道は佐藤美咲に通ず
ChatGPTに「この商品のターゲットとなる仮想ペルソナを提案して」と頼むと、驚くほどの確率で「佐藤美咲」という名前が返ってくる。28歳、都内在住、IT企業勤務。プロンプトを変えても佐藤美咲は何度でも蘇る。ちょっとした恐怖小説なような気もするけれども、佐藤は日本最多の姓であり、美咲は平成時代に通算8回もの命名ランキング1位を獲得した名。つまり、統計的な最頻値としての「正解」が reasoning_effort に応じて選択されているとオチだ。
この現象は名前の問題にとどまらない。カスタマーデジタルツインのペルソナ設計をChatGPTに依頼したとき、3回連続で28歳、都内在住、IT企業勤務の概念佐藤美咲が出てきたことがある。プロンプトを変えても、コンテキストを変えても、佐藤美咲っぽい類型は不死鳥のように蘇る。
名言の選出も同じだ。Cronで起動するエージェントに「コアコンセプトとなるビジネス名言をランダムに選出して、それを元に施策を提案して」と指示しても、出てくるのは同じような話ばかり。LLMの「ランダム」は人間が期待するランダムとはまったく異質のものだ。確率分布の最頻値を中心にした狭い範囲でしか揺らがないそれは、統計的に正しいが創造的には貧困である。
LLMの最頻値収束とレコメンドエンジンの罠
この最頻値収束は、佐藤美咲に限った構造ではない。AEO(Answer Engine Optimization)の文脈では、ChatGPTに「最高のマグネシウムサプリは?」と聞くと1つか2つのブランドしか推奨しないという話が話題になっていた。Google検索が10件の青いリンクを返す世界から、AIが「唯一の正解」を返す世界への移行だ。推奨される側にとっては「選ばれるか、存在しないか」の二択。佐藤美咲がSelection Tierに常に選ばれ続けるように、AIの「おすすめ」に載らないブランドは存在しないも同然になる。
社長のデジタルツインもまた人格コンテンツのIP化に他ならない。そしてIP化のためにこそ「正確なコピー」ではなく「再利用しやすい誇張」にとどめておく事が大事なのではないかと考えている。
以前書いた社長のデジタルツインの話では、カリカチュア的な誇張こそが壁打ち相手として機能すると論じたが、LLMが生成するペルソナや推奨は「平均化」によって、すべてが佐藤美咲に収束してしまう問題もある。レコメンドエンジンの世界では、この問題は"Exploitation vs Exploration"として古くから知られている。精度を追求するExploitationだけでは既知の選択肢しか提示されず、意図的なExplorationなしには新しい発見が生まれない。両利きのレコメンドだ。
Two-Towerモデルの検索スコアを突然変異のLogitにする
この問題に対して、遺伝的アルゴリズムの発想を持ち込めないかと考えた。遺伝的アルゴリズムでは「選択」「交叉」「突然変異」の3つの操作で解の探索空間を広げる。突然変異は局所最適解に陥ることを防ぐための意図的なノイズだ。RAGにもこの突然変異を入れるのだ。
具体的には、Two-Towerモデルの検索スコアをLogitと見なし、2層のサンプリングに分割するアーキテクチャを構想している。
| 層 | 名称 | 役割 | サンプリング方式 |
|---|---|---|---|
| 第1層 | Selection Tier | 確実に関連性の高い候補を選ぶ | 確定的Top-p |
| 第2層 | Mutation Tier | 意図的にノイズを含む候補を混ぜる | Temperature付きTop-pサンプリング |
Selection Tierは従来のRAGと同じくスコア上位の候補を確定的に選ぶ。Mutation Tierでは追加のTop-p閾値を設けた上でTemperatureサンプリングを行い、あえて「正解から外れた」候補を混ぜる。この2層を合わせた選択肢群をLLMに投げることで、遺伝的アルゴリズム的な文脈の交叉を狙う。
RAG構築の時にも痛感した読書論の有用性が活きてくることだ。そもそも人間における「記憶」はコンテキスト長に収まるぐらいのもののコンパクションされていくものなのかもしないと考えるとオンデマンドに適切に展開可能なビオトープの整備こそがコンテキストエンジニアリングであり、図書館論への接続になっていく
積読の記事で書いたように、RAGの本質はビオトープの整備であり、すべての蔵書を読むことではない。しかし従来のRAGは図書館の司書が「最も適切な本」だけを渡す仕組みだった。Stochastic RAGは、司書が「これも面白いかもしれません」と隣の棚から一冊追加で差し出すような行為だ。その一冊が的外れであることもあるが、思いもよらない接続を生むこともある。お人間さんだって昨日と今日で言っていることが変わってることがある。
Stochastic RAGの突然変異で佐藤美咲を超える
これを "Stochastic(確率論的) RAG" とでも名づけようと思ったのだが、調べてみると類似の発想はすでに学術的に研究されていた。
Stochastic RAG casts the retrieval process in RAG as a stochastic sampling without replacement process. Through this formulation, we employ straight-through Gumbel-top-k that provides a differentiable approximation for sampling without replacement and enables effective end-to-end optimization for RAG.
Zamaniらが2024年のSIGIRで発表したそのものズバリの "Stochastic RAG" は、検索スコアにGumbelノイズを加えてtop-k選択を微分可能にし、end-to-endで最適化するアプローチだ。7つのデータセットで6つのSOTAを達成しており、論文の結論では「確率的サンプリングによりRAGの出力多様性が向上する」ことにも言及されている。検索スコアにノイズを注入するという骨格は、僕が妄想していたアーキテクチャと重なる。
ただし、力点は異なる。Zamaniらの関心はend-to-end学習の微分可能性にある。検索と生成を一気通貫で最適化するための確率的緩和であり、目的関数は精度の最大化だ。一方で僕が考えているのは、精度を多少犠牲にしてでも「意図的なExploration」を組み込むことにある。遺伝的アルゴリズムの用語で整理すると、Zamaniらのアプローチは「選択」の最適化であり、僕の構想はSelection Tierに加えてMutation Tierという「突然変異」の層を意図的に設けるものだ。
突然変異率が高すぎればノイズに埋もれ、低すぎれば佐藤美咲に回帰する。この調整パラメータこそが勘所であり、ドメインやユースケースに応じたチューニングが必要になってくるだろう。場合によっては、ただのサイコロMCPだってLLM自体に「ランダムに」とプロンプトするより役に立つ。
おせっかいなノイズが生み出す価値
コンテキストエンジニアリングの本質は「おせっかい」にある。ユーザーが求めていないかもしれない情報をあえてコンテキストに混ぜ込むことで、想定外の接続が生まれる。
実装としてはMCPノードとしてランダム名言や関連キーワードのサンプリング機能を用意し、LLMのコンテキストに混ぜ込むアプローチが現実的だろう。ランダム名言MCPノードという一見ふざけたコンポーネントも、Stochastic RAGの文脈では「突然変異の供給源」として合理的に位置づけられる。蠱毒が複数の毒虫を壺に封じ込めて最後の1匹を使う淘汰の仕組みであるのに対し、Stochastic RAGは壺の中にあえて異質な虫を1匹混ぜることで、交叉の機会そのものを増やすアプローチだ。淘汰と交叉、どちらも進化のメカニズムだが、ベクトルが違う。
そもそもイノベーションとは既存の要素の新しい組み合わせだとシュンペーターは言った。組み合わせの母集団が佐藤美咲とドラッカーとスティーブ・ジョブズに固定されている限り、新結合は生まれない。Stochastic RAGが仕掛けるのは、組み合わせの母集団そのものを揺さぶることだ。
LLMの世界が最頻値に収束していく力学は強い。ChatGPTが佐藤美咲を量産し、Answer Engineが唯一の正解しか返さない世界に対して、Stochastic RAGは佐藤美咲を殺すのではなく、彼女の隣に予想もしなかった誰かを座らせるための仕掛けだ。その「誰か」が的外れな人事になることもあるだろう。しかし、遺伝的アルゴリズムが教えてくれるのは、突然変異のほとんどは淘汰されるが、ごくまれに種全体を救う個体が生まれるということでもある。
