使用说明
RAG MCP服务器和Next.js前端
一个全栈检索增强生成(RAG)应用程序,使用 模型上下文协议(MCP) 服务器后端和现代 Next.js 前端。该项目使用户能够使用OpenAI的模型和用于上下文检索的矢量数据库与他们的文档(PDF)聊天。
🚀 特性
-
MCP服务器后端(Node.js/TypeScript)
- 实施 模型上下文协议(MCP).
- 文件摄入:使用解析PDF
pypdf(Python桥)和分块。 - 向量搜索:利用 Qdrant 用于高性能相似性搜索。
- 嵌入:OpenAI
text-embedding-3-small. - 工具:
ingest_document(用于管理/设置)和query_knowledge_base(适用于RAG)。
-
Next.js前端
- 聊天界面:使用Tailwind CSS和
shadcn/ui. - 流媒体:使用Vercel AI SDK(v6)的实时令牌流。
- 输入管理:对用户输入和工具调用的稳健处理。
- 聊天界面:使用Tailwind CSS和
📂 项目结构
├── backend/ # MCP Server Implementation
│ ├── src/
│ │ ├── lib/ # OpenAI & Qdrant clients
│ │ ├── tools/ # MCP Tools (ingest.ts, query.ts)
│ │ ├── mcp-server.ts # Main server entry point
│ │ └── index.ts # Server startup
│ ├── scripts/
│ │ ├── manual_ingest.ts # Script to manually trigger ingestion
│ │ └── parse_doc.py # Python script for PDF parsing
│ ├── data/ # Directory for storing raw documents
│ └── package.json
│
├── frontend/ # Next.js App Router Application
│ ├── src/
│ │ ├── app/
│ │ │ ├── api/chat/ # Route Handler for AI SDK
│ │ │ └── page.tsx # Main Chat UI Component
│ │ └── components/ # UI Components (shadcn/ui)
│ └── package.json
└── README.md
🛠️ 先决条件
- Node.js (v18或更高版本)
- python (v3.10+)
pip - 码头工人 (桌面或引擎)用于运行Qdrant
- OpenAI API密钥
⚡ 安装说明
1.克隆存储库
git clone <your-repo-url>
cd <repo-name>
2.后端设置
- 导航到后端:
cd backend npm install - 安装Python依赖项(用于PDF解析):
pip install pypdf # If pip fails, try: python -m pip install pypdf - 配置环境变量:
复制
.env.example到.env并填写您的密钥。OPENAI_API_KEY=sk-... # Your OpenAI Key QDRANT_URL=http://localhost:6333 PORT=3001 MODE=sse
3.前端设置
- 导航到前端:
cd frontend npm install - 配置环境变量:
创建
.env.local:OPENAI_API_KEY=sk-... # Required for AI SDK MCP_SERVER_URL=http://localhost:3001/sse
4.启动矢量数据库(Qdrant)
你必须运行Docker。
docker run -d -p 6333:6333 -v $(pwd)/qdrant_storage:/qdrant/storage:z qdrant/qdrant
注意:如果您在启动Docker时遇到错误,请确保Docker Desktop正在运行。
5.摄入文件
将PDF文件放在 backend/src/tools/PDF/ (或更新路径)。
运行手动摄取脚本:
cd backend
npx tsx scripts/manual_ingest.ts
6.运行应用程序
您需要同时运行两台服务器(使用两个终端)。
终端1(后端):
cd backend
npm run dev
2号航站楼(前端):
cd frontend
npm run dev
访问聊天界面 http://localhost:3000.
当前问题:
1) 聊天机器人前端界面正在工作,但无法检索数据和访问嵌入。目前正在尝试解决此问题。
2)- RAG连接:访问 query_knowledge_base 该工具依赖于本地Qdrant实例。如果Qdrant没有运行(例如Docker问题),聊天将回到常识。
