Skip to content

regyo997/rag-test

Repository files navigation

Streamlit & LangGraph RAG 範例 (Ollama + MCP)

這是一個全本地端的檢索增強生成 (RAG) 應用程式,支援以下兩種使用方式:

  1. Web 介面 (Streamlit):透過瀏覽器進行問答。
  2. MCP Server: 提供給 LLM CLI (如 OpenCode) 作為工具調用。

技術棧:

  • LangGraph: 狀態圖與流程控制
  • ChromaDB: 向量資料庫
  • Multilingual-E5-Large: 嵌入模型
  • Ollama: 本地 LLM
  • FastMCP: MCP Server 實作

設定

  1. 安裝依賴套件:

    pip install -r requirements.txt
  2. 設定 Ollama:

    • 請至 Ollama 官網 下載並安裝。
    • 執行以下指令下載模型 (預設使用 llama3,可依需求更改):
      ollama pull llama3
  3. 資料匯入:

    • 將您的 PDF 文件放入 data/ 資料夾。
    • 執行匯入腳本:
      python ingest.py
  4. 執行應用程式:

    streamlit run app.py

GPU 加速 (CUDA)

本專案預設會自動偵測 GPU。如果您的電腦有 NVIDIA GPU 但 torch.cuda.is_available() 顯示為 False,請依照以下步驟安裝支援 CUDA 的 PyTorch 版本:

  1. 移除舊版本:
    pip uninstall torch torchvision torchaudio -y
  2. 安裝 CUDA 12.4 版本 (適用於大多數新款 NVIDIA 顯卡):
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

MCP Server 設定

本專案提供 MCP (Model Context Protocol) 介面,讓您的 AI 助手直接調用本地知識庫。

1. OpenCode 設定 (推薦)

修改 ~/.config/opencode/opencode.json,請務必使用以下格式 (OpenCode 對 schema 要求較嚴格):

{
  "mcp": {
    "rag": {
      "type": "local",
      "command": [
        "python",
        "c:/Project/other/rag-test/mcp_server.py"
      ],
      "environment": {
        "PYTHONPATH": "c:/Project/other/rag-test"
      }
    }
  }
}

Important

  • Key 名稱請保持簡短 (如 rag)。
  • 必須包含 "type": "local"
  • 使用 "environment" 而非 "env"

2. Claude Desktop 設定

修改 %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "rag-knowledge": {
      "command": "python",
      "args": [
        "c:/Project/other/rag-test/mcp_server.py"
      ]
    }
  }
}

專案結構

  • app.py: Streamlit 主程式。
  • mcp_server.py: MCP Server 進入點。
  • rag_core.py: 核心 RAG 邏輯與 LangGraph 定義。
  • ingest.py: 處理 PDF 並建立向量嵌入的腳本。
  • data/: 存放 PDF 檔案的資料夾。
  • chroma_db/: 儲存向量嵌入的資料夾。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages