使用说明
RAG+MCP(Ollama)——交通政策演示
此仓库显示了如何连接 本地RAG(检索增强生成)服务 在...之上 奥拉玛 到a MCP服务器 这暴露了单个工具, getTransportPolicy,到启用MCP的客户端(例如Claude Desktop)。
知识库是一份真正的政策文件: 巴基斯坦交通政策 (PDF)。目标是演示如何将本地PDF转换为可查询的工具,回答基于该策略的自然语言问题。
这个项目做什么(以及为什么)
-
想法/动机
使其易于实验 本地, 政策意识 助理,其中:- 数据永远不会离开你的机器。
- 该模型被迫根据特定来源(此处为巴基斯坦交通政策PDF)进行回答。
-
它实际上做了什么
- 加载 巴基斯坦交通政策 PDF。
- 将文本分块并嵌入到内存中的向量存储中。
- 使用Ollama托管的模型来回答具有相关政策背景的问题。
- 将此RAG管道包裹在MCP工具后面,
getTransportPolicy,因此任何MCP客户端都可以调用它。
-
它是如何工作的(高级)
- MCP客户端呼叫
getTransportPolicy带着一个query弦。 - MCP服务器将查询转发到本地RAG HTTP服务。
- RAG服务从以下位置检索相关块 巴基斯坦交通政策 并将它们发送到LLM。
- 答案以人类可读的形式返回给MCP客户端
content结构化{ answer: string }.
- MCP客户端呼叫
建筑
-
RAG服务(
rag-service/)- Node.js+Express HTTP API。
- LangChain+Ollama用于:
- PDF加载和分块。
- 嵌入件(
nomic-embed-text)+内存中的矢量存储。 - 通过问答
qwen2.5:1.5b.
- 暴露
POST /query上 http://localhost:3001/query 返回{ answer: string }.
-
MCP服务器(
mcp-server/)- 内置于
@modelcontextprotocol/sdk. - 寄存器
getTransportPolicy. - 每次通话:
- 发送
query到RAG服务。 - 返回两个显示器
content和structuredContent: { answer }.
- 发送
- 内置于
-
MCP客户端(如克劳德桌面)
- 通过stdio连接到MCP服务器。
- 暴露
getTransportPolicy工具,以便您可以提出以下问题 巴基斯坦交通政策 直接从聊天UI。
工具
getTransportPolicy- 输入:
query(string)--您的运输政策问题。
- 输出(
structuredContent):answer(string)--答案基于巴基斯坦交通政策PDF。
- 行为:
- 前进
query到http://localhost:3001/query. - RAG服务对PDF进行检索,并使用LLM生成答案。
- 前进
- 输入:
先决条件
-
将军
- Node.js 18+ 和npm
- Git(可选)
-
奥拉玛
- 安装:https://ollama.com
- 确保Ollama守护进程正在运行(
ollama serve).
-
模型使用
ollama pull qwen2.5:1.5b
ollama pull nomic-embed-text
项目布局
rag-service/–RAG HTTP API公开/query.mcp-server/–MCP服务器暴露getTransportPolicy.rag-service/assets/transport_policy.pdf– 巴基斯坦交通政策 PDF用作唯一的知识来源。
设置
从项目根:
git clone <your-repo-url> rag-mcp-ollama
cd rag-mcp-ollama
- RAG服务
cd rag-service
npm install
- MCP服务器
cd ../mcp-server
npm install
npm run build
在本地运行
你需要 二 进程:RAG HTTP服务和MCP服务器。
- 启动Ollama (如果需要):
ollama serve
ollama pull qwen2.5:1.5b
ollama pull nomic-embed-text
- 启动RAG服务:
cd rag-mcp-ollama/rag-service
npm start
这将:
- 负载
assets/transport_policy.pdf(巴基斯坦交通政策)。 - 分块文本并构建一个
MemoryVectorStore随着nomic-embed-text嵌入。 - 初始化
qwen2.5:1.5b. - 在以下位置启动Express服务器
http://localhost:3001随着POST /query.
- 启动MCP服务器:
cd rag-mcp-ollama/mcp-server
npm run build # if not built yet
node build/index.js
服务器日志 Transport MCP Server running on stdio 并暴露 getTransportPolicy.
与Claude Desktop一起使用(示例)
配置运行节点进程的MCP服务器条目,例如:
{
"transport-mcp": {
"command": "node",
"args": ["/absolute/path/to/rag-mcp-ollama/mcp-server/build/index.js"],
"env": {}
}
}
启用后,您应该看到 transport-mcp 服务器与 getTransportPolicy 工具。问以下问题:
- “巴基斯坦交通政策的主要目标是什么?”
- “该政策如何解决道路安全问题?”
答案将由当地RAG管道通过巴基斯坦交通政策PDF生成。
故障排除
-
RAG服务没有响应
- 确保
npm start正在磨合rag-service/在端口3001上。 - 确认Ollama正在运行,并且两个型号都已拔出。
- 确保
-
MCP客户端架构/验证错误
- 确保您正在运行构建的服务器(
node build/index.js).
- 确保您正在运行构建的服务器(
-
模型错误或响应缓慢
- 检查
ollama serve健康,您的系统有足够的资源。
- 检查
许可证
该项目是作为与Ollama构建本地PDF接地RAG+MCP集成的示例提供的。根据您的用例需要调整许可证文本。
