📌 文章信息
目标读者:技术入门/进阶学习者、在校学生、面试备考者、相关技术栈开发工程师

文章定位:技术科普 + 原理讲解 + 代码示例 + 面试要点,兼顾易懂性与实用性
写作风格:条理清晰、由浅入深、语言通俗、重点突出

一、开篇引入:为什么现在每个人都在谈论“外卖助手AI操作”?
你有没有遇到过这样的场景:对着外卖App说了句“帮我点一份不辣的外卖”,系统却推荐了一堆麻辣烫?或者你希望AI能记住你每周三中午固定点那家轻食沙拉,但每次都得重新输入?
这些困扰正在被一项前沿技术解决——外卖助手AI操作。在2025—2026年,AI Agent(智能体)与RAG(检索增强生成)技术的深度融合,使得外卖点餐场景成为大模型落地的最佳试验场之一--23。
学习者的常见痛点:很多开发者能用现成的AI点餐功能,但不懂背后的原理;面试官问到“RAG和Agent的区别”时答不上来;或者知道概念却写不出可运行的代码示例。本文将围绕外卖助手AI操作这一生活化场景,由浅入深地拆解核心技术与底层原理。
本文讲解范围:RAG核心概念 → Agent智能体架构 → 两者关系与对比 → 代码实战示例 → 底层原理剖析 → 高频面试题 → 总结与进阶预告。
二、痛点切入:为什么需要外卖助手AI操作?
让我们先看一段传统的点餐实现代码:
传统方式:硬编码规则 def order_food(user_input): if "汉堡" in user_input: return "麦当劳:巨无霸套餐,¥35" elif "披萨" in user_input: return "必胜客:超级至尊披萨,¥69" else: return "抱歉,暂未识别您的需求"
传统方式的缺点:
❌ 耦合高:关键词匹配规则写死在代码中,每增加一个新菜品都需要改代码
❌ 扩展性差:无法处理“不辣”“少油”“离我最近”等复杂约束
❌ 维护困难:商家菜单变更、优惠券更新都需要手动修改
❌ 无记忆能力:无法记住用户历史偏好,每次都要重新问
正是这些痛点,催生了外卖助手AI操作技术的出现——通过RAG检索增强和Agent自主决策,让AI真正“懂”用户需求、会“操作”外卖平台。
三、核心概念讲解:RAG——为AI“装上”实时知识库
标准定义
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索系统与大型语言模型生成能力相结合的技术框架-。简单说,就是让AI在回答问题之前先去“查资料”,而不是凭空编造。
关键词拆解
检索(Retrieval) :从外部知识库(如向量数据库)中找到与用户问题最相关的信息片段
增强(Augmented) :将检索到的信息与用户原始问题拼接,形成更丰富的提示上下文
生成(Generation) :LLM基于增强后的上下文生成最终回答
生活化类比
原始的LLM像一个只靠教科书答题的“天才学生”,但教科书内容可能过时;RAG则为这位学生配备了一位“顶级图书管理员”和一座“实时更新的数字图书馆”——每次回答问题前,图书管理员会迅速找到最相关的权威资料供他参考-14。
作用与价值
提升准确性:从根本上减少模型“幻觉”(编造不符合事实的内容)-14
知识可实时更新:无需重新训练模型,只需更新后端知识库-14
来源可追溯:每个回答都基于可检索的文档,可提供引用来源-14
成本效益显著:相比训练一个涵盖所有知识的巨型模型,RAG更轻量灵活-14
RAG的核心工作流程
RAG将外部知识检索与LLM生成相结合,分为三个核心阶段:
索引阶段(离线) :将知识源(如商家菜单、用户评价)分割成片段→转换为向量→存入向量数据库-14
检索阶段(在线) :将用户问题转换为向量→在向量数据库中最相关的文档片段-14
生成阶段:检索到的文档+用户问题→拼接为增强提示→输入LLM生成回答-14
💡 知识卡片:什么是向量数据库?
RAG检索过程中需要使用向量数据库(Vector Database),它是一种专门用于存储和检索高维向量数据的数据库系统。在RAG中,知识片段(如商家菜单、用户评价)通过嵌入模型(Embedding Model)转换为向量表示,存入向量数据库。当用户提出问题时,同样将问题转换为向量,数据库通过计算向量相似度,快速返回语义上最相关的知识片段。
四、关联概念讲解:Agent——让AI不仅能“想”还能“做”
如果说RAG解决了AI“怎么说”的问题(回答准确),那么Agent解决的是AI“怎么做”的问题(自主行动)。
标准定义
Agent(智能体)是一种具备完整闭环能力的智能系统,通常由“感知—规划—执行—反馈”四个环节构成,能够实现目标驱动的自主决策与工具调用-1。
四大核心组件
一个完整的LLM Agent由以下四个关键模块组成-3:
| 组件 | 功能 | 外卖场景示例 |
|---|---|---|
| LLM(大脑) | 核心决策调度,负责逻辑推理与意图识别 | 理解“中午想吃点轻食”背后的低卡需求 |
| 规划模块(Planner) | 任务拆解与路径选择 | 将点餐拆解为:→筛选→比价→下单 |
| 记忆系统(Memory) | 短期/长期上下文存储 | 记住用户上周三点了轻食沙拉 |
| 工具箱(Tool Use) | 通过API调用外部工具 | 调用API、支付接口、地图服务 |
Agent的工作流程:ReAct模式
Agent的工作本质上是一个 “感知—思考—行动”的循环,这种模式被称为 ReAct(Reasoning + Acting,推理与行动)-3。
ReAct的核心思想是在“思考链”中间插入“动作”和“环境反馈”,形成多轮循环-:
Thought(推理): 用户想吃辣的中餐 → Action(行动): 调用search_restaurants(cuisine="川菜") Observation(观察): 返回3家川菜馆,但评分都在3.5以下 Thought(调整): 高评分的川菜馆太少,扩大范围到“辣味中餐” Action(行动): 调用search_restaurants(cuisine="湘菜", spicy=true) ...
在ReAct出现之前,LLM解决复杂任务主要存在两种独立的方法:思维链(CoT)依赖模型内部知识,常导致事实错误;直接行动则缺乏推理过程-。ReAct将两者结合,让模型能够基于环境反馈动态调整策略。
以肯德基的AI点餐智能体“小K”为例:
当用户说“中午开会点个工作餐,一共10个人,要三个鸡肉汉堡、两个牛肉汉堡、两个鸡肉卷,其他看着办,350块以内”,小K能自动:
理解:解析人数、预算、具体菜品要求
规划:计算剩余预算→推荐补充菜品→匹配门店
执行:调用点餐API→完成选品→发起支付→导航取餐-23
小K还具备记忆功能:在早高峰时期,可根据过往点餐记录直接推荐用户喜欢的餐品,节省用户时间-23。
五、概念关系与区别总结
RAG vs Agent:本质差异
| 对比维度 | RAG | Agent |
|---|---|---|
| 核心问题 | 如何让回答更准确 | 如何让系统自主完成任务 |
| 处理方式 | 单次检索+生成 | 多轮推理+行动循环 |
| 是否调用工具 | 否(仅检索知识) | 是(调用API、操作界面) |
| 有无状态管理 | 无 | 有(记忆系统) |
| 典型场景 | 问答、摘要、文档对比 | 点餐下单、自动化操作 |
一句话总结
RAG负责“查资料”,Agent负责“办事” -44。
RAG为Agent提供事实依据,Agent基于RAG检索的信息进行决策和行动。两者不是替代关系,而是协同关系——RAG让Agent知道“有什么”,Agent决定“怎么做”。
技术演进路径
在2026年的技术趋势中,Agentic RAG(智能体化RAG)正在成为新的演进方向——它将Agent的推理决策能力融入RAG流程,使检索过程本身也变成动态的、有条件触发的-。Agentic RAG不仅是回答问题,而是支持完成完整的工作流-。
六、代码示例:一个简化版的外卖助手AI操作
以下是一个用Python实现的外卖助手AI操作示例,演示了RAG检索+Agent决策的核心流程。
外卖助手AI操作示例 import json from typing import List, Dict ========== 第一步:构建RAG知识库(向量检索)========== class RAGKnowledgeBase: def __init__(self): 模拟商家菜单库 self.menu_data = [ {"id": 1, "name": "真味斋盖饭", "tags": ["盖饭", "不辣", "米饭"], "price": 28, "rating": 4.5}, {"id": 2, "name": "麻辣香锅", "tags": ["麻辣", "香锅", "重口味"], "price": 42, "rating": 4.2}, {"id": 3, "name": "轻食沙拉", "tags": ["轻食", "沙拉", "低卡"], "price": 35, "rating": 4.8}, ] 简化的向量相似度计算(实际应用中使用向量数据库) def retrieve(self, query_tags: List[str], top_k: int = 2) -> List[Dict]: scored = [] for item in self.menu_data: 计算标签匹配分数 match_count = len(set(query_tags) & set(item["tags"])) score = match_count 0.6 + item["rating"] 0.4 scored.append((item, score)) scored.sort(key=lambda x: x[1], reverse=True) return [item for item, _ in scored[:top_k]] ========== 第二步:构建Agent决策系统 ========== class FoodOrderingAgent: def __init__(self, knowledge_base: RAGKnowledgeBase): self.kb = knowledge_base self.memory = {"user_preferences": [], "last_order": None} 记忆系统 ReAct模式核心 def process_order(self, user_query: str) -> Dict: Step 1: Thought(推理)- 解析用户意图 thought = self._parse_intent(user_query) print(f"[Thought] 解析意图: {thought}") Step 2: Action(行动)- 检索知识库 retrieved = self.kb.retrieve(thought["tags"]) print(f"[Action] 检索结果: {[r['name'] for r in retrieved]}") Step 3: Observation(观察)- 评估结果并决策 if not retrieved: return {"status": "error", "message": "未找到匹配的菜品"} 更新记忆 self.memory["last_order"] = retrieved[0] Step 4: 返回推荐结果(实际场景会调用下单API) return { "status": "success", "recommendation": retrieved[0], "action_required": "请确认是否下单" } def _parse_intent(self, query: str) -> Dict: """模拟LLM意图识别(实际应用中使用LLM模型)""" tags = [] if "不辣" in query or "免辣" in query: tags.append("不辣") if "盖饭" in query or "米饭" in query: tags.append("盖饭") if "轻食" in query or "低卡" in query: tags.append("轻食") return {"raw_query": query, "tags": tags if tags else ["推荐"]} ========== 第三步:运行演示 ========== if __name__ == "__main__": 初始化RAG知识库和Agent rag = RAGKnowledgeBase() agent = FoodOrderingAgent(rag) 测试用户输入 result = agent.process_order("帮我点一份不辣的外卖,要盖饭") print(f"[Result] {json.dumps(result, ensure_ascii=False, indent=2)}")
代码执行流程说明:
感知阶段:Agent接收用户输入“不辣的外卖,要盖饭”
规划阶段:LLM解析意图,提取关键词
tags = ["不辣", "盖饭"]行动阶段:调用RAG检索接口,在知识库中匹配菜品
观察阶段:返回Top-1推荐“真味斋盖饭”,等待用户确认
关键步骤注释:
RAGKnowledgeBase.retrieve():模拟RAG检索,计算语义相似度-14FoodOrderingAgent.memory:实现短期记忆,记录历史偏好-3process_order():实现ReAct循环的核心逻辑-
七、底层原理与技术支撑
RAG的底层原理
RAG的核心依赖以下几个技术支柱:
向量嵌入(Embedding) :将文本转化为高维向量,实现语义相似度计算-14
向量数据库:支持大规模向量的近似最近邻(ANN),实现毫秒级检索
注意力机制(Attention) :在增强阶段将检索结果与用户查询深度融合,确保知识注入的自然性-
RAG与传统LLM的核心差异:传统LLM完全依赖参数化记忆(将知识固化在模型参数中),而RAG采用混合记忆模式,通过“检索+生成”实现知识的外部化存储与实时调用-11。
Agent的底层原理
Agent的核心依赖:
大语言模型(LLM) :作为决策大脑,提供推理与规划能力-1
函数调用(Function Calling/Tool Use) :通过标准API接口让LLM能够调用外部工具-3
记忆机制:短期记忆依赖上下文窗口,长期记忆依赖RAG架构实现知识长效存储-3
为什么RAG和Agent是外卖助手的“黄金搭档”
在外卖场景中,用户需求往往包含两类信息:事实性信息(“这家店的评分是多少”“有没有不辣的菜”)和操作性需求(“帮我把这个加入购物车”“用优惠券结算”)。RAG擅长解决前者(检索事实),Agent擅长解决后者(执行操作),两者结合才能实现真正的全流程自动化。
八、高频面试题与参考答案
面试题1:RAG和Agent的区别是什么?
参考答案:
RAG(检索增强生成)是一种技术框架,通过从外部知识库检索相关信息来增强LLM的回答准确性;而Agent(智能体)是一个具备自主决策和行动能力的系统,通过“感知—规划—执行—反馈”闭环完成复杂任务。
核心区别三点:
RAG解决“怎么说准确”,Agent解决“怎么做事情”
RAG通常单次完成,Agent需要多轮循环迭代
RAG不涉及工具调用,Agent必须能够调用API/外部系统
一句话总结:RAG负责“查资料”,Agent负责“办事”-44。
面试题2:请简述ReAct模式的工作原理。
参考答案:
ReAct(Reasoning + Acting)是Agent的核心工作模式,将推理和行动交替进行。其流程为:
Thought(推理) :LLM生成推理轨迹,拆解任务
Action(行动) :执行具体工具调用
Observation(观察) :获取执行结果,更新状态
如果目标未达成,则返回Thought继续循环,直到完成或超时--57。
核心价值:相比纯CoT(思维链),ReAct引入了环境反馈,使模型能够基于真实信息动态调整策略,避免“闭门造车”式的推理错误-。
面试题3:如何解决大模型在外卖场景中的“幻觉”问题?
参考答案:
采用RAG架构,核心方案是“先检索、后生成”:
构建向量数据库存储商家菜单、用户评价等结构化知识
用户提问时,先检索相关知识而非让LLM直接回答
将检索结果作为上下文输入LLM,约束生成范围
在回答中标注信息来源,增强可追溯性
效果:RAG通过引入外部可靠知识源,从根本上减少了模型“胡言乱语”的现象-14。
面试题4:Agent的记忆系统如何实现?
参考答案:
Agent的记忆系统分为两类:
短期记忆:利用LLM的上下文窗口(Context Window)记录当前会话流,无需额外存储
长期记忆:通过RAG架构实现,将历史交互和用户偏好存入向量数据库,需要时检索调用-3
实现关键:区分会话内记忆(短期)和跨会话记忆(长期),前者依赖上下文,后者依赖外部存储。
面试题5:外卖助手中的RAG和微调(Fine-tuning)有何区别?如何选择?
参考答案:
| 维度 | RAG | 微调 |
|---|---|---|
| 知识更新 | 实时(更新外部库即可) | 需重新训练模型 |
| 成本 | 低(无需大量GPU) | 高(数万美元级) |
| 可解释性 | 高(可溯源) | 低(黑盒) |
| 适用场景 | 动态知识、需溯源的场景 | 固定风格/格式的输出 |
选择建议:外卖助手中的商家菜单、优惠券等高频变动信息适合RAG;对话风格、固定话术模板适合微调。
九、结尾总结
核心知识点回顾
RAG(检索增强生成) :让AI先“查资料”再“回答”,解决幻觉和知识过时问题
Agent(智能体) :让AI不仅“理解”还能“行动”,通过ReAct模式实现自主任务完成
RAG vs Agent:RAG是“知识工具”,Agent是“行动系统”,两者协同构建完整的外卖助手AI操作闭环
技术依赖:RAG依赖向量嵌入和向量数据库,Agent依赖LLM推理和函数调用
重点与易错点
⚠️ 不要混淆“RAG”和“微调”——两者解决不同问题,而非替代关系
⚠️ Agent并非简单的“大模型+工作流”,其核心在于自主决策能力和闭环反馈机制
⚠️ RAG不能替代Agent——只检索不行动,无法完成下单操作
进阶预告
下一篇将深入探讨Agentic RAG——当Agent的推理能力融入RAG检索流程,AI如何实现真正的“智能体化知识检索”。同时会涉及多智能体协同(Multi-Agent Collaboration)在外卖推荐场景中的应用-3。
参考文献
智谱AI, AutoGLM 2.0产品发布, 2025-67
肯德基, AI点餐智能体“小K”技术文档, 2026-23
阿里云开发者社区, AI 十大论文精讲:RAG技术深度解读, 2025-11
ABBYY Blog, RAG vs Agentic RAG Explained, 2026-44
腾讯云开发者社区, LLM全新智能体架构全解析, 2026-3