帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【开发相关】DeepSeek-RAG赋能知识检索与推理(二)

发表时间:2025-01-16 01:32:56 小编:Yutio

一、 朴素RAG与高级RAG架构的比较

RAG系统的架构演化可以看作是一种从“可用”走向“可靠”的过程。最初的朴素RAG设计以其极简的形式迅速流行:接收用户查询、进行向量化检索、将返回的文本块拼接成Prompt,然后交由大语言模型进行生成。这种方式在早期应用中极具吸引力,它部署简单、组件松耦合,无需复杂的数据预处理与结构控制,便可快速实现文档问答、摘要生成等功能。然而,这种“快速搭建”背后的代价也逐渐显现。朴素RAG对输入查询的表达没有任何优化措施,面对语义模糊或结构不清的问题,常常无法触达正确的知识片段。同时,检索结果未经筛选就直接堆叠进Prompt,易导致上下文冲突、冗余堆砌,严重影响最终生成质量。

 

image.png

图1.1 朴素RAG和高级RAG


为了提升检索与生成的质量,高级RAG系统在朴素RAG的基础上,引入了更精细的处理机制,形成了以下五个核心流程环节:

(1)检索前优化(Pre-Retrieval):在用户提交问题后,系统不会直接检索,而是先进行预处理优化。首先,通过查询过滤去除模糊或敏感内容,确保语义清晰;接着,借助查询扩展引入同义词和相关概念,扩大语义覆盖;最后,系统通过查询路由将优化后的问题定向至最相关的知识库或模块。该流程有助于精准理解用户意图,提升检索的准确性与全面性。

(2)语义检索(Retrieval)经优化的查询将被嵌入为向量,并在向量数据库中进行相似度搜索,返回最相关的文本片段。高级RAG在这一阶段可采用多源检索策略,确保系统不仅能召回语义最接近的文段,还能实现跨文档、跨知识域的覆盖,提高知识补全能力。

(3)检索后优化(Post-Retrieval):为了减少信息冗余与上下文冲突,系统会对检索到的文本进行后处理。通过轻量模型对Top-K结果进行重排序、对长文本进行摘要总结,或对多段信息进行融合拼接,从而构建更适配LLM输入长度限制的知识上下文。

(4)Prompt构建(Prompt Assembly)**:优化后的信息将被组织进Prompt中,并与用户原始问题共同构成输入序列。这一过程不仅关注信息编排的顺序和逻辑,还可能引入系统提示词、任务说明或格式引导,使语言模型生成时具备清晰目标与正确语境。

(5)答案生成(Answer Generation**)构造好的Prompt将被送入语言模型中进行回答生成。得益于前序环节对语义、内容和结构的多轮优化,模型在生成过程中能够更好地理解用户意图,并基于准确知识支撑输出高质量、可信赖的答案。

相比朴素RAG仅关注检索与拼接,高级RAG在两个关键阶段引入了精细化的控制机制:其一是“检索前优化”(Pre-Retrieval),其二是“检索后优化”(Post-Retrieval)。前者通过查询重写、同义词扩展、意图识别等方式,使原始用户输入变得更加标准化、易于理解,从而提升检索的准确率;而后者则对返回的Top-K结果进行重排、摘要和融合,使得传入大模型的信息更具针对性、层次性与压缩性。这一策略本质上是将原本“无条件堆叠”的输入转化为“结构明确、逻辑清晰”的知识背景,引导生成模型更加有的放矢地完成任务。

具体而言,朴素RAG解决了“如何将知识接入模型”的基本问题,而高级RAG进一步思考“如何让知识真正有用”。特别是在要求高度可信的生成场景中,如政务问答、医疗咨询、学术研判等,高级RAG所提供的精准控制能力,已经成为高质量生成系统不可或缺的模块之一。它不仅优化了答案的准确性,更提升了整个系统对用户提问的适配能力、上下文组织能力以及生成逻辑的稳定性。

表1.1朴素RAG和高级RAG

比较维度朴素RAG(Naive RAG)高级RAG(Advanced RAG)
核心流程检索 → 拼接 → 生成检索前优化 → 检索 → 检索后优化 → 构建 → 生成
查询优化查询重写、扩展、路由
检索结果处理直接拼接结果重排、摘要、融合
Prompt构建策略无组织、全量堆叠有选择性拼接、结构引导
上下文控制能力强,具备信息压缩与聚合能力
应用推荐原型开发、教学、轻量系统高准确率问答、专业推理系统、商业级RAG应用
架构复杂度低,易部署高,需要多模块协作

、DeepSeek-RAG实战案例与代码实现

为了更好地实现基于检索增强生成的智能问答系统,本项目采用了LangChain框架进行开发。LangChain作为一个针对大语言模型(LLM)应用的开发工具包,能简化向量化检索、文档切分、知识存储与对话历史管理等关键流程。依托LangChain,系统可以灵活调用本地构建的向量数据库进行相关文档检索,并结合大模型完成高质量回答生成。

LangChain工作原理如图2.1所示,其是用于构建大语言模型应用的框架,核心是通过模块化组件实现流程编排。工作原理分为五层:

  • 模型I/O层连接LLM接口,处理输入输出;

  • 数据连接层支持文档加载、向量化存储与检索,增强外部知识;

  • 记忆层管理对话上下文;

  • 链(Chains)将多个功能模块(如提示词、模型、工具)串联为任务流水线;

  • 代理(Agents)根据输入动态选择工具或调用链,实现自主决策。

通过组合这些组件,开发者可灵活搭建复杂应用(如问答系统),实现基于LLM的推理、工具调用与多步任务协同,同时支持扩展自定义功能与第三方服务集成。

image.png

图2.1 LangChain工作原理

基于此,本章系统设计如下关键模块:
首先,自动判断加载PDF或TXT格式的知识文件,使用RecursiveCharacterTextSplitter将文本切分成适合检索的小块;
随后,通过HuggingFace Embedding模型将文本转为向量,并存入本地Chroma数据库;检索模块根据用户问题,从向量库中查找最相关的文档内容;
最后,结合检索结果与用户输入,组织对话上下文并调用Meta-Llama3大模型生成最终回答。

这一整体流程,正是通过LangChain的向量存储(Chroma)、文档加载(TextLoader、PyPDFLoader)与文本切分(RecursiveCharacterTextSplitter)能力高效实现的。作者开源的代码如下:

(1)数据存储阶段

第一步,导入相关模块。

image.png

第二步,文本切块。这段代码用于根据文件后缀(.pdf或.txt)自动选择合适的加载器读取文档内容,并使用RecursiveCharacterTextSplitter将长文本按每500字符一块、重叠50字符的方式切分成多个小文档,方便后续进行检索或处理。

image.png

第三步,编码模型下载。Embeeding模型对文本进行编码,通过HuggingFaceEmbeddings在代码中直接下载“sentence-transformers/sentence-t5-large”这一模型。

image.png

第四步,创建并加载向量数据库将文本块转换成向量并存入本地Chroma数据库,然后重新加载数据库,并打印出其中的文档数量,确认存储是否成功。

image.png

(2)数据读取增强大模型

第一步,循环对话与知识检索**。接受用户输入,先从向量库中检索相关知识,再把检索结果和用户问题一并发送给大模型生成回复,实现实时对话。

image.png

第二步,DeepSeek模型下载和加载。下载DeepSeek-R1-Distill-Llama-8B模型到本地指定目录,然后用transformers库加载模型和分词器上,准备进行文本生成推理。

image.png

第三步,LLM生成回答函数。将对话历史整理成提示词,送入大语言模型进行生成,设置了最大生成长度、采样策略等参数,并返回新生成的回复内容。

image.png

第四步,向量检索**。根据用户问题在向量库中检索最相似的文档内容,返回前k条匹配结果,供后续大模型生成回答时参考。

image.png

(3)DeepSeek-RAG问答实例

在实际问答应用中,语言模型常因知识盲区或理解偏差而产生不准确的回答。下面以“MAGIC模型是什么?”为例,我们详细分析各种智能问答的效果。

MAGIC模型是什么?

① 无RAG检索

在未使用RAG检索的情况下,语言模型容易因知识不足而产生理解偏差,其生成结果如图18.6所示。注意,该问题生成结果已被作者翻译成中文。该模型出现三方面错误:
一是对模型的基本属性描述错误,误将MAGIC说成监督学习方法,忽略了其基于无监督、正常流量训练和图嵌入记忆机制的深度学习本质;
二是未提及其应包含的三大核心模块,如日志图构建、图表示与异常检测;
三是夸大其APT检测能力,缺乏具体机制说明。这些问题凸显了无RAG模型在理解复杂概念时的显著局限。

image.png

图2.2 无RAG检索回答

总之,在未接入外部检索(即无RAG)的情况下,模型仅依赖自身预训练知识生成内容,容易出现定义误解、结构缺失与内容夸大等问题

② 数据库中检索到的片段

图2.3展示的是系统实际检索到并被RAG使用的原始内容,涵盖了MAGIC模型的训练流程、异常检测方法、与系统调用日志的交互方式等细节。可以看到,这些片段是结构化文档的一部分,其信息密度和专业性远高于模型预训练时可能接触到的内容。RAG机制正是通过调用这些外部知识片段,补全模型知识盲区,实现了更加精确和可解释的回答生成。

image.png

图2.3 RAG检索内容

③RAG检索

使用RAG机制后,模型在生成回答前通过检索系统查找了相关资料并结合上下文理解生成答案。图18.10中的回答明显更为完整和深入,不仅指出了MAGIC是基于图嵌入的APT检测方法,还进一步解释了系统日志图构建、子图嵌入和异常检测等三个核心模块。这说明引入检索机制后,大模型可以突破原始知识库的限制,提供结构清晰、细节完备的回答。

image.png

图2.4 RAG检索回答


联系我们
返回顶部