Rewritten (zh-hant): MCP + 数据库,一种提高结构化数据检索精度的新方式!

Summary

Language:

Quick Abstract

想擺脫知識庫效果差、模型微調太難的困境嗎? 本期將深入探討一種基於 MCP (模型上下文協議) 加數據庫的全新思路,顯著提高大模型檢索外部知識的精準度,實測效果超越傳統的 RAG (檢索增強生成) 技術。從回顧 RAG 的局限性開始,再到MCP的基本原理、簡單案例體驗,最後用實際案例對比 MCP 加數據庫和 RAG 的檢索效果。

Quick Takeaways:

  • RAG 缺陷: 檢索精度不足、生成內容不完整、缺乏大局觀、多輪檢索能力弱。
  • MCP 优势: 協議標準化、生態兼容性、動態擴展,統一工具的電源格式,一次開發,可直接對接所有兼容 MCP 的模型和客戶端。
  • 實戰應用: 使用 Client 連接 MongoDB,透過 MCP 進行精準的外部知識檢索,效果優於傳統 RAG。
  • 優化技巧: 在全局提示詞中加入表結構相關信息,提升模型響應的準確性和效率。

利用 MCP 和数据库提高大模型知识检索精度

知识库效果不佳、模型微调困难?别担心!本文将介绍一种基于 MCP(模型上下文协议)和数据库的新思路,旨在提高大模型检索外部知识的精度。实测效果优于 REG(检索增强生成)。

引言

大家好,欢迎来到口头命运花园。我是花言老师。最近 MCP 概念非常火爆,相关教程也很多,但大多停留在概念层面。经过一段时间的体验,我深感 MCP 是一项有意义的技术标准,可以帮助我们解决许多先前难以解决的问题。

本文将从优化数据检索精度的实践出发,探讨 MCP 的应用。

学习路径

  1. 回顾 REG 知识检索技术的局限性。
  2. 学习 MCP 的基础知识,对该技术有基本认知。
  3. 尝试一个简单的案例,体验 MCP 的基本用法。
  4. 通过实际案例,实现精准的外部知识检索,并对比 REG 的效果。
  5. 通过案例深入理解 MCP 的核心原理。

REG 技术的局限性

REG 是目前给大模型外接智库最常用的手段,它结合了信息检索技术和生成式模型,旨在解决大模型在知识准确性、上下文理解以及对最新信息利用方面的问题。

然而,很多人对 REG 存在误解,认为只要导入额外知识,模型就能完美掌握并回答相关问题。但实际情况并非如此,REG 的精准度并不理想。

检索精度不足

REG 的核心在于将知识转换为向量,导入向量数据库,然后将用户输入信息也转换为向量,在向量数据库中匹配最相似的向量,最后由大模型总结检索到的内容。

  • 大模型在此过程中仅起总结作用。
  • 检索信息的精准度取决于向量相似度匹配的效果。
  • 匹配结果可能包含无关内容或遗漏关键信息。

生成内容可能不完整

REG 处理的是文档切片,切片的局部性导致无法看到整篇文档的信息。例如,在回答诸如“列举查查查”和“总结查查查”等问题时,知识库的回答效果往往不完整。

缺乏大局观

REG 无法判断回答问题所需的切片数量,也无法判断文档之间的联系。例如,在法律条文中,新的解释可能覆盖旧的解释,但 REG 无法判断哪个才是最新的。

多轮检索能力较弱

REG 缺乏执行多轮多查询检索的能力,这对于复杂的推理任务至关重要。

尽管出现了一些 REG 优化技术,如 GraphREG、KAG 等,但这些技术尚不成熟,REG 技术远未达到预期效果。

MCP 概述

我们将介绍一种新的思路:通过 MCP 加数据库来提高结构化数据的检索精度,实测效果优于 REG。例如,对于一份学生列表信息,使用 MCP 加数据库的检索效果要比直接使用知识库检索的效果更好。

Function Call 的回顾

早期的 AI 大模型就像知识丰富但被困在屋子里的人,只能依靠自身知识回答问题,无法获取实时数据或与外部系统交互。

Function call 是 OpenAI 在 2023 年提出的重要概念,本质是提供了大模型与外部系统交互的能力,类似于给大模型安装了一个外挂工具箱。

  • 大模型遇到无法直接回答的问题时,会主动调用预设的函数,如查询天气、计算数据、访问数据库、获取实时信息。
  • code 平台的插件都是基于 Function call 的思路封装的。

Function Call 的缺点

  • 实现成本高: 模型本身需要稳定支持 Function call 的调用。
  • 适配问题: 不同的模型对 Function call 的实现方式不同,需要进行适配,提高了 AI Agent 的开发门槛。

Function Call 的核心特点

  • 模型专属: 不同的模型调用规则可能不一样。
  • 即时触发: 模型解析用户意图后可以直接调用工具。
  • 简单直接: 可能适合单一的功能调用。
  • 显示碎片化: 需要为很多模型单独开发适配层。
  • 功能扩展困难: 新增工具时可能需要重新调整接口。

MCP:模型上下文协议

MCP(Model Context Protocol)是由 Anstropy 公司(开发 Claude 模型的公司)推出的开放标准协议,旨在解决 AI 模型与外部数据源工具交互的难题。

MCP 就像一个通用的插头或 USB 接口,制定了统一的规范,无论是连接数据库、第三方 API 还是本地文件等各种数据源,都可以通过这个通用的接口来完成,让 AI 模型与外部工具或数据源之间的交互更加标准化和可复用。

MCP 的工作模式

MCP 使用客户端和服务器的交互模式。

  1. MCP Host: 比如 Claude 客户端、Cursor 等工具,它们在内部实现了 MCP Client。
  2. MCP Client: 通过标准的协议和 MCP Server 进行交互。
  3. MCP Server: 由各种第三方开发者提供,负责实现各种第三方工具的交互逻辑,如访问数据库、访问浏览器、本地文件。
  4. 标准 MCP 协议: 将结果返回给 MCP Client,最终在 MCP Host 上展示。

在这种模式下,开发者只需要按照标准的 MCP 协议进行开发,无需为每个模型与不同资源的对接重复编写适配代码,可以大大节省开发的工作量。

MCP 的核心特点

  • 协议标准化: 可以统一工具的电源格式。
  • 生态兼容性: 一次开发就可以直接对接所有兼容 MCP 的模型和客户端。
  • 动态扩展: 新增工具时,无需修改模型或客户端的代码,即查即用。

MCP 的核心价值

  • 数据孤岛到打通本地云端数据源的交互。
  • 从重复开发到工具开发者只需要适配 MCP 协议。
  • 从生态割裂到形成统一的工具市场。

MCP 就像 USB 的 Type-C 接口,无论是手机、电脑还是其他外设,都可以通过统一的标准协议进行互联。

MCP 的使用

使用 MCP 需要:

  1. 找到一个支持 MCP 协议的客户端。
  2. 找到符合需求的 MCP 服务器。
  3. 在 MCP 客户端里调用这些服务。

MCP 客户端的能力

MCP 对支持客户端划分了五大能力:

  1. Tools: 服务器对外暴露的可执行工具,提供给模型调用,从而实现与外部系统的交互。
  2. Resources: 服务器暴露的数据和内容,提供给客户端进行读取,并作为模型的上下文。
  3. Promise: 服务器定义的可以复用的提示词模板,用于引导大模型的交互。
  4. Sampling: 能够让服务器接触客户端,向模型主动发起请求,从而实现更复杂的智能行为。
  5. Routes: 客户端给服务器指定一些资源和地址,用来告诉服务器应该关注哪些资源,去哪里找这些资源。

目前最常用且被支持最广泛的是 Tools 工具调用。

MCP 客户端的类型

  1. AI 聊天工具: 比如 Fileie、LibreTXT、CherryStudio。
  2. AI 编码工具: 比如 Cursor、Windsurf、Clang。
  3. AI 开发框架: 比如 GinKit、GinAI、Script Bai 等。

MCP 服务器

MCP 服务器的官方描述是:每个程序都通过标准化模型上限文协议来公开特定的功能。MCP 服务器通过标准化协议与客户端进行交互,能够让模型调用特定的数据源或工具和功能。

常见的 MCP 服务器

  1. 文件和数据访问类: 能够让大模型操作访问本地文件或者数据库,比如 File System MCP Server。
  2. Web 自动化类: 能够让大模型操作浏览器,比如 Peptium MCP Server。
  3. 三方工具集成类: 能够让大模型调用三方平台暴露的 API,比如 God 地图的 MCP Server。

查找 MCP 服务器的途径

  1. 官方的 MCP Server 集合 GitHub 仓库: 包含官方参考事例的 MCP Server、被官方集成的 MCP Server 以及一些第三方社区开发的 MCP Server。
  2. MCP.SO: 一个三方的 MCP Server 集合平台,目前已经收录了 6000 多家的 MCP Server,提供了非常友好的展示方式,每个 MCP Server 都有具体的配置实例。
  3. MCP Market: 防速度挺快的,还能按照工具类型进行筛选。

简单 MCP 接入实例

选择 Cherry Studio,因为它对小白用户友好,可以在客户端一键完成必备的网页安装。

  1. 打开 Cherry Studio 客户端。
  2. 到设置 MCP 服务器,完成环境安装。
  3. 在搜索框搜索 文件系统,点击加号,默认创建 MCP Server 的配置。
  4. 补充参数,指定允许访问的文件路径。
  5. 点击保存,服务器绿灯亮起说明配置成功。
  6. 到聊天区域,选择带有扳手图标的模型(因为底层基于 Function Call 实现 MCP)。
  7. 打开 MCP 开关。
  8. 尝试让模型访问桌面上的文件。
  9. 让模型在目录下写入文件并检查文件内容。

实战:利用 VS Code 加 Client 实现精准的外部知识检索

在后续的实战章节,我们将使用 VS Code 加 Client 来调研 MCP。

数据库的选择:MongoDB

选择 MongoDB,一款流行且开源的文档型数据库,数据以 JSON 格式存储。

  • 关系型数据库的表结构是固定的,添加新字段或修改表结构需要复杂的迁移操作。
  • MongoDB 的文档数据模型允许在同一个集合里存储不同结构的文档,程序可以根据需要灵活调整,适用于构建持续补充的结构化知识库的场景。

MongoDB 的安装和配置

  1. 下载 MongoDB Community Server (免费开源版本)。
  2. 安装完成后,默认监听本地 27017 端口。
  3. 安装 MongoDB Compass 客户端 (MongoDB 提供的本地 GUI 可视化工具)。
  4. 通过 MongoDB Compass 连接到本地的 MongoDB Server。
  5. 通过客户端将数据导入 MongoDB 的数据库。

数据展示

使用学生信息数据进行展示。包括学生信息表、教师表、学生分数表、学生班级表等。

使用 AI 编写脚本导入数据

借助 AI 编写脚本将表格结构化数据导入 MongoDB。

Client 的安装和配置

Client 对 MCP 的建设效果不错,开源免费且国内可用。

  1. 在 VS Code 插件市场搜索 Client,找到下载量最大的版本并安装。
  2. 在左上角的工具栏找到 Client 的图标,打开设置,进行模型配置。
  3. 选择模型提供商(如 OpenRouter),选择免费模型。
  4. 在聊天窗口进行测试,如果正常输出则配置成功。

配置 MongoDB 的 MCP Server

  1. 找到支持 MongoDB 的 MCP Server(如 mcp-mongo-server)。
  2. 点击工具栏上方的 MCP Server 图标,手动配置。
  3. 点击 Install Tab,点击下方的 Config MCP Servers,打开 JSON 文件。
  4. 将 MongoDB MCP Server 提供的配置文件复制到 Client 端口,并保存。
  5. 如果左侧的 MongoDB 的 MCP Server 的配置的绿灯亮起,说明配置成功。

测试效果

  1. 提问关于统计学生信息的问题。
  2. Client 自动识别问题需要调用 MCP,并询问是否允许调用 MongoDB 的 MCP。
  3. 点击允许。
  4. MCP 准确地从数据库中查询出结果并给出回答。

优化技巧:全局提示词

MCP Server 为模型提供了防数据库的能力,但是数据库的表结构对于模型来说还是完全黑盒的。模型只能靠猜或者先去获取一下现在有哪些表,这些表的结构是什么再进行操作。

解决方案:

  1. 在全局提示词里,把表结构相关的信息和要求明确告诉模型,可以让模型更准确更高效地响应。
  2. 使用 AI 帮助生成表结构的说明。
  3. 将生成的说明复制到 Client 的全局提示词中。

对比实验:MCP 加数据库 vs. 传统 REG

将相同的数据集导入知识库进行测试(使用 Code 进行测试)。结果显示,在这种数据的检索场景下,MCP 加数据库的效果明显优于传统的 REG 方式。

MCP 加数据库的局限性

  1. 不能让 AI 检索过大的数据: MCP 加数据库会真正地直流刺口,需要多少数据就查多少数据,如果一次查询的数据量过大,可能会消耗大量的 Token,甚至让 MCP 客户端卡死。
  2. Token 消耗量大: 很多 MCP 客户端依靠大量的系统提示词来实现与 MCP 的通信,因此使用 MCP Token 的消耗量一定会大幅增长。

总结与展望

MCP 加数据库的方式可以真正降低开发成本,甚至零代码,而且准确性非常高。相信未来一定会成为一种非常热门的产业方式,在智能客服、仓储管理、信息管理这些结构化数据的检索场景下,应该会替代掉传统的 REG 方式。

声明

本教程完全由 Code 秘密花园原创账号全网同名,都叫 Code 秘密花园,其他账号都是搬运。请大家切记上当受骗。

Was this summary helpful?

Quick Actions

Watch on YouTube

Related Summaries

No related summaries found.

Stay Updated

Get the latest summaries delivered to your inbox weekly.