使用说明
RAG MCP工具
这个仓库包含一个用Python实现的最小化检索增强生成(RAG)MCP服务器示例。服务器提供了一个名为(此处应接具体工具名,但原文未给出)的单一MCP工具 retrieve 它会从本地研究论文语料库中查找简短且直接相关的片段(该 papers/ 使用嵌入(embeddings)和向量存储(vector store)来创建目录。
它是如何工作的
rag.py 包含服务器的核心代码。它首先加载位于(此处假设原文未完整,根据上下文补充)指定目录下的Markdown文件 papers/,将其分割成块,然后使用HuggingFace嵌入模型(默认 all-MiniLM-L6-v2),并将嵌入向量存储在一个包含搜索功能的Chroma向量存储中。服务器提供了一个MCP工具 retrieve(prompt: str) 该功能返回与关键词/主题提示最相关的前k个文本片段。
检索到的文本片段随后可以由另一个大型语言模型(例如VSCode Copilot中的GPT-5)进行处理。另一种选择是使用一个额外的大型语言模型首先处理/总结这些片段,然后将总结结果传递给协调器代理(例如Copilot),但我担心这样做会损失过多信息。上述工作流程使协调器能够直接访问检索到的片段。
使用该工具(VSCode)
对于VSCode,在(相应位置)下创建一个文件 .vscode/mcp.json (与)内容一起
{
"servers": {
"rag": {
"type": "stdio",
"command": "python",
"args": [
"rag.py"
]
}
}
}
然后,我们可以要求Copilot调用工具,例如在代理模式下,“使用RAG MCP工具来概述基于模拟的推理”。如果在启动服务器时遇到任何问题(服务器应该会自动启动,可能需要重启VSCode),请尝试访问https://code.visualstudio.com/docs/copilot/customization/mcp-servers。
我发现不断要求Copilot调用MCP工具非常繁琐。一个更有效的方法是设置一个提示文件(https://code.visualstudio.com/docs/copilot/customization/prompt-files)。我在(此处)放了一个示例 .github/prompts/rag.prompt.md,它告诉编排器(无论你在Copilot中选择了哪个LLM)如何使用MCP工具,例如在向量搜索之前将用户查询翻译成一组关键词。然后你可以提示Copilot执行诸如 /rag write an introduction to simulation-based inference in intro.txt, including references.
Cursor/Claude 等工具的设置过程应与上述过程非常相似,我认为主要区别在于 JSON 文件的语法。
备注
依赖项/自定义项:
langchain并且langchain_community用于文档加载和文本拆分。- 分块记忆法(或称为“分组记忆法”)
CharacterTextSplitter被配置为chunk_size=500并且chunk_overlap=100。
- 分块记忆法(或称为“分组记忆法”)
HuggingFaceEmbeddings来自langchain_huggingface.embeddings(模型:all-MiniLM-L6-v2) 用于生成密集嵌入。可以替换这个,也可以使用OllamaEmbeddings。Chroma向量存储及通过(某种方式)搜索langchain_community.vectorstores。- 目前,该索引是一个内存中的Chroma实例,但我们需要想办法设置一个持久化的索引——想象一下,只需要更改Chroma的配置即可。
- 请求:
k=10默认显示顶级比赛;更改search_kwargs调整检索到的片段数量。
mcp.server.fastmcp.FastMCP暴露一个简单的MCP服务器接口。