万万哇 发表于 2025-4-10 05:46:45

MCP+数据库:逾越RAG的新一代检索技术

在本日这一期,我们将一起学习一种基于 MCP 进步大模子检索外部知识精度的新思绪,实测比 RAG 结果要好很多。
现在市面上讲 MCP 的教程比力多,但大多数都是一些概念性的解说,近来我对 MCP 的体验也比力多,我也切实体验到了 MCP 确实是一项很有意义的技术标准,能资助我们解决很多之前难以解决的标题,所以在本日的教程里,我从如许一个实际的案例出发来跟各人聊一聊 MCP,团体的学习路径如下:

https://i-blog.csdnimg.cn/img_convert/0e311c93c98bdbd0c3a1064b5c2fb4fa.png
在开始学习之前,我们先了解一下,RAG 技术现在的范围性。
一、背景:RAG 的范围性

RAG,即检索加强生成(Retrieval-Augmented Generation),是现在大模子领域的一个热门方向。它将信息检索技术与生成式模子相结合,解决大模子在知识准确性、上下文明白以及对最新信息的利用等方面的难题。
在之前的教程中,如何拥有一个无穷制、可联网、带本地知识库的私人 DeepSeek? 我们一起学习了如何在本地摆设模子而且引入知识库。
但是很多小同伴大概对 RAG 有点误解,以为我们只要将一些额外的知识通过 RAG 导入,模子就能完善的把握而且回答这些知识相关的标题。但究竟和想象照旧有差距的,各人在实际实验后大概会发现,RAG 的精准度好像没有那么好。
从 RAG 自己技术原理的角度出发,现在存在着以下标题:


[*] 检索精度不敷:起首,RAG 最焦点的就是先将知识转换成 “向量“ ,导入 “向量数据库“,然后在将用户输入的信息也转换成 “向量” ,然后再去向量数据库匹配出相似的 “向量“,最后再由大模子去总结检索到的内容。

https://i-blog.csdnimg.cn/img_convert/f6315ea035ab70bf279619d3ab667808.png
从这个过程中我们看出,大模子仅仅起到了总结的作用,而检索到信息的精准度大部门情况下取决于向量的相似度匹配,检索结果大概包含无关内容(低精确率)或遗漏关键信息(低召回率)。


[*] 生成内容不完整:由于 RAG 处理的是文档的切片,而切片的局部性注定了它无法看到整篇文档的信息,因此在回答诸如“枚举XXX”“总结XXX”等标题时,一样寻常回答是不完整的。
[*] 缺乏大局观:RAG 无法判定必要多少个切片才能回答标题,也无法判定文档间的联系。比方,在法律条文中,新的解释大概覆盖旧的解释,但 RAG 无法判定哪个是最新的。
[*] 多轮检索本领弱:RAG 缺乏执行多轮、多查询检索的本领,而这对推理任务来说是必不可少的。
尽管近期也有些新出现的技术,如 GraphRAG、KAG 等能够在肯定水平上解决这些标题,但都还不成熟,现在的 RAG 技术还远远达不到我们预期想要的结果。
下面,我们将介绍一个新的方案,通过 MCP + 数据库来进步结构化数据的检索精准度,根本上能够实现 text to SQL 的结果,实测的检索结果也要比 RAG 好很多,比方我们有如许一份门生列表的信息:

https://i-blog.csdnimg.cn/img_convert/84ac10da9c1f4011c14f0b43f366e4fc.png
我们用一个稍微复杂一点标题(身高 180-190cm 之间的女生有哪些?)来测试:

https://i-blog.csdnimg.cn/img_convert/6681f16ba0b921610c302c2b2cbea219.png
二、理论:了解 MCP 的底子知识

在开始学习 MCP 之前,有一个绕不开的话题,就是 Function Call,我们先来回顾一下。
2.1 Function Call

以前的 AI 大模子就像一个知识丰富但被困在屋子里的人,只能依靠自己已有的知识回答标题,无法直接获取及时数据或与外部系统交互,比如不能直接访问数据库里的最新信息,也不能利用一些外部工具来完成特定任务。
Function Call 是 OPEN AI 在 2023 年推出的一个非常重要的概念:

https://i-blog.csdnimg.cn/img_convert/a97a87877e790aeadec067c3e209f1a8.png
https://openai.com/index/function-calling-and-other-api-updates/
Function Call(函数调用) 本质上就是提供了大模子与外部系统交互的本领,类似于给大模子安装一个 “外挂工具箱”。当大模子遇到自己无法直接回答的标题时,它会自动调用预设的函数(如查询天气、计算数据、访问数据库等),获取及时或精准信息后再生成回答。
比如,我们在 Coze 这种零代码 Agent 搭建平台上看到的插件,实在都是基于 Function Call 的思绪来封装的:

https://i-blog.csdnimg.cn/img_convert/db9e77d3fa0c115bf1d406e71bed2446.png
https://www.coze.cn/store/plugin
这个本领确实是挺好的,给了大模子更多的大概性,但是它有一个比力大的缺点,就是实现成本太高了。
在 MCP 出现之前,开发者想实现 Function Call 的成本是比力高的,起首得必要模子自己能够稳固支持 Function Call 的调用,比如我们在 Coze 中选择某些模子时提示,选择的模子不支持插件的调用,实在就是不支持 Function Call 的调用:

https://i-blog.csdnimg.cn/img_convert/c5768ba2339533fb927d88b61fa29e58.png
在之前的数据集教程 想微调特定领域的 DeepSeek,数据集究竟要怎么搞? 中,我们也提到了,在标准的 sharegpt 风格的数据会合就提供了专门用于 Function Call 训练的特殊字段。
[
  {
    "conversations": [
      {
        "from": "human",
        "value": "人类指令"
      },
      {
        "from": "function_call",
        "value": "工具参数"
      },
      {
        "from": "observation",
        "value": "工具结果"
      },
      {
        "from": "gpt",
        "value": "模型回答"
      }
    ],
    "system": "系统提示词(选填)",
    "tools": "工具描述(选填)"
  }
]
这也就意味着模子自己必要进行过专门的 Function Call 调用微调才能稳固支持这种本领。
别的还有一个比力大的标题,OPEN AI 最开始提出这项技术的时间,并没有想让它成为一项标准,所以固然后续很多模子也支持了 Function Call 的调用,但是各自实现的方式都不太一样。
这也就意味着,如果我们要发开一个 Function Call 工具,必要对差别的模子进行适配,比如参数格式、触发逻辑、返回结构等等,这个成本黑白常高的。

https://i-blog.csdnimg.cn/img_convert/2951cc6c42c8bff6a44ef79ef20c1c8c.png
这也大大进步了 AI Agent 的开发门槛,所以在以前我们大部门情况下只能通过 Dify、Coze 这些平台来构建 Agent。
https://i-blog.csdnimg.cn/direct/715855cdb2f24f57a198c403b6254e76.jpeg
焦点特点


[*] 模子专属:差别模子(GPT/Claude/DeepSeek)的调用规则差别
[*] 即时触发:模子剖析用户意图后直接调用工具
[*] 简单直接:得当单一功能调用(如"查北京温度"→调用天气API)
痛点


[*] 协议碎片化:需为每个模子单独开发适配层
[*] 功能扩展难:新增工具需重新训练模子或调整接口
类比


[*] 差别品牌手机的充电接口(Lightning/USB-C),设备间无法通用
2.2 MCP

MCP(Model Context Protocol,模子上下文协议)是一种由 Anthropic 公司(也就是开发 Claude 模子的公司)推出的一个开放标准协议,目的就是为了解决 AI 模子与外部数据源、工具交互的难题。

https://i-blog.csdnimg.cn/img_convert/b52294df52218dce5e576bde334d777e.png
通过 Function Call ,每次要让模子连接新的数据源或利用新工具,开发者都得专门编写大量代码来进行对接,既麻烦又容易堕落。而 MCP 的出现就是为了解决这些标题,它就像是一个 “通用插头” 或者 “USB 接口”,订定了统一的规范,不管是连接数据库、第三方 API,照旧本地文件等各种外部资源,都可以通过这个 “通用接口” 来完成,让 AI 模子与外部工具或数据源之间的交互更加标准化、可复用。
最开始推出的时间,只有 Claude 客户端支持,各人也没把它当回事,但是后续由于 Cursor(Cursor 和 Claude 的关系各人都懂) 的支持,各种插件和工具也开始一连提供支持;再加上近来 AI Agent 被 Manus 这个 “概念” 工具给炒的非常火热,让 MCP 渐渐开始走进大众视野,直到近来,OPEN AI 也公布对 MCP 提供了支持:

https://i-blog.csdnimg.cn/img_convert/28ff00bd289a7f6a880f91d7905afc21.png
这让我真正的感觉到,MCP 真的做到了,它已经成为 AI 工具调用的 “行业标准”。
MCP Host,比如 Claude Desktop、Cursor 这些工具,在内部实现了 MCP Client,然后 MCP Client 通过标准的 MCP 协媾和 MCP Server 进行交互,由各种三方开发者提供的 MCP Server 负责实现各种和三方资源交互的逻辑,比如访问数据库、欣赏器、本地文件,最终再通过 标准的 MCP 协议返回给 MCP Client,最终在 MCP Host 上展示。

https://i-blog.csdnimg.cn/img_convert/ff64f0dbafd21b83c99b405dd594ef3c.png
开发者按照 MCP 协议进行开发,无需为每个模子与差别资源的对接重复编写适配代码,可以大大节省开发工作量,别的已经开发出的 MCP Server,因为协议是通用的,能够直接开放出来给各人利用,这也大幅减少了开发者的重复劳动。
比如,你如果想开发一个同样逻辑的插件,你不必要在 Coze 写一遍,再去 Dify 写一遍,如果它们都支持了 MCP,那就可以直接利用同一个插件逻辑。
焦点特点


[*] 协议标准化:统一工具调用格式(哀求/响应/错误处理)
[*] 生态兼容性:一次开发即可对接全部兼容MCP的模子
[*] 动态扩展:新增工具无需修改模子代码,即插即用
焦点价值,解决三大标题


[*] 数据孤岛 → 买通本地/云端数据源
[*] 重复开发 → 工具开发者只需适配MCP协议
[*] 生态割裂 → 形成统一工具市场
类比


[*] USB-C 接口:手机/电脑/外设通过统一标准互联
2.3 MCP 对比 Function Call


https://i-blog.csdnimg.cn/img_convert/1a580d06c0124929908422629baeab3d.png
   注:调用方式这里反了。
三、实验:学会 MCP 的根本利用

从上面 MCP 的架构图中我们可以看到,想要利用 MCP 技术,起首就是得找到一个支持 MCP 协议的客户端,然后就是找到符合我们需求到 MCP 服务器,然后在 MCP 客户端里调用这些服务。
3.1 MCP 客户端(Host)

在 MCP 官方文档中,我们看到已经支持了 MCP 协议的一些客户端/工具列表:

https://i-blog.csdnimg.cn/img_convert/328c866fd2c7d2afb6191899555d27d6.png
https://modelcontextprotocol.io/clients
从表格里,我们可以看到,MCP 对支持的客户端分别了五大本领,这里我们先简单了解即可:


[*] Tools:服务器暴露可执行功能,供 LLM 调用以与外部系统交互。
[*] Resources:服务器暴露数据和内容,供客户端读取并作为 LLM 上下文。
[*] Prompts:服务器定义可复用的提示模板,引导 LLM 交互。
[*] Sampling:让服务器借助客户端向 LLM 发起完成哀求,实现复杂的智能举动。
[*] Roots:客户端给服务器指定的一些地址,用来告诉服务器该关注哪些资源和去那里找这些资源。
现在最常用,而且被支持最广泛的就是 Tools 工具调用。
对于上面这些已经支持 MCP 的工具,实在团体分别一下就是这么几类:


[*] AI 聊天工具:如 5ire、LibreChat、Cherry Studio
[*] AI 编码工具:如 Cursor、Windsurf、Cline
[*] AI 开发框架:如 Genkit、GenAIScript、BeeAI

https://i-blog.csdnimg.cn/img_convert/35e740fd831708d51d85e6de29e84efd.png
3.2 MCP Server

MCP Server 的官方形貌:一个轻量级程序,每个程序都通过标准化模子上下文协议公开特定功能。
简单明白,就是通过标准化协议与客户端交互,能够让模子调用特定的数据源或工具功能。常见的 MCP Server 有:


[*] 文件和数据访问类:让大模子能够操纵、访问本地文件或数据库,如 File System MCP Server;
[*] Web 自动化类:让大模子能够操纵欣赏器,如 Pupteer MCP Server;
[*] 三方工具集成类:让大模子能够调用三方平台暴露的 API,如 高德舆图 MCP Server;
下面是一些可以查找到你必要的 MCP Server 的途径:
第一个是官方的 MCP Server 集合 Github 堆栈(https://github.com/modelcontextprotocol/servers),里面包含了作为官方参考示例的 MCP Server、被官方集成的 MCP Server 以及一些社区开发的第三方 MCP Server:

https://i-blog.csdnimg.cn/img_convert/b92647878812c88b88e8ca229dc25051.png
别的一个是 MCP.so(https://mcp.so/):一个三方的 MCP Server 聚合平台,现在收录了 5000+ MCP Server:

https://i-blog.csdnimg.cn/img_convert/10548a2d2d512c36a19cd3d3fa3fcc48.png
其提供了非常友爱的展示方式,每个 MCP Server 都有具体的设置示例:

https://i-blog.csdnimg.cn/img_convert/31cbc11fbcf2dd29d46dd357dcdeafb5.png


[*] MCP Market(https://mcpmarket.cn/),访问速度不错,可以按工具类型筛选:

https://i-blog.csdnimg.cn/img_convert/b6437ae097ac161f44cb5420bc991096.png
3.3 在 Cherry Studio 中实验 MCP

我们先来实验一个最简单的 MCP 接入示例,这里我们选择 Cherry Studio。
Cherry Studio 对于小白用户照旧比力友爱的,可以让你在客户端一键完成必备环境(这些环境是什么意思我们背面会讲)的安装:

https://i-blog.csdnimg.cn/img_convert/02d7de9bed3403b4e4d7ffd7b6144272.png
在很多其他工具中,必要用户手动在自己的电脑上安装这些环境,比如 Windsurf:

https://i-blog.csdnimg.cn/img_convert/76daf1f6733c50afad4aaa3a0f8c1c0e.png
所以对小白用户,我建议先利用 Cherry Studio 上手实验。
打开 Cherry Studio 客户端,我们到「设置 - MCP 服务器」把上面提示的两个环境完成安装:

https://i-blog.csdnimg.cn/img_convert/cb512cf47adf0f98f5da24d45563dbf2.png
然后,我们在搜刮框搜刮 @modelcontextprotocol/server-filesystem,这里我们接入一个简单的文件系统 MCP:

https://i-blog.csdnimg.cn/img_convert/a55fa9288b5537c03b48fe5facbf2456.png
点击 + ,它会帮我们默认创建好一些 MCP Server 的设置,这里我们要补充一个参数,你允许让它访问的文件夹路径,比如 ~/Desktop:

https://i-blog.csdnimg.cn/img_convert/9d2293a756a41bc75b6e98352b249968.png
然后我们点击保存,如果服务器的绿灯亮起,阐明设置成功:

https://i-blog.csdnimg.cn/img_convert/6cc014a2d80ca4661d9067cf359dcc5f.png
下面,我们到聊天区域选择一个模子, 注意这里肯定要选择带扳手
页: [1]
查看完整版本: MCP+数据库:逾越RAG的新一代检索技术