Skip to content

About

Self-evolving RAG that automatically adapts knowledge base using evolutionary algorithms

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

🌐 English | 🇯🇵 日本語

🧬 Darwin RAG

License: MIT Python 3.10+ Model: Gemini Flash

失敗するたびにルールを学習していく RAG です。GPU も fine-tuning も要りません。

1,900回以上の実験で、進化なしより +11pp 以上の改善を確認しています。

免責事項
高校生が個人で作ったやつです。API 代が厳しいので追加実験はできていません。

実験結果

実験 設定 主な結果
アブレーション 3条件 × 3シード × 60試行 進化あり 89.4% vs なし 78.3% (+11pp)
V字回復 仕様変更シナリオ、n=100 崩壊後に自動で回復、+18pp (87% vs 69%)
静的 vs Darwin 5条件比較、n=60 Darwin RAG 95% vs 静的RAG 90%
LLM-as-a-Judge 3シード × 60試行 × 2条件 Judge精度 97–100%、+15.6pp

セットアップ

git clone https://github.com/RPG-478/Darwin-RAG.git
cd Darwin-RAG
pip install -r requirements.txt
set GEMINI_API_KEY=YOUR_KEY   # macOS/Linux では export GEMINI_API_KEY=...

Gemini API キーは Google AI Studio から無料で取得できます。

とりあえず動かす

# 動作確認(30試行、3〜5分くらいかかります)
python src/python_hard_experiment.py -n 30 --seed 42

全実験の再現コマンドは EXPERIMENTS.md にまとめています。

実験一覧

実験 スクリプト 詳細
アブレーション python_hard_experiment.py EXPERIMENTS.md#experiment-1
V字回復 vshaped_experiment.py EXPERIMENTS.md#experiment-2
静的 vs Darwin static_vs_darwin_experiment.py EXPERIMENTS.md#experiment-3
LLM-as-a-Judge llm_judge_experiment.py EXPERIMENTS.md#experiment-4

よく使うオプション

オプション 説明
-n <数> 試行回数(デフォルト: 30)
--seed <数> 乱数シード(結果を再現したいときに)
--no-crossover LLM Crossover を切ります(アブレーション用)
--no-evolution 進化を全部切ります(ベースライン用)
--llm-cache <パス> LLM の応答をキャッシュします(API代の節約に)

仕組み

失敗のフィードバックをもとに、知識ベース(ルール集)を自動で育てていきます。

タスク選択 → Thompson Sampling でルール選択 → LLM でコード修復
                                                      │
                                          Sandbox (pass/fail)
                                         ┌─────────────┴──────────────┐
                                       Pass                          Fail
                                    α 加算                     β 加算 → Mutation?
                                         └─────────────┬──────────────┘
                                              Crossover(条件を満たす場合)
                                                      │
                                          Population Cap → 最弱ルールを淘汰

詳しくは docs/architecture.md を見てください。

ファイル構成

Darwin RAG/
├── src/                        # 実験スクリプト
│   ├── learning_system.py      # コアエンジン(Thompson Sampling, XCS 進化ループ)
│   ├── python_hard_experiment.py
│   ├── vshaped_experiment.py
│   ├── static_vs_darwin_experiment.py
│   └── llm_judge_experiment.py
├── data/                       # テストケース・知識ベース
├── docs/                       # ドキュメント
│   ├── architecture.md         # アーキテクチャの詳細
│   └── experiments/            # 実験レポート(4本)
├── experiments/                # 実験ログの出力先(gitignore済み)
├── figures/                    # 提案書用の図
├── EXPERIMENTS.md              # 再現ガイド
└── requirements.txt

参考文献

  • Wilson, S.W. (1995). "Classifier fitness based on accuracy." Evolutionary Computation - XCS の淘汰基準
  • Asai et al. (2023). "Self-RAG." ICLR 2024
  • Tang et al. (2025). "MBA-RAG." COLING 2025
  • Tang et al. (2025). "Dynamic-RAG." AAAI 2025
  • Li et al. (2026). "SE-Search: Self-Evolving Search for Knowledge-Intensive Tasks."
  • Chinthala (2025). "Bidirectional RAG."
  • Google DeepMind (2023). "Promptbreeder."

Project Status / Feedback Wanted

Darwin RAGは、現在は実験的プロトタイプです。

基本的な進化ループ、アブレーション、V字回復、静的RAG比較、 LLM-as-a-Judge実験までは実装・検証済みです。

一方で、開発者の環境は8GB RAMのノートPCであり、 ローカルLLMや大規模なAPI実験を継続することが難しいため、 現時点では追加の大規模検証は行えていません。

そのため、研究者・企業・個人開発者からの技術的なフィードバックを歓迎しています。

特に以下について意見をいただきたいです。

  • 研究テーマとして見る価値があるか
  • 既存研究との差分をどう整理すべきか
  • 比較対象として見るべき手法は何か
  • 評価実験を追加するなら何を見るべきか
  • Crossoverの有効性を検証するには、どのような実験設計が良いか

ライセンス

MIT License

About

Self-evolving RAG that automatically adapts knowledge base using evolutionary algorithms

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages