コンテンツへスキップ
自己学習型LLMエージェント:ドメイン固有知識へのフラクタルアプローチ

自己学習型LLMエージェント:ドメイン固有知識へのフラクタルアプローチ

← 全記事

トレーニングを通じて LLM は高い言語理解能力を身につけますが、学習データは取得時点で固定されるため、それ以降に発生した知識を参照できません。また、モデルは幅広い領域で“そこそこ万能”な性能を発揮するよう最適化されているため、広く浅い知識にとどまりがちです。

そのまま使うと、LLM が返す回答は汎用的かつ表層的になりやすいものです。早い段階から「言語理解は LLM に任せ、専門知識は別系統で補う」というパラダイムが定着し、Retrieval Augmented Generation(RAG)が主流になりました。ドメイン固有の知識をベクトル化して保管し、検索で呼び出す手法です。

この手法により LLM に深いドメイン知識を付与できるようになった一方で、自己相似的な “フラクタル問題” も生じます。つまり、一度構築した RAG バックエンドがすぐに陳腐化し、その更新用バックエンドをさらに作り直す……という入れ子構造の課題です。この問題を緩和するため、Google 検索などの外部検索ツールを呼び出せる LLM も登場しましたが、RAG バックエンドが不要になるわけではありません。せいぜい数件の Google 検索で得られる情報をはるかに超える深い専門知識を保持できるからです。

2389 では、未来はマルチエージェント型だと考えています。単一の巨大エージェントではなく、ユーザーは数百〜数千のエージェントと気軽に対話するようになるでしょう。たとえば旅行相談では、フライト担当エージェント、ホテル担当エージェント、ダイニング担当エージェントがそれぞれ役割を分担して応答するイメージです。

エージェントは学習できるのか?

大きな理論的課題は「多数のエージェントにどうやって領域特化の知識を持たせるか」です。従来のナレッジベース構築は個別に制作・保守しなければならず、スケールしません。

私がとくに興味をもっているのは、エージェント自身に“完全な裁量”を与えて好きなように学ばせる方法です。最小限の初期入力だけで、時間とともに独自の専門知識を育て、ユーザーの興味に合わせて適応できるか。基盤となるエージェントは共通でも、ユーザーごとに応答スタイルだけでなく内部知識まで変われば大きな価値があります。

本稿では、自己学習エージェントに関する最近の実験を 2 つ紹介します。

  1. 自律ナレッジベース生成
    わずかな初期入力から、任意のトピックについてエージェント自身がナレッジベースを構築できるか。
  2. 対話駆動型の知識拡張
    直近の対話を振り返り、知識ギャップやユーザーの関心を検出して情報を収集し、ナレッジベースを拡張できるか。

LLM エージェントのフラクタル特性

今回の試みは、Google Co-ScientistAgent Laboratory 論文 などから着想を得ています。いずれも複数エージェントが「生成 → 評価 → 改良」のサイクルを多段で回すフラクタル(自己相似)的設計です。たとえば Co-Scientist ではアイデアを生成し、別エージェントが採点し、さらに洗練する過程を繰り返します。Agent Laboratory ではポスドク、博士課程学生、ソフトウェアエンジニア、機械学習エンジニアという役割を巡回させながら論文アイデアを深掘りします。

私は EC 業界でバックエンド向けセマンティック検索を長年担当してきました。GraphRAG などを含む RAG バックエンドの実装でも「フラクタルなセマンティック検索」という考え方が基盤にあります。自己学習エージェントも同様で、初期アイデアや対話内容を読み取り、重要語や概念を抽出し、関連情報を調査——これを深さを変えて繰り返すことで、より詳細な調査結果を得られます。


ゼロから“ヒーロー未満”へ

このパイプラインだけで絶対的な専門家になれるわけではありませんが、デフォルトの LLM と比べれば格段に深みのあるアウトプットを生成できます。ポイントは、検索の使い方をエージェント自身に委ね、内省サイクルを挟みつつフラクタルに検索を重ねることです。

流れは次のとおりです。

  1. エージェントが受け取ったクエリやトピックを複数のハイレベルな質問へ分解し、まずはタイムライン・設計原則・主要テーマといった上位集合を収集します。
  2. その上位集合に対して検索を実行し、取得ページを Markdown 風にパースして概念・用語・トピックを抽出します。新たに発見した情報を基に追加検索を行い、深掘りを継続します。得られたドキュメントはすべて RAG バックエンドに保存します。

例:フランス料理

次のプロンプトを与えてテストしました。

French Cuisine, regional specialties, ingredients, cooking principles, dishes, recipes

生成されたハイレベルトピック

1. トピック:フランス各地域とその料理的特徴
   目的:各地域の独自の食文化と名物を分類・整理する。

2. トピック:フランス料理で一般的に使われる食材
   目的:基礎的な食材を網羅し、地域差や伝統料理との関係を分析する。

3. トピック:フランス料理の基本的な調理技法
   目的:代表的な調理法を収集し、料理の原則を理解する。

4. トピック:地域別の伝統的フランス料理
   目的:各地域を代表する象徴的な料理を一覧化し、その文化的意義を探る。

5. トピック:クラシックなフランス料理のレシピ
   目的:代表的レシピを集め、技法と食材の実例として活用する。

具体的検索クエリ例

検索 (1/34): フランスの地域一覧と説明
検索 (2/34): 地域別の有名なフランス料理
検索 (3/34): 各地域特有の食材
検索 (4/34): 地域別の伝統的調理法
検索 (5/34): 地域別の著名シェフと料理学校
検索 (6/34): 各地域の伝統レシピ
検索 (7/34): フランス料理で一般的な食材
検索 (8/34): フランス料理の調理技法
検索 (9/34): フランス料理の地域名物

初回でフランス料理の上位集合を収集し、それらの記事を文脈としてさらに深掘り検索を行います。以下のスニペットでは、地域ごとの料理に関して検索を広げている様子が分かります。

追加検索 (1/40): フランス地域別の料理名物一覧
追加検索 (2/40): フランスの行政区画概要
追加検索 (3/40): 地域別の歴史的レシピ
追加検索 (4/40): フランス海外県の料理的特徴
追加検索 (5/40): プロヴァンス=アルプ=コート・ダジュール地方の名物
追加検索 (6/40): ブルターニュ地方の名物
追加検索 (7/40): オー=ド=フランス地方の名物
追加検索 (8/40): ノルマンディー地方の名物
追加検索 (9/40): イル=ド=フランス地方の名物
追加検索 (10/40): グラン・テスト地方の名物
追加検索 (11/40): オクシタニー地方の名物

ナレッジベースのテスト

簡易検証として、検索機能を有効にした汎用 GPT-4o-mini と、フランス料理の RAG バックエンドを持つカスタムエージェントを比較しました。

サンプルクエリ: “What are the regional specialties of Normandy?”

汎用 GPT-4o-mini の出力

Normandy has a ton of unique culinary treats that capture its history and local ingredients. Highlights include cheeses like Camembert de Normandie, Pont-l’Évêque, and Neufchâtel; apple-based treats from its orchards, including cider and Calvados; fresh seafood due to its extensive coastline; rich dairy products; and hearty traditional dishes like Tripes à la mode de Caen.

この回答は妥当ではあるものの凡庸でした。では、新しいエージェントの回答を見てみましょう。

カスタムエージェントの出力フロー

  1. クエリ分解

    • Regional specialties of Normandy
    • Normandy food traditions
    • Traditional dishes from Normandy
  2. バックエンド検索と集約
    RAG バックエンドから関連ドキュメントを取得し、文脈を統合します。

  3. 最終回答例(日本語訳)

ノルマンディー地方は豊かな食材と歴史的背景が融合した食文化で知られています。代表的な名物は次のとおりです。

1. チーズ

  • カマンベール・ド・ノルマンディー:白カビが特徴の柔らかなチーズ。
  • リヴァロ:円筒形で藁ひもが巻かれたウオッシュタイプ。
  • ポン・レヴェック:四角形とオレンジ色の外皮が特徴。
  • ヌーシャテル:ハート形が有名な白カビタイプ。

2. 海産物

  • ムール貝のノルマンディークリーム煮:地元産クレーム・フレッシュやチーズソースで提供。
  • 魚介類:ホタテ、カキ、エビなど。マルミット・ディエポワーズ(魚介シチュー)やムール・ア・ラ・クレーム(ムール貝のクリーム煮)が代表的。

3. 肉料理

  • プレ・サレ子羊:モン・サン=ミシェル近くの塩性湿地で育った羊肉。
  • トリップ・ア・ラ・モード・ド・カーン:地元シードルで煮込む牛モツ料理。
  • アンドゥイユ・ド・ヴィール:豚モツを用いたスパイシーなソーセージ。

4. シードルとカルヴァドス

  • シードル:辛口から甘口まで多彩なスタイル。
  • カルヴァドス:リンゴ由来のブランデー。飲用はもちろんソースにも活用。

5. 菓子・デザート

  • タルト・ノルマンド:リンゴをふんだんに使ったタルト。
  • ガレットとクレープ:そば粉のガレットと小麦粉の甘いクレープ。シードルとの相性も抜群。

まとめ
ノルマンディーの食文化は「4C(Cider, Calvados, Cream, Camembert)」に象徴されます。チーズ、海産物、肉料理のすべてが豊かな伝統を物語っています。

ノルマンディー出身のチームメンバーからも高評価を得られ、初回テストとしては良好な結果でした。


エージェントが時間とともに学ぶ

次は、エージェントがユーザーとの対話を通じて知識を更新し、ユーザー特化型へ進化できるかを検証しました。手順は以下のとおりです。

  • クエリ生成
    LLM が現在の文脈と自身の知識ギャップを踏まえ、候補クエリを作成します。
  • クエリ採点
    各クエリを関連性・新規性・ユーザー適合度で 0〜100 点評価します。
  • 上位 N 件選抜
    規定スコア以上のクエリから上位 N 件を選択し、足りなければ再生成します(無限ループは防止)。
  • 検索実行
    各クエリについてセマンティック/ベクトル検索を行い、上位 K 件を取得します。
  • パースと取り込み
    検索結果を Markdown 形式に整形し、ナレッジベースへ追加します。
  • インデックス更新
    新規データを反映して検索インデックスを更新します。

例:レストラン情報のアップデート

対話の要約:

シカゴ・ウエストループのレストランを尋ね、イタリアン・フレンチ・和食に興味を示した。また Smyth と Loyalist のシェフにも関心をもった。

エージェントのナレッジベースには数百のレストラン情報がありましたが、Smyth と Loyalist については詳細が不足していました。

生成されたクエリとスコア

選抜された上位 3 クエリ:
1. Smyth と Loyalist のシェフの経歴と料理哲学は?(スコア: 90)
2. ウエストループのフレンチレストランで提供される看板料理と独自食材は?(スコア: 88)
3. Smyth または Loyalist が開催する特別なダイニング体験やイベントはあるか?(スコア: 85)

取得結果例

  • Result 1
    タイトル: Smyth | Smyth and The Loyalist
    URL: https://www.smythandtheloyalist.com/smyth/
    概要: ミシュラン三つ星 Smyth は、夫婦シェフ John Shields 氏と Karen Urie Shields 氏が、Alinea などで培った 30 年の経験を活かして季節の生産者を讃えるコースを提供します。

  • Result 2
    名称: John’s Food and Wine
    概要: ビーフタルタルやバタフライ加工のサバなど、季節替わりメニューを提供するニューアメリカンレストラン。

多少のノイズは混在しても、シェフ John Shields に関する十分な文脈を取得できました。


まとめと今後の課題

本稿で紹介した実験は、対話を通じて学習・適応するエージェント――大量のエージェントを手作業で育てずとも拡張できる仕組み――への第一歩です。今後の主要課題として、次のような点が挙げられます。

  • 情報品質の検証
    取り込んだデータの正確性をどう担保するか。
  • 計算コスト
    本番環境で数百件の検索を走らせるコストは許容範囲か。
  • 知識共有の粒度
    近接ドメインのエージェント間で学習内容をどう共有し、どの層までフィードバックするか。

汎用モデルから、専門性を備えた自己進化型エージェントへの道のりは始まったばかりです。今後の発展にご期待ください。

他の記事

4 posts · 2,285 words · ~11 min total read · 20 tags · hugo 0.148.2 · 6fc2542 · built Mar 18 22:36
2389 Radio
2389 RADIO Select a station