【技術ドキュメント検索・要約AIアシスタント】
※業務ではなく、学習を目的とした個人開発プロジェクトです。
開発者が公式ドキュメントや技術ブログから情報を探す際の「目的の情報が
見つからない」「全体像を掴むのに時間がかかる」という課題を、RAG(検索拡張生成)
技術を用いて解決するツールです。
指定した技術文書(PDF)に対して自然言語で質問するだけで、AIが関連箇所を特定し、
参照元と共に回答を生成します。
現在はCLIとAPI(FastAPI)、ブラウザUIで動作します。
---
### ▼ ロードマップ
- [x] RAGパイプラインのMVP実装(単一PDF・コンソール対話)
- [x] RAG精度の評価(想定QAセットを用意し正答率を計測)
- [x] chunk_size / top_k / 埋め込みモデルの選定理由をドキュメント化
- [x] pytest による基本テスト + GitHub Actions CI
- [ ] 複数ドキュメント対応
- [ ] 会話履歴の保持
- [ ] ストリーミング応答
- [x] Web API化(FastAPI、`POST /ask`)
- [x] 画面UI化
---
### 技術スタック(実装済み)
| 分類 | 技術 |
|---|---|
| 言語 | Python 3.10 |
| RAGフレームワーク | LangChain(langchain, langchain-community, langchain-text-splitters) |
| ベクトルDB | ChromaDB(ローカル永続化) |
| LLM | Claude Haiku 4.5(Anthropic API 経由、langchain-anthropic) |
| 埋め込みモデル | text-embedding-3-small(OpenAI Embeddings、評価により選定 → docs/evaluation.md) |
| PDF読み込み | pypdf(langchain_community.document_loaders.PyPDFLoader 経由) |
| Web | FastAPI(POST /ask API + GET / でHTML画面を提供) |
| 環境変数管理 | python-dotenv |
| 動作環境 | WSL2(Ubuntu) |
### 技術スタック(今後予定)
- インフラ/DevOps: Docker, AWS(ECS, S3)
---
### 精度評価の取り組み
261ページの公開PDF(大学のPython教材)を対象に25問のQAデータセットを自作し、正解率・検索ヒット率を自動計測する評価基盤を構築しました。
埋め込みモデルの比較検証を行い、実測データに基づいて正解率76%→96%への改善を達成。
さらに、唯一残った不正解1問について、パラメータを総当たりする前に根拠チャンクの検索順位を特定する診断を行い、原因(top_kの不足)を突き止めた上でtop_k=8を採用し正解率100%を達成しました。
選定理由はリポジトリ内に文書化しています。
評価の過程では判定ロジックの正規化やキャッシュのバグ修正も行い、「測定自体の信頼性」にもこだわっています。
### 今後の展望
最終的にはFastAPIによる画面UI化とAWS上へのデプロイを目指しています。
また、本プロジェクトで得たLLM活用の知見をベースに、RDBと組み合わせた
別のアプリケーション開発にも取り組む予定です。
https://github.com/nd-3/llm_learning_journey