一文秒懂 AI 核心: Agent、RAG、Function Call 与 MCP 全解析 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
suke119
V2EX    程序员

一文秒懂 AI 核心: Agent、RAG、Function Call 与 MCP 全解析

  •  9
     
  •   suke119
    wangsrGit119 191 天前 5905 次点击
    这是一个创建于 191 天前的主题,其中的信息可能已经有所发展或是发生改变。

    懒人直看版

    一图胜千言,我们用一个表格来总结下它们的关系和区别:

    特性 MCP (模型上下文协议) RAG (检索增强生成) Agent (智能体) Function Call (函数调用)
    核心思想 标准化 AI 与外部数据/工具的通信协议 检索外部知识 + 增强提示 + 生成回答 LLM 驱动的自主决策任务执行系统 LLM请求执行外部预定义函数/工具的能力
    本质 协议/规范 技术框架/方法 系统/应用范式 模型能力/特性
    通俗比喻 标准化的 USB 接口 写论文前先查资料 能干的私人助理 助理按指令使用 App
    关系链 可作为 Agent 调用工具的底层标准 常被 Agent 用作获取知识的手段 核心指挥官,使用 RAG/Function Call 等工具 Agent 执行具体动作的基本手段

    简单来说,它们的关系就像:

    • Agent (智能体) 是那个目标导向的项目经理/大脑
    • RAGFunction Call 是它工具箱里的得力工具:RAG 负责查资料、找依据; Function Call 负责执行具体操作、调用外部 API 。
    • MCP 则致力于提供一个标准化的接口规范,让 Agent 能更方便、更统一地接入和使用各种工具(无论是 RAG 功能还是其他 Function Call 实现的工具)。

    Function Call:给 AI 装上“遥控器”

    • 这是啥? Function Call 是 LLM 的一项内置“特异功能”。它允许 LLM 在需要的时候,请求外部程序帮它做点事。注意,是“请求”,不是“亲自做”。
    • 为啥要它? 因为 LLM 自己查不了实时股价、订不了机票、发不了邮件。有了 Function Call ,LLM 就能“指挥”其他工具来完成这些操作。
    • 通俗比喻: 就像你让智能音箱帮你“查下今天北京天气”。音箱( LLM )自己感知不到天气,但它知道要去调用“天气查询”这个 App (预定义的函数/工具)。它生成指令(“查北京天气”),App 执行后把结果(“晴,25 度”)告诉音箱,音箱再用自然语言告诉你。
    • 简单例子: 你问 AI:“AAPL 股价多少?” AI 判断需要查实时数据,于是生成一个“请求”:{调用函数: "查股价", 参数: {"股票代码": "AAPL"}}。外部程序收到请求,查询 API ,返回结果 {"价格": 180.50}。AI 再根据这个结果回答你:“苹果当前股价是 180.50 美元。”

    RAG:AI 的“开卷考试”神器

    • 这是啥? RAG (Retrieval-Augmented Generation) 是一种让 AI 回答更靠谱的技术框架。简单说,就是在 AI 回答问题 之前,先让它去指定的资料库(比如公司内部文档、最新的行业报告)里查找 (Retrieval) 相关信息。
    • 为啥要它? 防止 AI 一本正经地“胡说八道”(专业术语叫“幻觉”),让它的回答基于最新的、准确的、特定的事实依据。
    • 通俗比喻: 好比你写论文要引用最新数据。你不会光凭记忆( LLM 的内部知识)瞎写,而是会先去图书馆或数据库**查资料 (检索),把找到的关键信息整合 (增强)进你的论据里,最后才下笔写作 (生成)**。RAG 就是让 AI 也学会这种“先查再答”的好习惯。
    • 简单例子: 你问 AI:“我们公司最新的报销政策是啥?” RAG 系统先去公司内部知识库检索“报销政策”文档,找到相关段落。然后把这些段落和你的问题一起“喂”给 AI ,AI 参考着这些最新政策,给你一个准确的回答。

    MCP:AI 与工具间的“通用插座标准”

    • 这是啥? MCP (Model Context Protocol) 是 Anthropic 公司(就是搞出 Claude 那个)在 2024 年底提出并开源的一种标准化通信协议。它定义了一套规则,让 AI 应用(客户端)能以统一的方式,与各种外部数据源或工具(服务器)进行交互。
    • 为啥要它? 想象一下,如果每个工具都有自己独特的接口,那 Agent 想用多个工具时,岂不是要学 N 种“方言”? MCP 就是想统一这个接口标准,让工具“即插即用”。
    • 通俗比喻: MCP 就像是给 AI 大脑和外部工具之间制定了一个通用的 USB 接口标准。无论是本地文件系统、数据库,还是 Slack 、GitHub 这些应用,只要它们提供符合 MCP 标准的“服务器”,AI 应用(客户端)就能轻松连接并使用它们的功能,无需为每个工具单独适配。
    • 简单例子: 在支持 MCP 的编辑器里,你可以让 AI“把我 /docs 目录最新的 Markdown 文件总结一下,发到 Slack 的 #general 频道”。编辑器( MCP 客户端)通过 MCP 协议,与本地的“文件系统 MCP 服务器”和“Slack MCP 服务器”沟通,协调完成整个任务。
      • 支持 MCP 的客户端/服务器:

      • 客户端: Claude Desktop App, Cursor, Windsurf, Cherry Studio 等 AI 编辑器或应用。

      • 服务器: Anthropic 官方和社区提供了针对 Google Drive, Slack, GitHub, Git, Postgres, Puppeteer, Milvus (向量数据库), Firecrawl (网页抓取) 等的开源 MCP 服务器实现。开发者也可以根据 MCP 规范自定义服务器。目前,为安全起见,MCP 服务器通常在本地运行。

    完整带图全文

    一文秒懂 AI 核心:Agent 、RAG 、Function Call 与 MCP 全解析

    18 条回复    2025-04-12 20:43:24 +08:00
    twinsant
        1
    twinsant  
       187 天前   1
    点赞
    marktrains
        2
    marktrains  
       187 天前 via iPhone   2
    点赞,不过这个看起来似乎也是 AI 总结的
    z4zr
        3
    z4zr  
       187 天前   1
    点赞
    suke119
        4
    suke119  
    OP
       187 天前
    @marktrains 那不能 ,完整全文里面图片是 AI 生成的,用的 napkin 做的 可视化图
    Magicdove
        5
    Magicdove  
       187 天前
    很通俗易懂
    SGL
        6
    SGL  
       187 天前
    @suke119 啊,这个图完全是 AI 生成的吗。虽然看上去有点糊。
    gowk
        7
    gowk  
       187 天前
    总结的确实不错
    suke119
        8
    suke119  
    OP
       187 天前   1
    @SGL 因为 napkin 生成后我手动截图的,所以有点糊哈哈哈
    mimiga
        10
    mimiga  
       187 天前   1
    比喻很生动
    paopjian
        11
    paopjian  
       187 天前
    function call 实现的原理是什么呢, LLM 应该是输入输出只有文本的, 是有另外的程序接受 LLM 发送的指令, 同时 LLM 也知道可以用指令操作外部程序?
    suke119
        12
    suke119  
    OP
       187 天前   1
    @paopjian 你可以把他理解成 预定义的函数(可多个) 然后 大模型可以针对你提问的问题、上下文和附加函数集合 响应 对应的函数和参数,这些函数是外部定义好的,但是结构化参数和函数名字是大模型可以定向回答的,结合程序实现 对应的 agent
    marktrains
        13
    marktrains  
       187 天前 via iPhone   1
    @suke119 那非常用心了,感谢分享
    lindongwu11
        14
    lindongwu11  
       187 天前
    > 如果每个工具都有自己独特的接口,那 Agent 想用多个工具时,岂不是要学 N 种“方言”?

    但是 LLM 的能力学「方言」其实很易。所以其实没必要用 MCP ,直接把工具调用的提示词加在提示词前面就好了。有很多现成的库可以管理这些了。
    suke119
        15
    suke119  
    OP
       187 天前
    @lindongwu11 这个怎么说呢 MCP 现在是一种狂热阶段,后续不知道;像 高德地图、github 仓库、这些都有对应的 mcp server ,工具调用 我们自己还需要维护工具(自己实现工具),但是 mcp 相当于封装了一层 只给我们暴露了函数和参数,具体工具实现不用我们管。边走边看,后面会发展成啥样子都是未知的
    sweat89
        16
    sweat89  
       187 天前
    我是不是可以理解成,在 mcp 之前都是通过 function calling 实现的
    suke119
        17
    suke119  
    OP
       187 天前
    @sweat89 是的
    quietDown
        18
    quietDown  
       182 天前
    感谢分享,总算对这些概念有了了解。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2185 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 00:53 PVG 08:53 LAX 17:53 JFK 20:53
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86