- 📂 目次:【AIチャット(freeAiChat)無料構築】連載の全記事まとめ
- 【第1回】無料で構築できるRAG × マルチLLM対応AIチャットシステムの全体像を紹介
- 【第2回】FastAPI × LangChain × Weaviate で構築された RAG対応バックエンド(閲覧中)
- 💡 今後も開発効率化・ツール連携に関する記事を随時追加していきます!
【第2回】FastAPI × LangChain × Weaviate で構築された RAG対応バックエンド(ai-chat-backend)を詳細解説
第1回では freeAiChat の全体像 を紹介しました。
今回はその中核となる ai-chat-backend を、技術的に深掘りして解説します。
このバックエンドは以下の特徴を持ちます:
- 完全無料で運用可能(Weaviate OSS / sentence-transformers / FastAPI)
- RAGの最小構成を学べる教育教材として最適
- Groq / OpenAI を環境変数で切り替え可能
- コードがシンプルで読みやすく、PoCにもそのまま使える
RAG の処理フロー、API仕様、Weaviate のスキーマ、LangChain の構成など、
AIチャットバックエンドの基礎をすべて学べる内容になっています。
🔧 ai-chat-backend の技術スタック
| 技術 | 役割 | 無料運用 |
|---|---|---|
| FastAPI | APIサーバー | ✔ |
| LangChain | RAG処理のオーケストレーション | ✔ |
| Weaviate OSS版 | ベクトルデータベース | ✔ |
| sentence-transformers | Embeddingモデル | ✔ |
| Groq / OpenAI | LLM呼び出し | ✔(無料枠) |
クラウド課金ゼロで RAG バックエンドを構築できる のが最大の魅力です。
🧩 RAG処理フロー(内部構造)
ai-chat-backend の RAG 処理は以下の流れで構成されています。
① 質問を受け取る(FastAPI)
ユーザーの質問は /ask に POST されます。
② 質問を Embedding 化(sentence-transformers)
テキスト → ベクトルに変換します。
③ Weaviate で類似文書検索
Weaviate の nearVector を使い、
類似度の高い上位3件 を取得します。
④ LangChain Retriever で RAG処理
LangChain の RetrievalQA を使い、
検索結果をコンテキストとして LLM に渡します。
⑤ LLM(Groq / OpenAI)で回答生成
環境変数でプロバイダーを切り替え可能:
LLM_PROVIDER=groq
LLM_PROVIDER=openai
⑥ 回答をフロントへ返す
JSON 形式で返却され、フロント側で表示されます。
📚 Weaviate のスキーマ構成(シンプルで教材向き)
Weaviate のスキーマは非常にシンプルです。
| フィールド | 型 | 説明 |
|---|---|---|
text |
string | 文書の内容 |
source |
string | PDF/TXT/URL などの種別 |
vector |
embedding | sentence-transformers によるベクトル |
RAG の学習教材として最適なほど、
余計なフィールドが一切ない最小構成 になっています。
🔌 API仕様(RAGの基本を学べる)
ai-chat-backend は以下の API を提供します。
/ingest(テキスト登録)
テキストを Weaviate に保存します。
/upload(PDF/TXT登録)
ファイルをアップロードし、
チャンク分割 → Embedding → Weaviate 保存まで自動処理。
/ingest-url(URLスクレイピング)
BeautifulSoup で HTML を抽出し、
テキスト化 → Embedding → 保存。
/ask(RAG質問応答)
RAG のメイン API。
検索 → RAG → LLM の流れを実行します。
🧠 LangChain の構成(RAGの理解に最適)
LangChain の構成は以下の通りです。
| コンポーネント | 役割 |
|---|---|
| Retriever | Weaviate から類似文書を取得 |
| LLMChain | LLM にプロンプトを渡す |
| RetrievalQA | RAG処理の統合 |
特に RetrievalQA は RAG の学習に最適で、
「検索+生成」の流れをコードで理解できる ようになっています。
💡 無料運用のための設定ポイント
✔ Weaviate OSS版を使う
Docker で簡単に起動でき、クラウド課金ゼロ。
✔ sentence-transformers を使う
無料で高品質な Embedding が可能。
✔ Groq / OpenAI の無料枠を使う
Groq は高速・無料枠が大きい。
OpenAI は無料クレジットで運用可能。
✔ FastAPI + uvicorn は無料
ローカルでもクラウドでも無料で動作。
🎓 ai-chat-backend が「教材として優秀」な理由
- RAG の最小構成をそのまま学べる
- コードがシンプルで読みやすい
- API の流れが理解しやすい
- Weaviate の使い方を学べる
- LangChain の RAG構成を学べる
- LLM の切り替えを理解できる
- 無料で学習できるため学生・新人研修に最適
🗂️ シリーズ構成(この記事は第2回)
第1回:全体紹介
- freeAiChat の概要
- 無料運用できる理由
- 教材として優秀なポイント
- 全体アーキテクチャ
第2回:ai-chat-backend の詳細紹介(この記事)
- RAG処理フロー
- API仕様
- Weaviate・LangChainの構成
- LLM切り替え方法
第3回:ai-chat-frontend の詳細紹介(次回)
- UI構成
- API連携
- 導入手順
- 運用ポイント
🚀 次回予告(第3回)
次回は ai-chat-frontend の詳細 を解説します。
- ReactベースのチャットUI構成
- バックエンドとの連携方法
- PDF/TXTアップロードの仕組み
- RAG回答表示の実装
- 無料運用のための設定ポイント
📂 ソースコード
👉 GitHub: freeAiChat
https://github.com/8alfalfa8/freeAiChat
- 📂 目次:【AIチャット(freeAiChat)無料構築】連載の全記事まとめ
- 【第1回】無料で構築できるRAG × マルチLLM対応AIチャットシステムの全体像を紹介
- 【第2回】FastAPI × LangChain × Weaviate で構築された RAG対応バックエンド(閲覧中)
- 💡 今後も開発効率化・ツール連携に関する記事を随時追加していきます!
著者をフォローしていただくと、次回掲載の通知を受け取れます!