LangChain と Gradio を用いたローカル知識ベースアシスタントの迅速構築

LangChain を活用した検索拡張型(RAG)アプリケーションの実装に焦点を当て、わずか数分で安全・ローカルな個人用知識アシスタントを構築する方法を紹介します。外部サービスへの依存を排除し、文書データを自環境内に閉じたまま、大規模言語モデル(LLM)による高精度な質問応答を実現できます。

動作デモ

完成後、Gradio インターフェースから「RAG モード」のオン/オフ切り替えが可能です。有効化すると、入力クエリに基づき ChromaDB で類似文書を検索し、その内容をコンテキストとして LLM へ提示。これにより、事実誤認(ハルシネーション)を大幅に抑制できます。

実行環境

Python 3.8.5 以上を推奨(3.7 以下では LangChain の互換性問題が発生)。以下のコマンドで必要ライブラリをインストールします:

pip install gradio chromadb langchain FlagEmbedding fastapi

FlagEmbedding は BGE 系列の埋め込みモデルを提供し、torchtransformers を含む多数の依存パッケージを自動導入します。CPU 版がデフォルトですが、GPU 利用を希望する場合は、事前に CUDA 対応版 PyTorch をインストールしてから FlagEmbedding を導入してください。

知識ベースの準備

任意のテキストデータ(UTF-8 エンコーディング)を .txt 形式で保存し、ローカルディレクトリに配置します。例: /data/knowledge/faq.txt。複数ファイルもサポートされます。

埋め込みモデルの取得

BGE-large-zh(中国語最適化済み)を推奨します。Hugging Face から直接ダウンロードするには:

git lfs install
git clone https://huggingface.co/BAAI/bge-large-zh

ダウンロード完了後、パスをコード内で指定します(例:/models/bge-large-zh)。

LLM サービス連携

本実装では Xunfei Spark API(v2.0)をバックエンドとして使用します。無料で利用可能な API キーを Xunfei 公式サイト から取得し、以下の三つの認証情報が必要です:

  • SPARK_APP_ID
  • SPARK_API_SECRET
  • SPARK_API_KEY

主要ファイルのカスタマイズ

プロジェクト構成は以下の4ファイルから成ります:

  • spark_api.py:API 通信処理(変更不要)
  • llm_wrapper.py:LLM 呼び出しラッパー —— 認証情報を設定
  • prompt_engine.py:プロンプトテンプレート管理(変更不要)
  • app_interface.py:Gradio UI エントリーポイント —— パスを修正

llm_wrapper.py の編集箇所(例:行 6–8):

from spark_api import invoke_spark_llm

SPARK_APP_ID = "your_app_id_here"
SPARK_API_SECRET = "your_api_secret_here"
SPARK_API_KEY = "your_api_key_here"

app_interface.py の編集箇所(例:行 15–16):

BGE_MODEL_DIR = "/models/bge-large-zh"
DOCUMENT_ROOT = "/data/knowledge"

起動手順

上記設定を完了後、ターミナルで以下を実行:

python app_interface.py

コンソールに Running on http://127.0.0.1:7860 などのメッセージが出力されれば起動成功です。ブラウザで該当 URL にアクセスし、UI を操作できます。

タグ: LangChain Gradio chromadb flagembedding RAG

7月3日 16:55 投稿