一文教你搞懂RAG的原理

RAG的兴起背景

尽管大语言模型(LLM)在自然语言处理中表现卓越,但其实际应用仍受三大核心问题制约:生成内容的不可靠性(幻觉)有限上下文处理能力 ,以及潜在的数据安全风险,下面介绍一下

  1. LLM 容易出现"幻觉"现象,即生成不准确或虚构的内容

大语言模型(LLM)的"幻觉"是指模型生成与输入无关、逻辑错误或完全虚构的信息。这种现象的根源在于:

  • 概率生成机制:LLM 基于统计概率逐词生成文本,而非真正"理解"内容,因此在缺乏明确答案时可能编造看似合理但错误的回答。
  • 训练数据偏差:如果训练数据包含噪声或未覆盖某些领域,模型可能过度泛化,生成不准确的内容。
  • 提示(Prompt)敏感性:模糊或开放的提示易导致模型偏离预期,例如在医疗、法律等专业领域生成误导性建议
  1. LLM 的上下文窗口有限,无法处理过长的文本

尽管现代 LLM(如 GPT-4、Claude)的上下文窗口已扩展至 100K+ Token,但长文本处理仍面临挑战:

  • 计算效率问题:注意力机制(Attention)的复杂度随文本长度平方级增长,导致延迟和成本上升。
  • 信息衰减:模型对远距离上下文的关联性捕捉能力下降,可能忽略关键细节(如长文档末尾的指令)。
  • 分段处理缺陷:若将长文本强制切分输入,可能破坏语义连贯性(如拆分代码或合同条款)。
  1. LLM 存在隐私泄露的风险,也就是数据安全问题

LLM 在训练和应用中可能泄露敏感信息,主要风险包括:

  • 训练数据记忆:模型可能记住并复现训练集中的隐私内容(如个人身份证号、医疗记录)。
  • 提示注入攻击:恶意用户通过精心设计的输入诱导模型输出机密数据(如"重复你训练时看到的最后10条记录")。
  • API 调用风险:第三方服务中传输的数据可能被截获或滥用(如企业对话日志)。

为了弥补以上这些不足,RAG(检索增强生成)技术应运而生

RAG技术核心

  1. RAG索引

检索增强生成(Retrieval-Augmented Generation,简称RAG)系统的核心在于其索引架构,它决定了系统如何高效地存储、检索知识并用于生成任务。一个完整的RAG索引架构如下

基于以上RAG集成关系图,分为以下三个模块简要阐述

  1. 文档解析

文档解析技术的本质在于将格式各异、版式多样、元素多种的文档数据,包括段落、表格、标题、公式、多列、图片等文档区块,转化为阅读顺序正确的字符串信息。高质量的文档解析能够从各种复杂格式的非结构化数据中提取出高精准度的信息,对 RAG 系统最终的效果起决定性的作用。RAG应用场景中涉及的数据类型通常有:PDF、TXT、Word、PPT、Excel、CSV、Markdown、XML、HTML以及关系型和非关系型数据库等。

文档解析技术架构图如下:

文档解析在RAG系统中的核心任务可以总结为两个关键层次:文件类型识别解析内容深度分层解析

文件内容识别解析

文档解析作为RAG系统的前端核心处理模块,承担着将原始数据转化为可计算知识的关键使命。其核心任务首先体现在对多源异构文档的智能识别与适配解析上,系统需要精准识别PDF、Word、Excel等数十种常见文档格式,并针对每种格式的特点调用专用解析引擎。例如,面对扫描版PDF时需启动OCR识别,处理复杂Word文档时要保留样式结构,解析Excel则需处理公式计算和多Sheet关联等特性。

内容深度分层解析:

在完成基础格式解析后,系统会进入更深度的内容解构阶段。这一过程需要精准地将文档内容分解为物理布局、逻辑层级和语义标注三个层次。物理层通过坐标分析还原原始排版中的文本块、表格区域和图文关系;逻辑层则重建标题层级、列表结构和章节关联;最终的语义层通过实体识别、主题分析等技术,为原始文本注入机器可理解的上下文信息。这种层层递进的解析策略,确保了非结构化数据最终能转化为保留原始语义且适合向量化处理的标准化知识单元,为RAG系统的检索与生成奠定坚实基础。

  1. 分块策略
分块作用影响

文档数据(Documents)经过解析后,通过分块技术将信息内容划分为适当大小的文档片段(chunks),从而使 RAG 系统能够高效处理和精准检索这些片段信息。

1. 分块的作用

  • 将文档拆分为适当大小的片段(chunks),使 RAG 系统能高效处理和精准检索信息。
  • 确保每个片段既保留核心语义,又具备独立性,减少模型对额外上下文的依赖,提高检索准确性。

2. 分块对 RAG 系统的影响

  • 提升召回率:合理的分块使检索结果更匹配用户查询,避免信息冗余或缺失。
  • 增强生成质量:独立、语义完整的片段可提高生成内容的连贯性和逻辑性。
  • 优化效率:合适的分块策略能加快系统响应速度,降低计算成本。

3. 分块的核心挑战:如何确定块大小

  • 块过大

  • 向量难以捕捉细节,计算成本增加。

  • 适用于需要宽泛上下文的场景(如文档摘要、主题检测)。

  • 块过小

  • 可能丢失上下文,导致语义碎片化。

  • 适用于细粒度分析任务(如情感分析、特定短语检索)。

分块策略核心

分块策略的核心要素可以归纳为以下三个关键维度:

  1. 块大小(Chunk Size):单个文档块允许包含的最大字符数限制
  2. 重叠量(Overlap):相邻数据块之间重复的字符数量
  3. 边界划分(Boundary):基于段落结构、分隔符、标记或语义边界确定块边界的方法

这三个维度的不同组合形成了多样化的分块策略,每种策略都有其独特的适用场景。当前主流的文档分块方法主要包括以下六种类型:

  1. 固定大小分块(Fixed Size Chunking)
  • 特点:按照固定的字符数或 Token 数切分文本,不考虑语义或结构。
  • 优点:实现简单,计算高效,适用于需要统一块大小的场景(如向量数据库存储)。
  • 缺点:可能破坏句子或段落的完整性,导致语义断裂,缺乏灵活性。
  1. 重叠分块(Overlap Chunking)
  • 特点:在固定大小分块的基础上,相邻块之间保留一定的重叠字符(如 50-100 字)
  • 优点:保留了边界的上下文信息,减少边界信息丢失,提高上下文连贯性。
  • 缺点:存储和计算成本略高,可能引入冗余信息。
  1. 递归分块(Recursive Chunking)
  • 特点:采用分层拆分策略,先按大粒度(如段落)切分,再对过大的块进一步细分(如句子)。
  • 优点:保留文本结构,避免硬性截断,块大小更灵活。
  • 缺点:实现较复杂,拆分逻辑依赖预定义规则。
  1. 文档特定分块(Document Specific Chunking)
  • 特点:根据文档类型(如 PDF、Markdown、HTML)使用特定规则切分(如按章节、标题、表格)。
  • 优点:适配不同格式,保留原始文档逻辑结构。
  • 缺点:需针对不同文档类型定制规则,泛化性较差。
  1. 语义分块(Semantic Chunking)
  • 特点:利用 NLP 技术(如句子嵌入、主题模型)按语义单元切分,而非固定长度。
  • 优点:块内语义一致性高,适合深度学习模型。
  • 缺点:计算开销大,依赖高质量语义模型。
  1. 混合分块(Mix Chunking)
  • 特点:结合多种策略(如先按标题分块,再对长段落递归拆分)。
  • 优点:灵活平衡结构与效率,适应复杂需求。
  • 缺点:设计和调试成本较高。

每种策略的选择需权衡文本类型、任务需求和计算成本。实际应用中需要通过实验确定最优分块方案。

  1. 嵌入(Embedding)技术
嵌入(Embedding)是什么?
  • 嵌入技术(Embedding)通过将文本、图像、音视频等数据转换为高维向量,在语义空间中建立坐标表示。这些向量能够有效捕捉数据间的语义关联,通过计算向量间的相似度 (如余弦相似度)即可量化不同对象之间的语义相近程度
  • 在具体实现中,嵌入的每个维度通常对应文本的某种特征,例如性别、类别、数量等。通过多维度的数值表示,计算机能够理解并解析文本的复杂语义结构。例如,"man"和"woman"在描述性别维度上具有相似性,而"king"和"queen"则在性别和王室身份等维度上表现出相似的语义特征。
  • 向量是一组在高维空间中定义点的数值数组,而嵌入则是将文本等信息转化为这种向量表示的技术过程 。这些向量能够捕捉数据的语义及其他重要特征,使得语义相近的对象在向量空间中彼此邻近,而语义相异的对象则相距较远。向量检索(Vector Retrieval)是一种基于向量表示的搜索技术,通过计算查询向量与已知文本向量的相似度来识别最相关的文本数据。向量检索的高效性在于,它能在大规模数据集中快速、准确地找到与查询最相关的内容,这得益于向量表示中蕴含的丰富语义信息
Embedding Model 嵌入模型
  • 在 RAG 系统中,Embedding Model 嵌入模型扮演着关键角色,负责将文本数据映射到高维向量空间,以便高效检索和处理。具体而言,Embedding Model 将输入的文档片段(Chunks)和查询文本(Query)转换为嵌入向量(Vectors),这些向量捕捉了文本的语义信息,并可在向量空间中与其他嵌入向量进行比较。
  • 在 RAG 流程中,文档首先被分割成多个片段,每个片段随后通过 Embedding Model 进行嵌入处理。生成的文档嵌入向量被存储在 VectorStore 中,供后续检索使用。用户查询会通过 Embedding Model 转换为查询嵌入向量,这些向量用于在向量数据库中匹配最相似的文档片段,最终组合生成指令(Prompt),大模型生成回答。
向量数据库

在 RAG 系统中,向量数据库起着重要的作用。其主要功能在于索引过程中,建立高效的向量索引结构 ,以便快速定位与查询相关的向量数据。在查询阶段,系统将输入的提示转化为向量表示形式,并从数据库中检索出与之最相关的向量及其对应的分块数据。通过这种索引和检索机制,检索到的向量为生成模型提供了必要的上下文信息,使模型能够依据当前的语义上下文生成更加精准和相关的响应。

RAG检索

背景

当前主流的 RAG 检索方式主要采用向量检索 ,通过语义相似度来匹配文本切块,这种方法在Embedding Model小节已经介绍过了。然而,向量检索并非万能,它在某些场景下无法替代传统关键词检索的优势。

例如,当你需要精准搜索某个订单 ID、品牌名称或地址,或者搜索特定人物或物品的名字(如周杰伦、 小米14)时,向量检索的准确性往往不如关键词检索 。此外,当用户输入的问题非常简短 ,仅包含几个单词时,比如搜索缩写词或短语(如 RAG、LLM),语义匹配的效果也可能不尽理想

这些正是传统关键词检索的优势所在。关键词检索(Keyword Search)在几个场景中表现尤为出色:精确匹配 ,如产品名称、姓名、产品编号;少量字符的匹配,用户习惯于输入几个关键词,而少量字符进行向量检索时效果可能较差;以及低频词汇的匹配,低频词汇往往承载了关键意义,如在"你想跟我去喝咖啡吗?"这句话中,"喝""咖啡"比"你""吗"更具重要性。

在上述案例中,虽然依靠关键词检索可以精确找到与"订单 12345"匹配的特定信息但它无法提供与订单相关的更广泛上下文 。另一方面,语义匹配虽然能够识别"订单"和"配送"等相关概念,但在处理具体的订单 ID 时,往往容易出错。

混合检索(Hybrid Search)通过结合关键词检索和语义匹配的优势,可以首先利用关键词检索精确定位到"订单 12345"的信息,然后通过语义匹配扩展与该订单相关的其他上下文或客户操作的信息,例如"12 开头的订单、包装破损严重"等。这样不仅能够获取精确的订单详情,还能获得与之相关的额外有用信息。

在 RAG 检索场景中,首要目标是确保最相关的结果能够出现在候选列表中。向量检索和关键词检索各有其独特优势,混合检索通过结合这多种检索技术,弥补了各自的不足,提供了一种更加全面的搜索方案。

混合检索(多路召回)

混合检索是指在检索过程中同时采用多种检索方式,并将各类检索结果进行融合,从而得到最终的检索结果。混合检索的优势在于能够充分利用不同检索方式的优点,弥补各自的不足,从而提升检索的准确性和效率。下图展示了混合检索的流程:

混合检索的本质在于融合多种检索方式的优势,其具体实现并不局限于特定的技术组合。以常见的"向量检索+关键词检索"为例,这只是混合检索的一种典型模式,实际上系统可以灵活集成各类检索算法。例如,在更复杂的场景下,可以结合知识图谱技术(如graphRAG)进行实体关系检索,再与向量语义检索协同工作,这种多模态的检索策略同样属于混合检索的范畴。不同检索方式的组合选择应当基于具体业务需求,通过优势互补来提升整体检索效果。

  1. 重排序

重排序(Reranking)的目的是将混合检索的结果进行整合,并将与用户问题语义最契合的结果排在前列

下图中仅仅混合检索,由于缺乏有效的排序,我们期望的结果位于第一和第四位,尽管依然可以被检索到,但理想情况下,如果检索方式更为精确,该结果应该被优先排序在前两位。

在这个案例中,我们通过重排序技术成功找到了与问题语义最契合的结果。系统评分显示,"订单 12345 于 2023 年 8 月 15 日在上海,客户不满意。"与"该 12 开头的订单客户不满意的地方在于包装破损严重。"这两个文档块的相关性分别为 0.9 和 0.8,排序为第一和第二位。

重排序技术在检索系统中扮演着至关重要的角色。即使检索算法已经能够捕捉到所有相关的结果,重排序过程依然不可或缺。它确保最符合用户意图和查询语义的结果优先展示,从而提升用户的搜索体验和结果的准确性。通过重排序,检索系统不仅能找到相关信息,还能智能地将最重要的信息呈现在用户面前。

重排序优势:

  1. 优化检索结果 RAG系统中的初始检索结果(如向量搜索或关键词检索)往往包含冗余或不完全相关的文档。通过重排序技术,可对这些结果进行精细化筛选和排序,确保最相关、质量最高的文档优先呈现,从而提升后续处理的效率和质量。

  2. 增强上下文相关性 生成模型的输出质量直接受检索文档的影响。重排序通过重新评估文档与查询的匹配度,优先选择高相关性内容作为上下文,显著提高生成答案的准确性和逻辑连贯性,减少无关信息的干扰。

  3. 应对复杂查询 面对复杂或多维度的查询,初始检索可能返回表面相关但实质偏离的文档。重排序技术通过深入分析查询意图和文档价值,优先筛选出提供关键见解的内容,确保系统能够精准响应复杂问题,提升整体可靠性

  4. RAG生成

在RAG系统的生成阶段,核心流程是将用户查询与检索到的相关信息通过特定指令组合后输入大语言模型,由模型处理后生成最终回复。这一过程看似简单,但有两个关键因素直接影响系统的最终表现:

  1. 大模型的选择与调优 大模型作为RAG系统的"大脑",其选择直接决定了系统的理解能力和生成质量。不同模型在知识广度、推理深度和语言表达上存在显著差异,需要根据具体应用场景选择适合的模型。同时,针对特定领域的微调可以进一步提升模型的专业性表现。
  2. 提示词工程优化 精心设计的提示词(prompt)是连接检索结果和生成模型的关键桥梁。通过优化指令结构、上下文组织和角色设定,可以显著提升模型对检索内容的理解深度,确保生成的回答既准确又符合预期格式。有效的提示词工程需要考虑信息优先级、指令明确性和上下文相关性等多个维度。

这两个环节相辅相成,共同决定了RAG系统最终的响应质量和用户体验。在实际应用中,往往需要根据具体需求对这两个方面进行持续调优和平衡。

  1. 大模型选择

大模型的选择直接影响RAG系统的核心能力。在选型时需要综合评估模型的知识广度、推理深度、响应速度等关键指标。通用大模型如Deepseek具备较强的语义理解和泛化能力,适合开放域问答场景;而垂直领域模型经过专业数据微调后,在特定领域往往表现更精准。同时,70亿参数左右的中等规模模型经过优化后,通常能在效果与成本间取得较好平衡。

  1. 提示词工程

提示词工程(Prompt Engineering)是优化生成式AI模型输入输出的关键技术,其核心在于通过精心设计的提示词(Prompt)充分激发语言模型的潜力。作为连接用户需求与AI能力的桥梁,提示词工程通过结构化输入引导模型更精准地完成各类任务,包括内容创作、代码生成、智能对话等。

一个高效的提示词通常包含四个关键要素

  • 明确的指令(Instruction)定义具体任务要求
  • 上下文信息(Context)提供必要的背景知识
  • 输入数据(Input Data)呈现待处理的核心内容
  • 输出指示符(Output Indicator)规范结果的格式与形式

这种结构化设计能显著提升模型输出的相关性和可用性,使AI生成结果更符合实际应用需求。随着大模型技术的发展,提示词工程已成为提升AI系统性能的重要方法论。

相关推荐
Luhui Dev3 小时前
Anthropic 2026 最新 Agent Harness 架构完整拆解:Managed Agents
人工智能·架构·agent·luhuidev
IvanCodes5 小时前
从 ChatBot 到具身 Agent:我终于看懂 AI 的下一代交互入口
人工智能·agent
qcx236 小时前
阿里 RynnVLA-002 源码深度拆解:一个 7B 模型如何同时当机器人大脑和世界模拟器
ai·机器人·llm·agent·具身智能·vla
世rui睿7 小时前
Java 自研 ReAct Agent 半年后,我用 LangGraph 验证了这些设计取舍
langchain·agent
小星AI10 小时前
LangGraph 超详细教程,附源码
人工智能·agent
DigitalOcean10 小时前
AI 成本太高怎么办?用推理路由自动分配 Claude、Qwen、DeepSeek
agent·claude·deepseek
阿里云大数据AI技术10 小时前
基于Agentic Memory API实现OpenClaw长记忆增强
人工智能·agent
坐吃山猪11 小时前
【Hanako】README08_LEVEL4_插件系统架构
python·架构·agent·源码阅读
花千树-01011 小时前
Proposer-Critic 多轮辩论:两个 LLM Agent 用 loop() 逼近共识
langchain·agent·ai编程·skill·multi-agent·claude code·ai 工程化
Apifox12 小时前
如何在 Apifox 中快速构建和调试 AI Agent
前端·agent·ai编程