RAG + Function Calling + ReAct 详细讲解
(Agent 岗位最核心三大件,面试必问,我给你讲得透彻又好记)
一、三大核心分别是什么?
1. RAG:检索增强生成
Retrieval Augmented Generation
是什么
让大模型先去外部查资料,再回答问题,而不是只靠模型内部知识。
解决什么
- 模型知识过时
- 私有数据(文档、数据库)无法访问
- 严重幻觉
流程
- 文档加载 → 分块 → 向量化 → 存入向量库
- 用户问题向量化 → 检索最相关片段
- 把问题 + 检索片段一起喂给 LLM
- LLM 基于资料生成答案
特点
- 不训练模型,成本低、安全可控
- 事实性强,适合知识库问答
2. Function Calling:函数调用
也叫 Tool Calling、工具调用
是什么
LLM 不再只输出文本,而是输出结构化指令,让系统去执行外部函数/API/工具。
比如:
- 查天气
- 查数据库
- 调计算器
- 发邮件
- 执行代码
解决什么
- LLM 只会"说话"不会"做事"
- 无法获取实时信息
- 无法操作外部系统
特点
- 结构化输出(JSON)
- 精准调用工具
- Agent 能完成真实任务
3. ReAct:推理 + 行动
Reasoning + Acting
是什么
一种让 LLM 边思考边行动的范式,把"推理"和"工具调用"交替执行。
格式固定为:
- Thought:我要做什么
- Action:调用什么工具
- Observation:工具返回结果
- Thought:根据结果继续推理
...直到得出答案
解决什么
- 复杂问题无法分步解决
- 盲目调用工具
- 缺乏逻辑规划
特点
- 可解释性强
- 适合多步、复杂任务
- 是 Agent 的灵魂架构
二、三者关系(一句话串起来)
- RAG 负责"查知识"
- Function Calling 负责"用工具做事"
- ReAct 负责"规划怎么查、怎么用"
合在一起 = 一个会思考、会查资料、会用工具的智能 Agent。
三、Function Calling 原理(超详细,面试标准答案)
1. 本质原理
Function Calling 的本质是:
把函数信息放进 Prompt,让 LLM 学会输出结构化调用指令,再由后端解析执行。
它不是模型内置魔法 ,完全是提示工程 + 结构化解析。
2. 详细工作流程
① 定义函数元信息(给 LLM 看)
你告诉模型每个工具:
- 函数名
- 功能描述
- 参数名、类型、是否必填
- 示例
例如:
json
{
"name": "get_weather",
"description": "获取城市天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名"
}
},
"required": ["city"]
}
}
② 把函数描述拼进 Prompt
系统提示词模板:
你可以调用以下工具:
- get_weather(city: str)
当需要调用工具时,请严格按 JSON 格式输出...
③ LLM 判断是否需要调用工具
根据用户问题,LLM 推理:
- 不需要 → 直接回答
- 需要 → 生成工具调用 JSON
典型输出:
json
{
"name": "get_weather",
"parameters": {
"city": "北京"
}
}
④ 后端解析并执行函数
后端识别到 JSON → 调用真实接口 → 获取结果。
⑤ 把工具返回结果再喂给 LLM
LLM 根据结果生成最终自然语言回答。
3. 核心原理总结(面试背诵版)
- 通过 Prompt 向 LLM 注入函数元信息(名称、参数、用途)
- LLM 理解任务后,输出结构化调用指令(JSON)
- 系统解析 JSON 并执行真实函数/API
- 将执行结果返回给 LLM,生成最终回答
一句话:
Function Calling = 函数描述Prompt + 结构化输出 + 后端执行调度
四、三者在 Agent 中的地位
- ReAct:大脑(思考与规划)
- Function Calling:手脚(执行动作)
- RAG:记忆与知识库(提供依据)
如果你需要,我可以再给你整理一套
"RAG + Function Calling + ReAct 串联流程图 + 一道综合面试题答案"。