
DeepSeek-R1 x Agentic RAG:构建带“深度思考“开关的知识研究助理
RAG是一种基于“检索结果”做推理的应用,这大大限制了类似DeepSeek-R1模型的发挥空间。但又的确存在将RAG的准确性与DeepSeek深度思考能力结合的场景,而不仅仅是回答事实性问题。比如:基于企业知识库与产品文档,写一份市场分析报告。根据已有的技术报告创作一篇公众号文章。你很难用传统的RAG方法去“回答”这样的主题;也无法快速的更换DeepSeek就输出需要的结果。本文将介绍**如何结合
RAG是一种基于“检索结果”做推理的应用,这大大限制了类似DeepSeek-R1模型的发挥空间。但又的确存在将RAG的准确性与DeepSeek深度思考能力结合的场景,而不仅仅是回答事实性问题。比如:
-
基于企业知识库与产品文档,写一份市场分析报告。
-
根据已有的技术报告创作一篇公众号文章。
你很难用传统的RAG方法去“回答”这样的主题;也无法快速的更换DeepSeek就输出需要的结果。本文将介绍**如何结合DeepSeek-R1与Agentic RAG方法以构建带有“深度思考”开关的问答与研究助理。**请注意这个开关并不是简单的换模型:
01
工作流程设计
实际应用中的上述场景存在这样的一些典型特点或业务需要:
-
**需要借助RAG以获得参考文档与知识,这本质是提升准确性
** -
必要时使用互联网搜索获得更多外部信息,比如了解竞品
-
生成的结果不是简单的答案,而需要有良好的内容条理与结构
这样场景中你无法直接让模型”深度思考“出你需要的结果。因为这里的输出并不仅仅依赖于模型的生成能力,更需要参考足够的私域知识,而这些知识则需要借助RAG或搜索引擎来检索。或者说,复杂度更多体现在研究结构的规划与关联知识的检索**。**
因此考虑这样一种方案:
-
借助DeepSeek思考与规划研究大纲、并提出针对性的问题
-
借助RAG引擎来回答这些提出的问题,答案作为参考知识
-
综合这些问题及答案,并根据规划的大纲生成最终研究结果
我们设计如下的Agentic Workflow:
流程详细描述如下:
-
为了让这个Agent既能够支持简单的事实性问答,也能切换做深入的研究,设计DeepResearch这样的开关,把选择权交给用户;
-
如果无需深度思考,则直接调用Agentic RAG回答问题;
-
如果需要深度思考,则进入如下流程:
-
生成大纲**:**借助DeepSeek的深度思考能力,根据输入主题先构建一个研究大纲,确保输出的结构化与全面性
-
问****题规划:基于大纲生成一份必要的研究问题清单,以有效的检索到研究所需要的知识
-
**问题回答:**获得这些问题的答案,这个步骤借助已构建好的Agentic RAG系统来获得,以确保获得参考信息的准确性。这一步可以并行开展
-
起草答案**:**将搜集到的问题与答案,结合规划的提纲,交给LLM进行创作,生成研究结果的草稿
-
**内容审核:**审查草稿的完整性、准确性与连贯性,并确定是否需要修改或增补,并输出新的问题来进一步搜集信息
-
**最终输出:**在经过指定次数的迭代后,输出最终结果
可以看到,RAG系统在这成为了后端的一个“研究工具”。为了更具扩展性,我们借助Agentic RAG方法来实现,并增加了搜索引擎作为补充的知识来源:
这种Agentic RAG可以更灵活的跨越多个数据源(比如不同的知识库/文档)、跨越多种类型RAG管道(比如回答事实性问题与总结性问题)及互联网搜索工具等来回答问题,以提供研究需要的参考信息。
这样的工作流程优势在于:通过先推理大纲与假设性问题来提高信息获取的覆盖面与引用密度,同时又能借助RAG检索私有知识,提高准确性;同时还利用反思模式来提高最终的生成质量**。**当然缺点是流程较长,但对于这样的研究是可以接受的。
02
实现:Agentic RAG应用
现在来实现这个具有“深度思考”能力的Agentic Workflow,我们采用的工具为:
-
Agentic RAG系统使用LlamaIndex+Chroma向量库+gpt-4o-mini
-
Workflow编排使用LlamaIndex Workflows
-
**deepseek-r1模型作为大纲生成、研究报告创作
** -
gpt-4o-mini用作问题规划、报告审核
首先来实现这里的Agentic RAG应用,对于无需“深度思考”的问题,这个应用就是直接回答问题的主体。构建基本过程如下:
-
创建一个/多个RAG查询管道(如有需要,可支持多模态)
-
将这些查询管道“工具化”
-
创建一个网络搜索工具
-
将RAG与搜索工具交给一个FunctionCalling的Agent使用即可
核心代码参考(可根据需要调整关键词):
......
#RAG查询引擎
query_engine = vector_index.as_query_engine(similarity_top_k=5,llm=llm_openai)
query_tool = QueryEngineTool.from_defaults(query_engine=query_engine,name=f'query_tool_{name}',
description=f'用来查询DeepSeek-R1的技术细节')
...
#搜索工具
search_tool = FunctionTool.from_defaults(fn=web_search,name = 'search_tool',description='用来搜索网络以获取信息')
#RAG agent
rag_agent = FunctionCallingAgent.from_tools(
[query_tool,search_tool],
llm=llm_openai,
system_prompt="""
你是一个问题回答专家。你必须使用工具查询技术细节或搜索网络信息,并始终用中文回答问题。
* 尽量保留工具返回中的Markdown图片信息。* 如果一个工具无法回答问题,请尝试另一个工具。
不要基于先验知识或编造。""")
你可以在构建完这个Agent以后,先测试该Agent的工具推理与回答能力,以确保能够为后面的研究提供准确的信息。比如用如下代码测试:
agent_response = rag_agent.query("How is DeepSeek-R1-Zero AIME accuracy during training")
display(Markdown(str(agent_response)))
我的Agent反馈如下(实现了多模态RAG):
03
实现:编排Workflow
准备好Agentic RAG这个“工具”后,接下来实现深度思考的主流程。
我们基于LlamaIndex的Workflows来构建(当然你完全也可以使用LangGraph),根据上面的设计,这个workflow编排后的可视化如下:
这里的核心步骤(在LlamaIndex中称作step)包括:
-
route_request: 根据是否需要深度思考做路由
-
plan_outline: 思考与规划研究大纲,使用deepseek
-
plan_questions: 根据研究的大纲设计问题,使用gpt-4o
-
answer_question: 并行调用已经创建Agentic RAG获得问题答案
-
general_final_answer: 根据大纲、问题/答案生成结果,deepseek
-
review_final_answer: 检查审核,如果没有问题或达到最大迭代次数,则结束;否则生成新的问题,返回answer_question获取更多信息
整个过程的重点是精心设计每个step的提示词,剩下的工作以调用LLM与RAG为主,并不复杂。以其中的**问题设计(plan_questions)**这个step为例:
...
# 根据大纲提出一些问题
@step()
async def plan_questions(
self, ctx: Context, ev: OutlineEvent
) -> QuestionEvent:
#事件中的大纲信息,并保存到上下文,后面步骤中要用
outline = ev.outline
await ctx.set("outline", outline)
#上下文中获取原始问题
query = await ctx.get("original_query")
#Prompt提示
prompt = f"""你需要根据输入的问题和回答大纲制定一系列问题,这些问题将帮助获得完成大纲所需的事实:
* 你不能假设任何现有的知识
* 问题需要涵盖大纲中的所有主要要点
* 每一个问题必须自洽完整,不能依赖于上下文
* 你的输出应该是一个问题列表,每个问题在新的一行
* 问题最多不超过5个
----------------
输入问题:{query}
----------------
回答大纲:{outline}"""
#生成问题(调用LLM)
response = await llm_openai.acomplete(prompt)
#取出<think>部分,如果你使用deepseek-r1才需要
response = re.sub(r"<think>.*?</think>", "", str(response), flags=re.DOTALL)
questions = response.split("\n")
questions = [x for x in questions if x]
#问题数量
await ctx.set("num_questions", len(questions))
#触发下一个step,并传递问题
#这里会触发并行处理
for question in questions:
ctx.send_event(QuestionEvent(question=question))
再比如**回答问题(answer_question)**这一步:
...
@step()
async def answer_question(
self, ctx: Context, ev: QuestionEvent
) -> AnswerEvent:
#取出问题
question = ev.question
#调用上面创建的agentic rag获得答案
response = await rag_agent.aquery(question)
#如果打开“深度思考”,则触发下一步;否则就结束!
if (await ctx.get("deepresearch")):
return AnswerEvent(question=question, answer=str(response))
else:
return StopEvent(result=str(response))
其他步骤可以按照类似方式来编写,最终完成Workflow的定义。
04
测试Workflow
现在可以测试调用这个Workflow,你可以打开或者关闭“深度思考”这个参数,以控制是普通的RAG问答,还是开展深度研究。
**首先关闭“深度思考”(deepresearch=False)
**
async def main():
#workflow实例
rsearch_agent = DeepResearchAgent(timeout=600, verbose=True)
#调用,deepresearch为控制开关
handler = rsearch_agent.run(
query ="DeepSeek-R1大模型用了什么技术?国际上评价如何",
deepresearch = False,
rag_agent = rag_agent
)
final_result = await handler
print(final_result)
观察输出内容:
然后打开深度思考(deepresearch=True)
通过跟踪信息,你可以看到研究助手生成了如下的大纲与假设提问:
针对这个大纲,LLM设计的问题如下(首次迭代):
最后,你将会看到更详细的、遵循上面研究提纲的输出结果。
05
未来的改进
在测试发现的一些潜在问题及其未来的改进空间:
- 过于发散思维的研究提纲可能导致无法查询到必要的参考信息(或者会过于依赖网络搜索)。在最终答案可能会有这样的体现(有提纲,但没有答案):
优化方法可以考虑:
-
在生成大纲时给予更多的提示信息,比如已有知识目录、增加限制条件等
-
在Review环节多次迭代仍然无法检索到相关知识后,对这部分做删除。
-
**多模态的支持需进一步增强。**很多场景需要产出一份图文兼备的研究文档,这可能需要在最后的生成环节做进一步结构化输出的控制与优化。
-
**输出形态多样化。**借助于一些开放库,可以将最终的结果根据需要输出成Word、PPT、思维导图等更丰富的格式(相对于生成公式化的通用PPT,基于私有知识与文档生成的PPT是不是更有价值呢)。
以上就是今天分享的全部内容,如果你觉得有所启示,赶紧点赞转发吧!
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。
👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)
👉4.大模型落地应用案例PPT👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)
👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
更多推荐
所有评论(0)