RAG核心技术解读

一、RAG 是什么,为什么需要它?

RAG(Retrieval-Augmented Generation,检索增强生成)解决的是大模型的一个根本性缺陷------幻觉问题。大模型的知识来源于训练数据,训练完成后知识就固化了,对于私有领域知识、最新信息、或者专业细节,它往往会"编造"一个听起来合理但实际错误的答案。

RAG 的解法是:在把问题丢给大模型之前,先去一个外部知识库里检索相关内容,把检索结果和原始问题拼在一起,组成一个更丰富的提示词,再交给大模型回答。这就像我们读论文时,遇到不懂的地方会去翻引用的参考文献,大模型也一样,RAG 给它提供了一个"参考文献库"。从本质上说,RAG 是提示词工程的一种扩展。


二、Embedding Model:语义理解的基石

Embedding Model 是一种将高维数据(如文本、图像等)转换为低维连续向量表示(即嵌入向量)的机器学习模型。这些向量能够捕捉数据的语义或特征,使相似的对象在向量空间中距离较近。

用超市水果推荐来理解:把苹果、梨、香蕉分别用"甜度、酸度、脆度"三个维度表示成向量,然后用欧氏距离计算哪两种水果最相似。苹果 [0.8, 0.4, 0.7] 和梨 [0.7, 0.2, 0.6] 的距离约 0.24,和香蕉 [0.9, 0.1, 0.3] 的距离约 0.51,所以顾客买了苹果推荐梨更合适。这就是向量化的直觉------让语义相近的内容在数字空间里也靠得更近。

Embedding Model 在 RAG 中发挥两处作用: 一是对用户的 Prompt 进行向量化用于检索,二是对知识库文档的每个 Chunk 进行向量化存入向量数据库。

为什么不能用 LLM 替代 Embedding Model? 两者训练目标根本不同。Embedding Model 专门优化语义相似性捕捉;而 LLM 的训练目标是预测下一个词,专注于生成流畅的文本序列。LLM 的训练目标没特意往语义精度上靠,所以它没法完全顶替 Embedding Model------前者提供可靠的语义底子,后者负责流畅输出,二者结合才更稳。

重要实践原则:同一个 RAG 系统中,Embedding Model 不能混用。 不同模型输出的向量维度不同(如 Google text-embedding-004 是 768 维,Voyage voyage-3 是 1024 维),混用会导致检索完全失效。选型可参考 Huggingface 上的 MTEB 榜单。


三、Chunk 分块------RAG 的"刀法"

知识库中的文档往往很长,如果整体向量化会丢失大量语义细节,因此必须先切块再向量化。块的大小直接影响检索质量:切太碎信息丢失,切太大检索不准。

文章介绍了八种分块策略:

刀法一:固定大小分割

每隔固定数量的 token(如 200 个)切一刀,简单快速,但可能在句子中间截断,语义不完整。适合快速原型测试、结构松散的纯文本。

刀法二:句子级分割

按句号、问号等标点切割,保持句子完整性,语义连贯性比固定分割好。但遇到超长句子时会有问题。适合新闻、博客类文档。

刀法三:段落级分割

\n\r 等换行符切割,语义强,操作简单。缺点是段落长短不一,短段落信息量少,长段落细节可能被淹没。适合报告、书籍等结构清晰的文档。

刀法四:递归分割

定义一个分隔符列表,从粗到细递归切割------先按段落/标题切,再按句子切,直到达到目标大小(如 300~500 token)。灵活且充分利用文档结构,但计算量大,分隔符列表需要调优。适合 Markdown、PDF 等混合结构文档。

刀法五:滑动窗口分割

固定窗口大小,每次切割后向前滑动一段距离,使相邻块之间有重叠内容,避免信息在边界处断裂。代价是 Chunk 数量增多,存储和计算成本上升。适合小说、日志等连续叙述型文档。

刀法六:语义分割

不依赖任何规则,通过计算相邻句子的向量相似度来判断语义是否发生了转变,相似度骤降的地方就切开。最智能,精度最高,但需要向量化和相似度计算,算力成本高,小文档用这个有点"杀鸡用牛刀"。适合科研论文等复杂主题文档。

刀法七:父子分割

"父亲引路、孩子补刀"------先切成较大的"父块"(段落、章节),再在父块内部切出更小的"子块"(句子、短语),两者建立树状关联关系。检索时先定位父块,再拉取子块补充细节,兼顾了检索效率和内容细节。避免了纯用小 Chunk 召回零散片段、纯用大 Chunk 淹没细节这两个极端。缺点是实现复杂,需要额外索引。适合法律文书、医疗档案等长文档。

刀法八:文档特定分割

根据文档自身的结构符号(如 Markdown 的 ### 标题层级)来决定切割位置,切出来的 Chunk 天然带有层次感和语义完整性。速度快,向量化质量高,但前提是文档必须有格式。适合 API 文档、HTML 页面、Wiki 等结构化文档。


四、如何选择合适的"刀法"?

没有万能的策略,核心是数据驱动的实验:确定召回率、精确率、忠实度、答案相关性等评估指标 → 从真实知识库抽取 10~20 个代表性文档 → 准备 50~100 个测试问题及 ground truth → 按策略分块、向量化、检索、生成、收集指标 → 多轮迭代取平均值后对比选优。

作者的经验总结:80% 靠实验,20% 靠经验,开始动手就赢了一半。


核心要点速记

RAG 的质量很大程度上取决于分块策略的选择,而分块策略的选择没有银弹,需要结合文档类型、查询需求和系统约束,通过小样本实验来迭代确定。Embedding Model 是语义检索的基础,必须统一使用,不能混用。父子分割和语义分割是相对高级的策略,在复杂场景下效果更好,但实现成本也更高。

相关推荐
zhangfeng11332 小时前
LLM 大语言模型 训练的时候 batchsize 调整大导致梯度爆炸问题解决
深度学习·机器学习·语言模型
twc8292 小时前
打造专属 MCP Server 测试自动化的私有化解决方案
运维·软件测试·人工智能·自动化·mcp server
如若1232 小时前
WSL2 启动报错“拒绝访问“ E_ACCESSDENIED 完整解决方案
人工智能·pytorch·python·深度学习·计算机视觉
洛阳泰山2 小时前
我用 Java 21 虚拟线程重写了一个 RAG 平台:从架构设计到踩坑实录
java·人工智能·后端
feasibility.2 小时前
Agent-Reach赋能OpenClaw成为信息管家:实现GitHub/X/b站/小红书等十大平台信息获取(含手动安装)
人工智能·github·微信公众平台·新浪微博·小红书·openclaw·agent-reach
冷雨夜中漫步2 小时前
AI入门——什么是知识图谱?
人工智能·知识图谱
Xpower 172 小时前
Clawith:开启多智能体协作的新纪元
人工智能·python·语言模型·自动化
TsingtaoAI2 小时前
面向工业互操作性与优化的AI驱动数字孪生语义与模块化编排
人工智能·数字孪生
深小乐2 小时前
AI 周刊【2026.03.16-03.22】:从算力到 Token,AI 竞争进入全栈时代
人工智能