概要
- RAGシステム開発 の8か月間の実体験をもとに、効果的だった施策と無駄だった作業を共有
- Usul AI (900万ページ)と法律系AI企業(400万ページ)向けに構築した事例
- Langchain と Llamaindex を利用し、プロトタイプから本番運用までの課題と改善策
- ROIが高かった施策 をランキング形式で紹介
- 学びをオープンソース プロジェクトとして公開
RAG開発の現場から:実際に効果があったこと・無駄だったこと
- YouTubeチュートリアル で学習開始、最初は Langchain → Llamaindex を利用
- 2日でプロトタイプ完成、100ドキュメントでのテストでは高評価
- 本番データ (数百万ページ)で動かすと、ユーザーからの評価は低調
- 数か月かけてシステムを 部分的に再設計・改善 し、パフォーマンス向上
- ROI(投資対効果)順 に改善策をまとめ
効果が大きかった施策
-
クエリ生成
- ユーザーの直近クエリだけでは 文脈を網羅できない 課題
- LLM でスレッド全体をレビューし、 セマンティック+キーワードクエリ を複数生成
- すべてのクエリを 並列処理 し、 リランカー に渡すことで検索範囲拡大
- ハイブリッド検索 のスコア依存から脱却
-
リランキング
- 最もROIが高い 5行のコード改善
- チャンクの順位が大きく変動し、 十分な数のチャンク を渡せばセットアップの弱点を補完可能
- 理想的な設定 は「50チャンク入力→15チャンク出力」
-
チャンク戦略
- 最も工数がかかる 部分
- 各企業ごとに カスタムフロー を構築
- チャンクが 単語や文の途中で分断されない ことを確認
- それぞれのチャンクが 独立した情報単位 として成立しているかを重視
-
メタデータ付与
- 最初はチャンクテキストのみを LLM へ入力
- タイトル・著者などのメタデータ も同時に投入することで、 文脈と回答精度が大幅向上
-
クエリルーティング
- RAGでは対応できない質問(例:記事要約、著者名)も多発
- APIコール+LLM で直接回答する 小型ルーター を作成し、 RAGの無駄な呼び出しを回避
技術スタックとツール選定
- ベクターデータベース
- Azure → Pinecone → Turbopuffer (低コスト、キーワード検索ネイティブ対応)
- ドキュメント抽出
- Chunking :デフォルトは Unstructured.io、企業向けにはカスタム対応( Chonkie も評価高い)
- Embeddingモデル
- text-embedding-large-3 を採用、他は未検証
- リランカー
- Cohere 3.5 → Zerank (知名度は低いが高品質)
- LLM
- GPT 4.1 → GPT 5 → GPT 4.1 (Azureクレジットでカバー)
オープンソースへの展開
- 学びを集約 したオープンソースプロジェクト
- agentset-ai/agentset (MITライセンス)
- 質問や相談は歓迎、GitHubで連絡可能