RAG数据库代理

一个基于LangChain的代理服务,通过FastMCP服务器连接PostgreSQL和pgvector知识库,利用Gemini嵌入和向量搜索工具实现问答功能。

  • by vanshj11
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 vanshj11/RAG-using-MCP-and-LangChain

使用说明

MCP-DB RAG堆栈

LangChain代理与FastMCP服务器通信,暴露PostgreSQL+pgvector 知识库。FastMCP侧处理摄入、嵌入(Gemini)和 矢量搜索工具;LangChain一方通过 langchain-mcp-adapters 客户与RAG一起回答问题。

仓库布局

  • server/ –封装PostgreSQL、pgvector和Gemini的FastMCP服务器 嵌入。管理方式 uv.
  • client/ –调用MCP工具的LangChain代理。使用标准Python 虚拟环境。

先决条件

  • Python 3.11+(该项目针对即将发布的3.14版本;任何最新版本 支持pgvector+psycopg2的CPython工作)
  • uv 用于同步FastMCP环境
  • PostgreSQL与 pgvector 扩展已安装且可访问
  • Google Gemini API密钥(GOOGLE_API_KEY)
  • (Windows)PowerShell或(macOS/Linux)任何POSIX shell

环境变量

创建一个 .env 文件在两个 server/ 和 client/ (或将它们导出到您的 外壳)至少具有:

POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=rag_db
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

GOOGLE_API_KEY=your_gemini_key

您可以添加摄取所需的任何额外元数据字段;两个应用程序都加载 这些值通过 python-dotenv.

FastMCP服务器设置(uv)

cd server
uv sync                     # install deps from pyproject.toml / uv.lock
uv run python main.py --init   # optional: create tables + sample docs
uv run python main.py          # starts the HTTP MCP server on :8000

使用 uv run python main.py --ingest docs.txt 加载您自己的文本文件或 uv run python main.py --stats 检查数据库。服务器暴露 三种工具: vector_search, rag_query,以及 get_document_count.

保持服务器进程运行;LangChain代理通过以下方式连接到它 http://127.0.0.1:8000/mcp.

LangChain代理设置(venv+pip)

cd client
python -m venv .venv
.venv\Scripts\activate      # or source .venv/bin/activate on macOS/Linux
pip install -r requirements.txt
python main.py -i           # interactive mode

其他入口点:

  • python main.py -d –运行内置演示问题
  • python main.py -q "Your question" –单次查询

代理人将致电 vector_search/rag_query 首先是工具,然后是工艺 回答: gemini-2.5-flash。确保FastMCP服务器已在运行 否则代理将退出并出现连接错误。

数据流

  1. server/main.py --init 初始化PostgreSQL(启用 vector,创建 这 documents 表格和种子样本文档)。自定义摄取使用相同的 嵌入管道 google-generativeai.
  2. MCP服务器通过FastMCP公开HTTP端点(streamable-http 运输)。工具响应包括检索到的文档、相似性 例如文本、分数和格式化的上下文。
  3. client/main.py 加载所有工具 MultiServerMCPClient,把它们包起来 进入LangChain代理,并强制执行每个问题都必须处理的工作流程 在回答之前通过语义搜索。

故障排除

  • 验证PostgreSQL是否接受来自服务器进程的连接,以及 vector 已安装扩展(CREATE EXTENSION vector;).
  • 确保 GOOGLE_API_KEY 可以访问这两个 text-embedding-004 和 gemini-2.5-flash.
  • 如果 pgvector 索引失败 --init,确认您正在使用PostgreSQL 版本≥14,已安装扩展程序。
  • 在Windows上,首次安装时以管理员身份运行PowerShell uv 因此,它可以将垫片放置在您的路径上。

一旦这两个过程都运行,将您的问题指向LangChain代理并观看 它从MCP支持的知识库中提取上下文。