V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
suke119
V2EX  ›  程序员

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

  •  7
     
  •   suke119 · 4 天前 · 2847 次点击

    🔗 懒人直看版

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

    特性 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 全解析

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

    但是 LLM 的能力学「方言」其实很容易。所以其实没必要用 MCP ,直接把工具调用的提示词加在提示词前面就好了。有很多现成的库可以管理这些了。
    suke119
        15
    suke119  
    OP
       15 小时 56 分钟前
    @lindongwu11 这个怎么说呢 MCP 现在是一种狂热阶段,后续不知道;像 高德地图、github 仓库、这些都有对应的 mcp server ,工具调用 我们自己还需要维护工具(自己实现工具),但是 mcp 相当于封装了一层 只给我们暴露了函数和参数,具体工具实现不用我们管。边走边看,后面会发展成啥样子都是未知的
    sweat89
        16
    sweat89  
       15 小时 3 分钟前
    我是不是可以理解成,在 mcp 之前都是通过 function calling 实现的
    suke119
        17
    suke119  
    OP
       14 小时 50 分钟前
    @sweat89 是的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5815 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 01:55 · PVG 09:55 · LAX 18:55 · JFK 21:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.