首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一文带你了解RAG核心原理!不再只是文档的搬运工

一文带你了解RAG核心原理!不再只是文档的搬运工

作者头像
阳光宅猿
发布2026-02-03 15:10:32
发布2026-02-03 15:10:32
8380
举报

导 语

最近项目持续推进,遇到的一些工作中的问题和想法会进行输出,分享包括FunctionCalling、 MCP等技术在内多篇智能体文章。先从RAG进行开篇,接下来的内容我结合了一些网上的内容和自己在实战中的一些思路,将使用RAG的相关经验、核心原理到知识库的使用技巧,逐一进行梳理,帮大家从0到1上手RAG知识库技术,大家感兴趣点个关注吧。

本篇文章我将和大家聊聊RAG知识库系统的核心原理,向大家分享RAG是如何让大语言模型变得更专业。

一、检索增强生成(RAG)是什么?

RAG(Retrieval-Augmented Generation,检索增强生成)是一种技术架构,将传统信息检索系统与大型语言模型相结合。该技术首先从海量文档中构建知识库,并从中检索出相关信息,再将这些信息输入至大语言模型进行整合与润色,最终生成流畅自然的回答。此处所提及的模型亦可替换为多模态模型,此时生成的回答将相应体现为图像、音频等不同形式。RAG的整体架构如下图所示。通过阅读本文,您将深入理解RAG的三个核心环节——数据准备、数据检索与LLM生成,并掌握它们如何有机衔接、协同工作。

将其分为三个层次主要为:数据准备、数据检索和模型生成。

二、RAG数据准备环节

构建RAG系统的第一步,是上传私域的数据文档。该系统具备强大的多格式解析能力,可支持包括.txt、.docx、.json、.pdf、.md在内的多种主流文档类型。这些文档中蕴含的文本信息,正是所谓“知识”的来源。

值得注意的是,上传的文档并不会以原始文件形式直接存入数据库。这些知识需要经过一系列精细化的预处理,才能被结构化地存储至专门设计的知识库中。具体处理流程如下图所示,清晰展示了从原始文档到可用知识的转化过程。

2.1 文本分块

RAG系统对于知识文本的处理也是这样。上传的文档首先会被拆分成很多相同大小的chunk数据块,拆分的依据可以是按段落切分按固定文字数切分、按句子拆分、递归拆分、正则表达式拆分等,不同的切分策略对于RAG系统的效果有很大影响。

为什么要进行分块呢?因为贪多嚼不烂!将知识分块主要有如下优点:

1、避免文档太大不好处理:有些文档可能一个就有几百页,直接让电脑分析消耗太大。

2、模型处理长度有限:我们知道模型是有输入输出上下文的,太长的文本模型一次性也处理不了。

3、查找内容更精确:如果一个文档存储成数据库中一项,表明这个文档只有一个标签,很难做到精准查找。

2.2 文本块转换嵌入向量 关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!

文本通过对应的文件读取器、文件解析器、分词器、将长文本进行切分,切分后的文本块chunk不是直接通过文字形式保存在数据库或向量库中,而是要经过生成嵌入模型 (Embedding Model) 转化为向量形式进行存储。为什么不采用关系型数据库存储呢?非要进行向量存储呢?

文本向量化有如下两个明显优势:

1、高效的相似性计算:文本向量化之后当用户输入内容时可直接通过余弦相似度、欧氏距离等相似度检索算法精准查询与用户问题相关的chunk片段。如果直接存储文本还涉及到文本字词遍历匹配等操作,效率极低。

2、语义的强相关性:生成嵌入模型是通过大量语言文本训练所得,经它转换后的向量包含了语义信息,可以使得匹配更精确。举个例子:"这部电影真精彩"、"这影片太棒了"、"这部电影真糟糕"三句话,从文本匹配角度来看"这部电影真精彩"和"这部电影真糟糕"有七个字相同,而和"这影片太棒了"只有两个字相同,但显而易见"这部电影真精彩"与"这影片太棒了"语义更相似而与"这部电影真糟糕"语义完全对立,反映为"这部电影真精彩"与"这影片太棒了"的嵌入向量余弦相似度要显著高于与"这部电影真糟糕"的相似度。

2.3 向量数据库存储 关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!

上一阶段所有的文本块都经过生成嵌入模型转化为向量,这些向量要存储到“向量数据库”中。向量数据库可以随时接收新资料,保持知识的更新。这样用户在提问时会检索到最新最相关的文本块。

良好的向量数据库不仅仅保存了文本块向量,还保留了文本块对应的原始文本以及文本块在原始文件中的位置等信息,方便用户查看。拿pgvector向量库来说,向量化之后的数据在表中的结构为:

三、RAG数据检索环节

3.1 用户输入

数据准备工作做完就到了用户提问环节,用户输入要查询的问题,经过对文本内容的切分,分成固定的chunk块,再进行向量化,同时用户可以采用语音的方式进行输入,这就会涉及到多模态的使用。

3.2 查询向量化

为了快速的在向量数据库中找到与问题相关的文本块,用户输入的问题也需要经过生成嵌入模型(这里必须使用与文本块转换相同的生成嵌入模型,因为每个嵌入模型的维度不同,生成的向量数据也不一样,比如text-embedding-ada-002 的输出维度为‌1536维,阿里百炼的text-embedding-v4 支持多种维度配置,包括2048、1536、1024(默认)、768、512、256、128、64维度)转化为嵌入向量,从而可以与向量库中的向量相互匹配。

关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!

3.3 向量维度

在解析几何中,我们把“既有大小又有方向的量”叫做向量,并把可随意平行移动的有向线段作为向量的几何形象

在引进坐标系以后,这种向量就有了坐标表示式:n个有次序的实数,也就是n维向量。因此,当n≤3 时,n维向量可以把有向线段作为几何形象,但当n>3 时,n 维向量就不再有这种几何形象,只是沿用一些几何术语罢了。所以像text-embedding-v4 支持多种维度配置,包括2,048、1,536、1,024(默认)、768、512、256、128、64,这种就无法用几何形象进行表示了。

几何中,“空间”通常是作为点的集合,即构成“空间”的元素是点,这样的空间叫做点空间。我们把三维向量的全体点所组成的集合叫做三维向量空间。

3.4 检索相似块

用户问题经过Embedding Model转换后,RAG系统会根据问题的嵌入向量在向量数据中寻找“最可能”的答案匹配。常见的检索算法是“近似最邻近搜索”,该算法会挑出K个最相似的块(K是提前设置的数量,同时设置好相似性阈值),这些文本块中很可能隐藏着问题解答。检索相似块的算法非常快,充分利用了嵌入向量的特性。

3.4 结果重排序ReRank

大家如果平常使用Dify、RagFlow等知识库可能遇到过选择ReRank模型的选项,ReRank模型叫结果重排序模型。通俗来说系统为了让答案更精准可靠,会对检索出来的文本块chunk再根据相似度由高到低排个序,相当于从初筛的答案中找出更加贴切的答案来,这个过程通常会使用更厉害的模型比如交叉编码器(这就是ReRank模型设置的意义)进行打分排序,把评分较高的放在前面。当然并不是所有的RAG系统都这么做,很多公开的知识库系统也都是直接利用上一步相似度检索后的结果。因此我们可以引入重排序模型,提升RAG的检索精度。

关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!

四、LLM生成环节

RAG系统只有在最后一个环节才有大模型的参与。通过上述的操作筛选出文本块后,RAG系统会根据一个Prompt(可自行设置)将这些文本块内容嵌入Prompt模板中,然后再将这个Prompt发送给大模型得到答案。

RAG系统的整个过程可以类比为厨师炒菜,原料就是用来检索的文本块,也就是知识, 烹饪是大语言模型的语言能力,厨师是大语言模型,端上桌的自然就是美味的答案。

五、总结

RAG系统通过数据准备、数据检索和LLM生成三个核心环节把外部知识和大语言模型能力完美结合,使得用户能够收获更专业更准确的知识,从文档中获取的内容尽量避免大模型幻觉。

做AI项目的时候,也要注意一定不要脱离软件工程化,上面说的内容还可以再细,比如如何处理多会话之间的数据同步与检索,知识图谱,数据清洗等,可以看我这篇文章了解AI项目在软件工程中的优化要点和侧重面:智能体架构的真相:90%是软件工程,10%是AI

RAG系统因其知识随时更新,回答检索靠谱被广泛应用于智能客服、学习助手等领域。作为RAG系统的使用者甚至开发者,我们只有了解RAG系统的核心原理,才能找准RAG系统提升优化的思路,让RAG系统变得更加高效可靠。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阳光宅猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 文本分块
  • 2.2 文本块转换嵌入向量 关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!
  • 2.3 向量数据库存储 关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!
  • 3.1 用户输入
  • 3.2 查询向量化
  • 关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!
  • 3.3 向量维度
  • 3.4 检索相似块
  • 关注公众号【阳光宅猿】回复【AIGC】领取最新AI知识文档大全,包含RAG、Agent、模型微调等多种技术!!! 关注公众号【阳光宅猿】回复【加群】进入技术交流群一起学习成长!!!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档