> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# 用MCP实现Agentic RAG
- URL: https://www.hubwiz.com/blog/build-agentic-rag-with-mcp/
- Published: 2025-04-15T16:17:02.000Z
- Updated: 2025-04-15T16:17:02.000Z
- Description: 传统的RAG系统使用固定策略，这些策略在数据变化时可能变得不那么有效。在Agentic RAG中则不同，LLM根据上下文决定如何与数据交互。
- Author: admin
- Tags: APPLICATION, AGENTIC RAG, MCP, LANCEDB, #Import 2026-10-14 14:41

当我第一次开始探索模型上下文协议（MCP）时，我只是被它在标准化大型语言模型（LLMs）与外部系统交互方面的潜力所吸引。我的初始目标很简单：为LanceDB（一个多模态无服务器向量数据库）构建一个简单的MCP服务器。我从未想到这个探索会演变成更有趣的东西。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-265.png)

Claude Desktop中的Agentic RAG示例

从一个简单的集成开始，这逐渐演变为一个智能PDF交互的复杂系统。结果？一个由LangChain和LanceDB支持的本地文件持久索引，并通过MCP访问（GitHub上的[lance-mcp](https://github.com/adiom-data/lance-mcp?ref=hubwiz.com)），具有无缝的文档添加和重新索引功能。最令人兴奋的是，它比典型的RAG实现要强大得多，因为Claude自主地确定其查询策略和提示格式。

如果你有兴趣亲自尝试，设置非常简单——你只需要Node、Ollama和Claude桌面应用程序即可。说明可以在GitHub存储库中找到。

## 1、理解模型上下文协议 (MCP)

模型上下文协议代表了在标准化AI模型与外部工具和数据源交互方面迈出的重要一步。它为LLMs提供了一种结构化的方式来访问和操作外部资源，使其在现实世界的应用中更加高效和可靠。

> 来自 [https://modelcontextprotocol.io/introduction](https://modelcontextprotocol.io/introduction?ref=hubwiz.com)：  
>  
> "*MCP是一个开放协议，用于标准化应用程序如何向LLMs提供上下文。可以将MCP视为AI应用的USB-C端口。就像USB-C提供了一种标准方式来连接您的设备到各种外围设备和配件一样，MCP提供了一种标准方式来连接AI模型到不同的数据源和工具。"*

![](https://www.hubwiz.com/blog/content/images/2025/04/image-266.png)

模型上下文协议（MCP）架构和组件

事实上，目前MCP服务器的使用与LLM常规工具调用并没有太大区别。但作为一种协议，我相信客户端和服务端的实现将继续发展，以支持更多的安全性和与LLMs的双向交互。

## 2、Agentic RAG与传统RAG：范式转变

传统的RAG（检索增强生成）遵循预定义或硬编码的管道，开发人员通过提示工程对查询构造、结果过滤和上下文整合做出关键决策。虽然这种方法在静态数据集上表现良好，但在生产环境中面临挑战，因为数据不断变化。

![](https://www.hubwiz.com/blog/content/images/2025/04/image-267.png)

考虑一下：检索与数据摄取同样重要，然而传统的RAG系统使用固定策略（例如向量存储查询谓词或要获取的结果数量——Top K），这些策略在数据变化时可能变得不那么有效。这导致原始优化与当前数据现实之间的偏差，从而导致LLM代理错过重要上下文并产生幻觉。

进入**Agentic RAG**——这是一种更动态的方法，其中LLM本身根据上下文决定如何与数据交互。就像人类执行多次Google搜索以找到正确信息一样，我观察到Claude执行了几轮带有微妙关键词变化的查询，以锁定最相关的信息。这种适应性对于保持数据变化后的有效性至关重要。

## 3、内部细节：实现细节

![](https://www.hubwiz.com/blog/content/images/2025/04/image-269.png)

Agentic RAG系统的架构图

该系统包含几个关键组件：

a) 一个种子脚本创建了一个LanceDB索引，存储片段、元数据、摘要和嵌入。

我选择了LanceDB，因为它无服务器且易于本地设置（也因为我最近遇到了LanceDB的首席执行官Chang She，他是一个很棒的人），尽管该系统也可以轻松集成其他流行的向量存储，如Chroma、Pinecone、MongoDB Atlas、Azure Cosmos DB、Weaviate或OpenSearch。

b) 索引流水线利用开源模型进行嵌入（“snowflake-arctic-embed2”）和文档摘要（“llama3.1:8b”）。

为了优化资源使用，种子脚本使用文档哈希来避免重新处理先前已索引的文档。

c) LanceDB中有两个主要表。

**目录(catalog)**表存储文档元数据和LLM生成的摘要。**片段(chunks)**表维护文本片段及其对应的嵌入。

d) MCP服务器提供的工具旨在引导Claude完成两步搜索过程。

**首先**，执行目录搜索以识别相关文档。**然后**，在这些文档内执行聚焦片段搜索。

e) 这种方法显著提高了结果的相关性，并减少了产生幻觉的可能性。虽然Claude也可以在整个数据集中执行广泛的片段搜索，但它通常保留此功能用于特定场景。

## 4、未来方向

还有几个令人兴奋的可能性有待探索：

1. 创建完全离线版本，仅使用开源模型，脱离Claude。
2. 向MCP服务器添加资源，以实现直接从磁盘访问文档。
3. 整合数据库来源（例如MongoDB、PostgreSQL）以超越文档存储。
4. 开发全面的质量指标，涵盖准确性、完整性和相关性。

该项目展示了赋予AI代理更多自主权在其信息检索策略方面的潜力。通过允许LLM自行决定如何搜索和上下文化信息，我们可以创建更强大和适应性强的系统，即使底层数据发生变化也能保持其有效性。

代码在MIT许可证下开源，并可在GitHub上进行实验。我欢迎社区的贡献和反馈，因为我们继续一起探索Agentic RAG和MCP的可能性！

---

原文链接：[True Agentic RAG: How I Taught Claude to Talk to My PDFs using MCP (Model Context Protocol)](https://medium.com/@adkomyagin/true-agentic-rag-how-i-taught-claude-to-talk-to-my-pdfs-using-model-context-protocol-mcp-9b8671b00de1?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处