DeepSeek实战--传统RAG与Agentic RAG对比

传统RAG与Agentic RAG对比分析

1.原理对比图

分享一张非常漂亮的图,来对比一下原理及流程(from join.DailyDoseofDS.com)
在这里插入图片描述

2.定位及使用场景

2.1 传统RAG

这是一种线性的、一次性的检索增强生成流程。

工作流程:
  • 接收问题:用户提出一个查询。
  • 检索:系统将查询与知识库进行向量相似度搜索,检索出最相关的几个文档片段。
  • 生成:将检索到的文档片段和原始查询一起打包,发送给大语言模型,让LLM基于这些上下文生成答案。
  • 输出答案:将LLM生成的答案返回给用户。
核心特点:
  • 被动执行:它严格按照“检索-增强-生成”的固定流程执行,没有决策能力。
  • 一次性操作:通常只进行一次检索和生成。如果第一次检索的结果不理想,它无法自我修正。
  • 缺乏规划:它不会去思考“这个问题可能需要多步推理”或“我应该从不同的角度检索信息”。
  • 适用场景:非常适合事实性问答、简单的知识查询,例如“公司的年假政策是什么?”或“解释一下什么是神经网络”。
局限性:
  • 如果问题复杂,需要多步信息整合,它可能无法给出好答案。
  • 如果第一次检索错了,整个回答就错了,缺乏纠错机制。
  • 无法处理需要工具使用(如计算、搜索)的任务。

2.2 Agentic RAG

这是一种非线性的、具有决策和规

### 豆包文心一言的 RAG 技术类型分析 豆包(Doubao)和文心一言(ERNIE Bot)作为当前主流的大语言模型工具,其背后的技术架构在信息检索生成方面均有不同程度的 RAG(Retrieval-Augmented Generation)应用。然而,从公开资料和实际应用表现来看,两者在 RAG 技术的实现上存在差异。 豆包在信息检索生成的流程中更倾向于采用**传统 RAG**架构。其核心在于通过预定义的检索器(如 BM25、DPR 等)从外部知识库中提取相关信息,并结合语言模型进行生成。这种方式在结构上较为固定,适合处理标准化的查询任务,例如事实性问答或文档摘要生成。这种架构的优势在于实现简单、响应速度快,适合大规模部署[^2]。 文心一言则在部分高级功能中引入了**Agentic RAG**的思想。其系统架构中包含了任务分解、多步骤推理、工具调用等机制,使得模型能够根据用户意图动态地构建检索路径,并在多个知识源之间切换。这种架构具备更高的灵活性和适应性,适用于复杂查询、多轮对话以及需要上下文感知的场景[^1]。 在具体实现上,文心一言的 Agentic RAG 模块可能包含以下特征: - **任务规划器**:能够根据用户输入自动生成检索策略,并决定是否需要调用外部数据库或API。 - **多级检索器**:结合关键词检索语义向量检索,提升信息召回率相关性。 - **动态生成器**:在生成阶段引入反馈机制,确保生成内容原始查询保持高度一致,并支持引用标注功能。 豆包虽然在基础层面上仍采用传统 RAG,但其后续版本中也逐步引入了部分 Agentic RAG 的优化策略,如查询改写、内容压缩、答案引用标注等,以提升系统的智能化程度[^1]。 ### 示例:传统 RAG Agentic RAG对比代码结构 以下是一个简化版的 RAG 流程代码,分别展示传统 RAG Agentic RAG 的实现方式: #### 传统 RAG 示例 ```python from langchain.retrievers import BM25Retriever from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI # 初始化检索器 retriever = BM25Retriever.from_documents(documents) # 初始化问答链 qa = RetrievalQA.from_chain_type( llm=ChatOpenAI(), chain_type="stuff", retriever=retriever ) # 执行问答 response = qa.run("什么是量子计算?") print(response) ``` #### Agentic RAG 示例 ```python from langchain.agents import initialize_agent, AgentType from langchain.chains import RetrievalQA from langchain.vectorstores import FAISS from langchain.embeddings import OpenAIEmbeddings # 构建向量数据库 vectorstore = FAISS.from_documents(documents, OpenAIEmbeddings()) retriever = vectorstore.as_retriever() # 初始化检索问答链 qa = RetrievalQA.from_chain_type( llm=ChatOpenAI(), chain_type="map_reduce", retriever=retriever ) # 构建智能体 agent = initialize_agent( tools=[qa], llm=ChatOpenAI(), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True ) # 执行智能体驱动的查询 response = agent.run("请解释 RAG Agentic RAG 的区别") print(response) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值