闲云AI助手核心技术解析:深入拆解RAG与Agent架构原理

小编头像

小编

管理员

发布于:2026年05月13日

4 阅读 · 0 评论

闲云AI助手技术科普 | RAG与Agent原理+代码+面试题

📅 北京时间:2026年4月9日

一、开篇引入

在AI写作工具领域,闲云AI助手作为一款专为网文作者设计的智能创作工具,凭借其先进的AI技术实现了从智能续写到剧情管理的全方位写作辅助-1。而在其背后支撑这一切的核心技术,正是当前AI应用开发中最火的两大架构——RAG(检索增强生成)与Agent(智能体)。很多开发者对这两者的认知仍然停留在概念层面:只会调用API、不懂底层原理、面试中被问到就卡壳。本文将系统拆解RAG与Agent的技术逻辑,辅以可运行的代码示例和面试高频考题,帮助你建立从概念到落地的完整知识链路。

二、痛点切入:为什么需要RAG和Agent?

🔴 传统大模型开发的痛点

看看下面这段传统代码,是不是很眼熟?

python
复制
下载
import openai

def ask_model(question):
     传统方式:直接询问大模型
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": question}]
    )
    return response.choices[0].message.content

 问题:模型无法访问最新知识,容易产生“幻觉”
print(ask_model("我们公司最新发布的产品的定价是多少?"))
 模型可能会编造一个完全不存在的价格!

❌ 传统方式的三大致命缺陷

  1. 知识固化:模型的知识止步于训练数据的截止日期,无法获取实时信息

  2. 能力局限:只能回答问题,无法调用工具执行任务(如查数据库、发邮件、生成图表)

  3. “幻觉”严重:当不知道答案时,模型倾向于编造而非承认“不知道”

正是这三大痛点,催生了RAG和Agent这两大技术的诞生与发展。

三、核心概念讲解:RAG(检索增强生成)

📚 标准定义

RAG,全称 Retrieval-Augmented Generation,中文译为“检索增强生成” ,是一种在生成回答前先从外部知识库中检索相关信息,再将这些信息作为上下文输入给大模型生成答案的技术范式-15

🎯 拆解关键词,理解其内涵

把RAG拆成三个部分来理解:

组成部分解释类比
Retrieval(检索)从知识库中查找相关文档考试前翻书找知识点
Augmented(增强)将检索到的内容与问题拼接把找到的笔记贴在试卷上
Generation(生成)让模型基于“问题+检索内容”生成答案看着笔记回答题目

💡 生活化类比

RAG就像一个开卷考试的学霸:普通LLM是闭卷考试,全靠记忆;而RAG允许它先翻书(检索知识库),找到相关资料后再作答。这样一来,即使遇到没学过的新知识,也能通过翻书找到答案——既保证了答案的准确性,又避免了凭空编造。

✅ RAG的核心价值

  • 解决知识时效性:知识库可以随时更新,无需重新训练模型

  • 大幅降低“幻觉”:模型必须基于检索到的内容回答,不能凭空编造

  • 保护数据隐私:私有知识可以存在本地向量数据库,无需上传给模型厂商

四、关联概念讲解:Agent(智能体)

🤖 标准定义

Agent,中文译为“智能体”,是一种能自主感知环境、进行思考规划、调用外部工具执行任务,并对执行结果进行反思改进的自主实体-15

🧩 Agent的核心能力构成

一个完整的Agent通常包含四大能力模块:

  1. 记忆(Memory) :记住历史对话和任务状态

  2. 工具调用(Tool Use) :调用API、数据库、计算器等外部能力

  3. 规划(Planning) :将复杂任务拆解为多个子步骤

  4. 反思(Reflection) :检查执行结果,必要时修正路径-15

🏭 闲云AI助手中的Agent应用场景

以闲云AI助手的“智能续写”功能为例,其背后的Agent工作流程如下-1

图表
代码
下载
全屏
渲染失败

这正是Agent区别于传统RAG的核心所在——RAG让模型“知道更多”,Agent让模型“能做更多”-15

五、概念关系与区别总结

📊 RAG vs Agent:一张表看懂核心区别

对比维度RAG(检索增强生成)Agent(智能体)
核心定位让模型“知道更多”让模型“能做更多”
工作模式被动问答自主行动
典型能力检索知识库 → 生成回答规划任务 → 调用工具 → 反思修正
输出形式文本答案文本答案 + 工具执行结果
适用场景知识问答、智能客服、文档任务执行、流程自动化、多步骤操作
技术复杂度较低较高

💡 一句话记忆口诀

RAG 是“开卷考试”让你答得准,Agent 是“项目经理”帮你把事办成。

🔗 两者并非互斥,而是互补协作

在实际的闲云AI助手这类应用中,两者往往是协同工作的:Agent负责理解用户意图、规划任务步骤,而RAG则负责在每一步检索相关知识来支撑决策。AI应用正从“单模型智能”向“多智能体协同”快速演化,RAG、Agent与MCP(模型上下文协议)共同构成了新一代AI应用的核心架构-15

六、代码示例:从零实现一个极简RAG + Agent

📦 环境准备

bash
复制
下载
 安装依赖
pip install openai langchain chromadb tiktoken

🔍 示例一:极简RAG实现(约20行核心代码)

python
复制
下载
import openai
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma

 1. 准备知识库文档
documents = [
    "闲云AI助手是一款专为网文作者设计的AI写作工具。",
    "闲云支持智能续写,能在3秒内完成千余字的情节延续。",
    "闲云AI助手具备人设管理、剧情追踪和自动取章节名功能。"
]

 2. 构建向量数据库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_texts(documents, embeddings)

 3. RAG核心检索生成函数
def rag_answer(question):
     检索相关文档
    retrieved_docs = vectorstore.similarity_search(question, k=2)
    context = "\n".join([doc.page_content for doc in retrieved_docs])
    
     将检索内容拼接到提示词中
    prompt = f"""
    基于以下参考资料回答问题。如果资料中没有答案,请回答"不知道"。
    
    参考资料:
    {context}
    
    问题:{question}
    回答:
    """
    
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

 测试
print(rag_answer("闲云AI助手有哪些核心功能?"))
 输出:闲云AI助手具备人设管理、剧情追踪和自动取章节名等功能。

⚙️ 关键步骤解读

步骤说明
① 准备知识库将需要检索的文档预先准备好
② 构建向量数据库将文档转为向量并存储,便于相似度检索
③ 相似度检索根据用户问题找出最相关的K个文档片段
④ 上下文拼接将检索结果与用户问题合并成Prompt
⑤ 生成回答模型基于检索内容生成准确回答

🤖 示例二:Agent核心框架(带规划与反思)

python
复制
下载
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI

 1. 定义可用的工具
def search_knowledge_base(query: str) -> str:
    """从知识库中检索信息"""
     这里可以调用上面的RAG检索函数
    return f"检索结果:关于'{query}'的文档..."

def send_email(recipient: str, content: str) -> str:
    """发送邮件(示例)"""
    return f"邮件已发送至{recipient}"

tools = [
    Tool(name="KnowledgeBase", func=search_knowledge_base, description="知识库"),
    Tool(name="EmailSender", func=send_email, description="发送邮件")
]

 2. 初始化Agent(ReAct模式)
agent = initialize_agent(
    tools=tools,
    llm=OpenAI(temperature=0),
    agent="zero-shot-react-description",
    verbose=True
)

 3. 用户下达任务
task = "请先查询闲云AI助手的最新功能介绍,然后将查询结果发送邮件给 team@example.com"

 Agent会自动执行:理解→规划→调用工具→反思→完成
result = agent.run(task)

📈 新旧方式对比:效果一目了然

对比项传统LLM直接调用RAG + Agent方案
知识时效性无法获取最新信息✅ 可实时更新知识库
任务执行能力仅能回答问题✅ 可调用工具、执行多步骤任务
答案准确性存在“幻觉”风险✅ 基于检索内容,准确率显著提升
成本稍高(需维护向量库和Agent框架)

七、底层原理支撑

RAG和Agent之所以能高效运作,底层离不开几个关键技术支柱:

1️⃣ 向量数据库与Embedding

将文档转化为高维向量,通过余弦相似度等算法快速找到语义相关的文档。常用向量数据库包括Chroma、Milvus、Pinecone等-29

2️⃣ 大模型与注意力机制

RAG和Agent都建立在Transformer架构的大语言模型之上,其自注意力机制能够有效融合用户输入和检索到的上下文信息。

3️⃣ Function Calling(函数调用)

OpenAI等大模型厂商提供的Function Calling能力,是Agent调用外部工具的技术基础——模型可以生成结构化的JSON参数,系统据此执行对应的函数并返回结果。

4️⃣ 知识图谱与推理引擎

在更复杂的Agent场景中,知识图谱用于构建“用户意图-任务步骤-资源需求”的关联模型,让Agent能够理解深层语义并做出合理规划-14

八、高频面试题与参考答案

📝 面试题1:RAG和Agent有什么区别?各自适用什么场景?

【标准答案】

RAG(检索增强生成)和Agent(智能体)的核心区别在于能力边界

  • RAG侧重“知道更多”——通过检索外部知识库来增强模型的回答质量,本质是被动问答。适用于知识问答系统、智能客服、文档等场景-15

  • Agent侧重“能做更多”——具备自主规划、工具调用和反思修正能力,本质是主动执行。适用于任务自动化、多步骤流程处理等场景-15

【踩分点】 能说清“知道 vs 能做”的本质区别,并能分别给出典型应用场景,即可获得高分。

📝 面试题2:如何评估和提升RAG系统的检索召回率?

【标准答案】

提升RAG检索召回率的常用策略:

  1. 多路检索融合:同时使用向量检索(语义匹配)和关键词检索(BM25),再对结果进行重排序融合-29

  2. 查询改写:对用户原始问题进行扩写或分解,生成多个相关查询并行检索。

  3. 分块策略优化:调整文档分块大小,或采用滑动窗口重叠分块,确保关键信息不被切散。

  4. 元数据过滤:在检索前先根据时间、类别等元数据缩小检索范围。

【踩分点】 面试官希望听到具体的工程化方案,而非“用更好的Embedding模型”这种泛泛回答-33

📝 面试题3:Agent在执行任务时最常见的失败场景有哪些?如何解决?

【标准答案】

三大常见失败场景及解决方案:

失败场景具体表现解决方案
工具调用失败LLM生成的参数格式不对或值非法增加参数校验层,格式不合法时让LLM重生成;加入失败重试机制;对关键调用做人工兜底-35
上下文溢出对话轮数过多,Context超限导致Agent遗忘做上下文压缩,定期对历史对话做摘要;采用滑动窗口控制保留的对话轮数-35
目标漂移Agent在执行过程中偏离原始目标每步执行后做目标对齐检查;加入定期反思机制,必要时重新规划-35

【踩分点】 能够结合项目经验说明具体场景和对应解法,尤其是“如何权衡效果与成本”,比堆砌概念更有说服力-35

📝 面试题4:请简述ReAct模式和CoT模式的区别。

【标准答案】

模式全称核心机制适用场景
CoTChain of Thought(思维链)要求模型在输出结论前,先输出中间推理步骤纯推理类问题(数学题、逻辑推理)
ReActReasoning + Acting交替进行“推理”和“行动”,每步推理后可调用工具获取外部信息需要与环境交互的任务(问答+检索)

在RAG场景中,ReAct通常比纯CoT效果更好——因为它让模型可以在推理过程中动态决定何时需要检索外部知识-29

【踩分点】 能说清CoT是“先想再做”,ReAct是“边想边做”,并能结合实际案例说明效果提升幅度。

九、结尾总结

✅ 核心知识点回顾

知识点一句话总结
RAG通过检索外部知识库增强模型回答质量,解决“幻觉”和知识时效性问题
Agent具备规划、工具调用和反思能力,让模型从“问答”升级为“执行”
二者关系RAG让模型“知道更多”,Agent让模型“能做更多”,在实际应用中协同互补
底层技术向量数据库、Embedding、Function Calling、注意力机制缺一不可

🎯 进阶学习方向预告

下一篇我们将深入探讨:

  • MCP(模型上下文协议) —— 让多个Agent能够标准化协作的统一协议

  • Agentic RAG —— 融合Agent主动决策能力的下一代RAG架构-29

  • 多Agent协同系统 —— 多个Agent分工协作处理超复杂任务

💡 学习建议:建议结合本文的代码示例动手实践,将RAG和Agent分别实现一遍,再尝试构建一个结合两者优势的小型项目。面试时,能用项目经验说明“你是怎么选的、为什么这么选、遇到了什么问题、如何解决的”,远比背诵概念更有竞争力。

标签:

相关阅读