0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

freeAiChat【第2回】:FastAPI × LangChain × Weaviate で構築された RAG対応バックエンド(ai-chat-backend)を詳細解説

0
Last updated at Posted at 2026-08-12

【第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


著者をフォローしていただくと、次回掲載の通知を受け取れます!


0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?