当前位置: 首页 > news >正文

Agent + MCP工具实现数据库查询

目录

1. RAG

2. Function Calling(函数调用)

3. MCP(模型上下文协议)

4. 案例实践 (Dify+Agent +MCP数据查询)

5. 参考资料:


在大模型领域里,RAG和Function Calling是常见的概念,他们之间又是有区别的,RAG是为了让大模型获取足够的上下文,Function Calling 是为了让模型使用工具。在介绍案例之前,先回顾一下几个关键的概念:

1. RAG

RAG(Retrieval Augmented Generation ,检索增强生成),我们不需要训练和微调大模型,只需要提供和用户提问相关的额外的信息到提示词中,从而可以获得更高质量的回答。RAG原理图如下所示:

图片来源:https://www.dailydoseofds.com/content/images/size/w1000/2025/02/rag-diagram.webp

LLM 接收到用户的问题后,将首先基于关键词在知识库内检索内容。知识库将根据关键词,召回相关度排名较高的内容区块,向 LLM 提供关键上下文以辅助其生成更加精准的回答。

开发者可以通过此方式确保 LLM 不仅仅依赖于训练数据中的知识,还能够处理来自实时文档和数据库的动态数据,从而提高回答的准确性和相关性。

通过上述介绍,我们可以总结出来RAG的核心优势有以下几点

实时性:知识库中的数据可随时更新,确保模型获得最新的上下文。

精准性:通过检索相关文档,LLM 能够基于实际内容生成高质量的回答,减少幻觉现象。

灵活性:开发者可自定义知识库内容,根据实际需求调整知识的覆盖范围。


2. Function Calling(函数调用)

Function Calling  是一种允许大型语言模型(LLM)根据用户输入识别它需要的工具并决定何时调用该工具的机制,运行流程见下图所示:

图片来源:https://mmbiz.qpic.cn/mmbiz_gif/Z6bicxIx5naL2bakmHG7gRicob7WwaDUzeEOaOmlYcCrqIG37TO4Vub6uLFW2BiacbZaMc0ZXzkY5qY93b9Rcys4w/640?wx_fmt=gif&from=appmsg&wxfrom=5&wx_lazy=1&tp=webp


3. MCP(模型上下文协议)

模型上下文协议(Model Context Protocol,简称MCP)是一个由 Anthropic 在 2024 年 11 月 25 日开源的新标准。它是一个开放标准,旨在连接AI助手与数据所在的系统,包括内容存储库、业务工具和开发环境。其目标是帮助前沿模型产生更好、更相关的响应。

MCP 可以看作是 AI 应用程序的 "USB-C端口"。就像 USB-C 为连接设备与各种外设提供了标准化方式,MCP为 AI 模型连接不同数据源和工具提供了标准化方法。


4. 案例实践 (Dify+Agent +MCP数据查询)

介绍完以上概念后,我们来看一下基于Agent策略 + MCP工具实现自然语言查询数据库的一个案例,案例会用到两个插件

(插件离线安装请参考手册,跳转地址 :Dify安装插件实战:如何离线安装dify插件):

Agent 策略(支持 MCP 工具)和 MCP SSE / StreamableHTTP

启动一个MCP SERVER ,例如启动一个db查询的mcp server:

docker run -d --rm --init \--name dbhub \--publish 8080:8080 \bytebase/dbhub \--transport sse \--port 8080 \--dsn "mysql://user:password@localhost:3306/mcp_db?sslmode=disable"

下一步在dify中配置工作流,Dify中Agent节点的信息如下图所示,记得给MCP工具授权,配置mcp服务信息::

当我们运行时,Agent策略结合大模型会自动选择合适的工具来执行,运行效果如下所示:


5. 参考资料:

1、Dify安装插件实战:如何离线安装dify插件

2、https://marketplace.dify.ai/

3、https://www.dailydoseofds.com/content/images/size/w1000/2025/02/rag-diagram.webp

4https://mmbiz.qpic.cn/mmbiz_gif/Z6bicxIx5naL2bakmHG7gRicob7WwaDUzeEOaOmlYcCrqIG37TO4Vub6uLFW2BiacbZaMc0ZXzkY5qY93b9Rcys4w/640?wx_fmt=gif&from=appmsg&wxfrom=5&wx_lazy=1&tp=webp

相关文章:

  • 深度剖析Node.js的原理及事件方式
  • day14 leetcode-hot100-25(链表4)
  • 动态规划之网格图模型(一)
  • 单元测试报错
  • 【ClickHouse】RollingBitmap
  • [3D GISMesh]三角网格模型中的孔洞修补算法
  • Ubuntu 18.04 上源码安装 protobuf 3.7.0
  • java/mysql/ES下的日期类型分析
  • 1、python代码实现与大模型的问答交互
  • 关于位图Bitmaps的介绍
  • js 动画库、2048核心逻辑、面试题add[1][2][3]+4
  • 湖北理元理律师事务所:债务优化中的生活保障实践
  • 图解gpt之Transformer架构与设计原理
  • 第十三篇:MySQL 运维自动化与可观测性建设实践指南
  • DeepSeek-R1-0528
  • 基于云模型与TOPSIS评价算法的综合应用研究
  • 简单说一说Modern ABAP这个概念
  • 专业级图片分割解决方案
  • 【清晰教程】利用Git工具将本地项目push上传至GitHub仓库中
  • 探索C++模板STL
  • 网站三级域名对网站有影响吗/怎么引流推广自己的产品
  • 网络服务机构的网站/谷歌浏览器chrome官网
  • 九台市做网站的公司/网络营销ppt模板
  • 网站建设托管/网站设计服务企业
  • 如何做购物网站的后台/品牌互动营销案例
  • 网站定制哪家比较好/seo简单优化