问题
在 RAG 中,为什么要把文档划分成多个块进行索引?如何解决文档分块后,内容上下文缺失的问题?如何处理跨片段的依赖关系?
答案
RAG 中为什么要把文档切成多个块再索引?
1.模型上下文窗口限制大模型一次只能读有限长度文本,直接把整本书 / 整篇长文档丢进 prompt 会超限。
2.检索精度更高向量检索是语义匹配,块越小,语义越聚焦,召回结果越准。长文本语义分散,向量会 “模糊”,匹配不准。
3.索引与检索效率块越小,向量库存储、计算、查询速度越快。
4.避免信息淹没只把最相关的片段喂给模型,而不是整份文档,答案更干净、推理更快。
5.支持增量更新文档修改时,只更新对应块,不用重编全文档。
如何解决分块后上下文缺失的问题?
核心思路:让块之间保留关联信息,不让语义断裂。
1.带重叠的分块 相邻块之间保留一段重复内容,保证上下文连贯。例如:每块 500 字符,重叠 100 字符。
2.给每个块补充 “上下文头信息”块前加上:

  • 文档标题
  • 章节 / 段落位置
  • 简要摘要让模型知道这块在全文中的位置。
    3.先做文档层级结构化 按:标题 → 章节 → 小节 → 段落 分层。分块时保留层级关系,检索时优先同章节内容。
    4.使用轻量摘要块 对每个块生成短摘要,与原块一起索引,增强语义连贯性。
    5.召回多块再拼接 检索时不只取 top1,而是取 top3~top5 相关块,按原文顺序重排后送入模型。
    如何处理跨片段的依赖关系?
    跨片段依赖 = 答案需要多个不连续块才能推理出来。
    1.层级检索 / 二次检索
  • 第一轮:召回最相关的块
  • 第二轮:以这些块为线索,再召回相邻块、同章节块、关联块
    2.先检索 “父块”,再检索 “子块” 把长段落当父块,切小的当子块。先匹配子块,再把父块一起带入上下文,保证完整逻辑。
    3.建立块间关联索引提前记录:
  • 块的前序、后继
  • 同主题块
  • 因果 / 条件 / 步骤依赖检索时自动拉取依赖链。
    4.使用图结构 RAG(知识图谱 + 向量)把实体、关系、步骤存成图。检索时不仅取文本块,还取关联路径,模型能理解跨块逻辑。
    5.多轮召回 + 重排序 一次召回不够,就根据模型的中间理解,再去库中补查缺失的上下文片段。
    6.大窗口模型 + 长上下文 RAG直接使用支持长上下文的模型,一次读入更多相关块,减少依赖断裂。
    极简总结
  • 为什么分块:适配窗口、提升精度、提高效率、避免信息淹没。
  • 解决上下文缺失:重叠分块、上下文信息、结构化、多块召回。
  • 处理跨块依赖:层级检索、父子块、块关联、图谱 RAG、多轮补全。

问题
如果发现向量相似度检索的匹配效果不佳,除了更换嵌入模型,还有哪些办法?
答案
优化「分块」—— 90% 的效果差都出在这里
1.调整块大小

  • 太小:语义不完整
  • 太大:向量模糊、匹配不准建议:在你当前业务上做AB 测试,找到最优长度。
    2.增加块重叠上下文断裂会直接导致匹配不到,重叠能显著提升召回。
    3.按语义分块,不按字符硬切
  • 按段落、章节、标题、逻辑断点切
  • 不要均匀切分,让每块语义独立且完整
    4.给块加「语义前缀」块前加上:文档标题、章节名、摘要让向量包含全局上下文,匹配更准。

二、优化「索引内容」—— 让向量 “更干净、更聚焦”
1.清洗文本

  • 去掉乱码、空格、广告、导航、重复内容
  • 噪音越少,向量越纯
    2.只索引关键信息
  • 对长文档:只索引核心句、关键词、摘要
  • 不要把整段废话都向量化
    3.使用「Hybrid 混合检索」(极强提升)
  • 向量检索(语义)+ 关键词检索(BM25/TF-IDF)
  • 两者结果加权融合专治:语义相似但关键词对不上的情况。

三、优化「查询端」—— 让问题更容易被匹配到
1.查询改写 / Query Expansion

  • 把用户口语化问题 → 改成标准、正式、完整的问句
  • 或生成多个同义问题一起检索大幅提升匹配成功率。
    2.查询加上下文历史对话 + 当前问题一起向量化,避免歧义。
    3.关键词增强从问题里抽实体、术语,强制参与检索。

四、优化「召回与排序」—— 让好片段排前面
1.增加召回数量从 top3 → top5~top10,再用重排序模型精排。
2.加入 Rerank 重排序模型(效果提升最明显)

  • 先用向量快速召回一批
  • 再用轻量 rerank 模型精排这是不换 embedding 模型下最强手段。
    3.加权检索
  • 标题 > 正文
  • 最新文档 > 旧文档
  • 高相关章节 > 普通段落

五、优化「向量库与索引结构」
1.选择合适的索引类型

  • 追求精度用:HNSW
  • 追求速度用:IVF不合适的索引会导致 “近似搜索漏匹配”。
    2.调整向量库参数
  • 提高 recall 精度参数
  • 降低检索加速系数,换取精度

六、结构化与知识增强
1.使用父子块检索(Parent-Child Retriever)

  • 子块小,匹配准
  • 召回后带回父块,保证上下文完整
    2.知识图谱 / 实体链接把专业术语、实体、关系抽出来,辅助检索。
    专家极简建议(按效果从强到弱)
    1.先做 Hybrid 混合检索
    2.再加 Rerank 重排序
    3.优化 分块策略 + 语义前缀
    4.做 查询改写这四步做完,绝大多数 RAG 检索效果都能明显提升,甚至不输换更好的 embedding 模型。
    问题
    向量相似度检索不能实现关键词的精确匹配,传统关键词检索不能匹配语义相近的词,如何解决这对矛盾?

    同时建两条索引
    1.向量索引:做语义匹配
    2.倒排索引 / BM25:做关键词精确匹配
    同时检索
    用户问题进来后:
  • 查向量库 → 得到一批语义相关块
  • 查关键词库 → 得到一批关键词精确命中块
    结果融合(最关键)
    两种结果做 加权融合 + 去重 + 排序。

问题
向量相似度检索已经是根据语义相似度匹配,为什么还需要重排序模型?
答案

  • 向量检索:负责快,不负责最准
  • 重排序:负责准,不负责快
  • 向量是粗召回,重排序是精排序
  • 向量解决量级问题,重排序解决精度问题
  • 不加 Rerank,RAG 永远达不到生产可用精度
    问题
    为什么要在向量相似度检索前,对用户输入的话进行改写?
    答案
  • 向量检索只认 “语义”,不认 “意图”
  • 用户输入天生不标准、不完整、有歧义
  • 改写 = 提纯意图 + 标准化表述 + 补全信息 + 扩展语义
  • 改写后,向量才能精准找到正确片段
  • 这是提升检索效果成本最低、效果最明显的一步

问题
RAG 系统检索的文档可能包含冲突信息或过时数据,如何在生成回答时防止被这些信息误导?
答案
检索前就把「过时 / 冲突」挡在外面

  1. 给文档打标,从源头过滤
    给每个块增加元数据:
  • 时间戳(发布时间 / 生效时间)
  • 版本号
  • 数据来源可信度
  • 状态:有效 / 作废 / 待更新
    检索时强制加元数据过滤:
  • 只取最近 1 年 / 最新版本
  • 只取官方、高可信来源
  1. 建立「失效 / 冲突知识库」
    单独存:
  • 过时政策
  • 废弃接口
  • 被纠正的错误信息检索时先排除这类内容。
    第二层:检索后、生成前,做「冲突与时效性校验」
    这是最关键的一步,不让错误内容进 Prompt。
  1. 时效性过滤
    让模型 / 小模型检查:
  • 这块内容是否有时效性
  • 是否已超过有效期
  • 是否被新版替代
    只保留当前有效的片段。
  1. 冲突检测
    把召回的所有片段丢给一个轻量判断任务,问三件事:
    1.这些信息是否互相矛盾?
    2.哪些是结论冲突?
    3.哪些是数据 / 数字冲突?
    识别出冲突后:
  • 保留来源更权威
  • 保留时间更新
  • 保留更完整、可验证的一方
  • 丢弃不可靠的
  1. 相关性再过滤
    很多冲突来自:召回了不相关但相似的内容。用 Rerank 模型把低相关性直接丢掉。
    第三层:生成回答时,让模型「自带脑子」,不盲目相信检索材料
    这是最终防线,Prompt 里强制加规则:
    给大模型的固定指令
    1.如果检索到相互冲突的信息:
  • 必须指出存在不同说法
  • 优先采用最新、最权威来源
  • 不要混合冲突内容
    2.如果发现过时 / 废弃信息:
  • 明确说明该内容已失效
  • 只给当前有效答案
    3.如果信息不确定、无依据:
  • 不要编造
  • 如实说 “依据现有材料无法确定”
    4.所有事实、数据、结论必须来自检索内容,不能瞎编。
    第四层:工程上的强保证手段
  1. 只让「高可信片段」进入回答
  • 官方文档 > 社区帖子 > 个人博客
  • 时间越新权重越高
  1. 事实核查(Fact Checking)
    在生成答案后,再用模型做一步校验:
  • 这句话是否与检索材料一致?
  • 是否存在冲突、过时、夸大?
  • 是否有来源支持?
    不合格就重新生成。
  1. 多来源交叉验证
  • 同一个结论出现在 ≥2 个可靠来源 → 可信
  • 只出现一次且与其他冲突 → 存疑 / 丢弃
    极简总结
    1.过时问题靠「时间戳 + 版本 + 元数据过滤」解决。
    2.冲突问题靠「来源权威 + 时间新旧 + 相关性」投票解决。
    3.生成时必须让模型:会判断、会取舍、会声明冲突。
    4.检索前过滤 > 检索中校验 > 生成时约束,三层组合才能真正防误导。

问题
如何使检索模块能够从生成模块获得反馈并动态调整检索策略,例如给不同的文档标注可信度?
答案
生成模块输出「隐式反馈」+「显式反馈」
(1)隐式反馈(不用额外问)

  • 回答引用了哪几段
  • 引用次数
  • 放在回答的重要位置还是次要位置
  • 是否忽略 / 丢弃某段
  • 是否指出某段冲突、过时、矛盾
    (2)显式反馈(让模型专门输出)
    让大模型在生成答案的同时,强制输出一段检索反馈:
  • 片段 A:有用 + 高可信 + 最新
  • 片段 B:有用但部分过时
  • 片段 C:与 A 冲突,可信度低
  • 片段 D:不相关
    这就是生成给检索的信号。
    建立「文档可信度库」(核心)
    给每个文本块维护一组动态元数据:
  • 可信度分数(0~1)
  • 有用率(被生成模型采纳次数 / 被检索次数)
  • 冲突标记(是否与高可信片段冲突)
  • 过时标记
  • 来源权威等级
  • 最后更新时间
    每次生成后,自动更新这些分数。
    检索如何根据反馈动态调整策略?
  1. 动态加权检索
    可信度高 → 检索得分高可信度低 → 降权甚至屏蔽
    公式思想:最终得分 = 向量相似度得分 × 可信度权重 × 来源权重 × 时间权重
    效果:
  • 以前:只看语义像不像
  • 现在:语义像 + 可信 + 有用 + 新 才排前面
  1. 动态过滤
  • 可信度低于阈值 → 直接不进入候选
  • 被标记冲突 / 过时 → 自动排除
  • 来源差 → 过滤
  1. 动态调整分块与索引
  • 经常被标记 “不完整” 的块 → 重新分块
  • 经常被标记 “冲突” 的块 → 人工 / 自动审核
  1. 动态调整召回数量
  • 简单问题:少召回
  • 复杂 / 冲突多的问题:多召回,让模型交叉验证
    极简总结
    1.生成模块 → 给每段检索结果打标签:有用、可信、冲突、过时
    2.把标签存入可信度库,更新每个块的长期权重
    3.检索时用可信度动态加权 / 过滤
    4.实现:越用越准,自动避开坏文档,优先用好文档
    问题
    如何提升 RAG 系统的可解释性,包括清晰标注生成内容的来源,以及量化展示系统对回答的确信度?
    答案
    让系统每一步都可追溯、可量化、可展示:
    1.回答从哪段来 → 标来源
    2.系统有多相信这个答案 → 给分数
    3.为什么这么答 → 展示依据
    清晰标注生成内容的来源(最基础、最必需)
  1. 给每个文本块唯一标识
    每个块必须带:
  • 片段 ID
  • 文档名 / 章节
  • 页码 / 位置
  • 来源(官网 / 手册 / 外部文章)
  • 发布时间
  1. 生成时强制 “引用机制”
    Prompt 强制要求:
  • 每一句事实结论,必须标注对应片段 ID
  • 格式:[引用:片段ID]
  • 禁止无依据的话
  1. 前端 / 输出展示 “来源面板”
    输出结尾固定加:参考来源:
    量化展示系统对回答的确信度(核心可解释性)
  2. 确信度 = 三部分分数合成
    最终确信度(0~1 或 0~100)由 3 个维度计算:
    1.检索相关性分数向量相似度 + 重排序分数
    2.内容可信度分数来源权威、新旧、是否冲突
    3.生成一致性分数回答是否真的来自片段,没有编造
  3. 如何计算每个分数?
  • 相关性:直接用 Rerank 分数(0~1)
  • 可信度:来源等级 × (1‑过时度) × 无冲突标记
  • 一致性:让模型判断 “回答是否严格依据片段”(0~1)
    最简单、最稳定的落地架构
    1.块级元数据:ID、来源、时间、权威度
    2.检索打分:相关性 + 可信度
    3.Rerank 精排:精细相关性;原始向量得分、重排序得分、可信度加权后最终得分
    4.生成强制引用:每句话带 [chunk_id]
    5.后校验:判断生成是否 hallucination
    6.确信度计算:综合打分
    7.界面展示:来源列表 + 确信度仪表盘

问题
智能体如何把处理企业任务的经验总结到知识库中,并在后续任务中引入知识库中的经验?如何保证经验不断积累,而不是简单用新的经验覆盖已有的经验?
答案
核心思路:不覆盖、只增量、可融合、可版本、可追溯。
(1)存储层面:不覆写,只追加 / 版本化

  • 每条经验带:
  • 唯一 ID
  • 创建时间、更新时间
  • 版本号
  • 适用场景 / 生效条件
  • 置信度 / 有效次数
  • 新经验新增一条,而不是更新旧字段。
    (2)去重与合并,而不是覆盖
  • 相似经验:
  • 相似度高 → 合并为一条更通用的经验
  • 场景不同 → 保留为多条互补经验
  • 冲突经验:
  • 标记冲突来源、条件
  • 按「业务优先级 + 有效性 + 时间」自动 / 人工裁决
    (3)建立经验生命周期管理
  • 新增 → 待审核 → 生效 → 常用 / 废弃
  • 废弃不是删除,而是标记失效,保留历史可追溯
  • 支持按时间、场景、成功率做优胜劣汰
    (4)分层知识库,避免混乱
  • 通用层:公司通用流程、制度
  • 业务线层:部门专属经验
  • 个人 / 任务层:特定任务小技巧新经验只进入对应层级,不会冲掉其他层知识。
    (5)持续迭代与反馈闭环
  • 每次调用经验后记录:是否解决问题、是否正确
  • 高有效 → 提升权重
  • 低有效 → 降权或进入复审
  • 长期无用 → 归档,不删除

极简总结
1.沉淀:任务复盘 → 结构化提取 → 向量 + 结构化入库。
2.复用:任务解析 → 语义检索 → 经验注入推理。
3.不覆盖、只积累:

  • 追加不覆写
  • 版本化 + 去重融合
  • 分场景、分权重、分生命周期
  • 用反馈闭环持续进化。

问题
如果需要根据一本长篇小说的内容回答问题,小说长度远远超出上下文限制,应该如何综合利用摘要总结和 RAG 技术,使其能同时回答故事梗概和故事细节?
答案
为什么单纯摘要 / 单纯 RAG 都不行

  • 只做全文摘要:细节丢失,无法回答 “某句话谁说的”“某场景发生了什么”。
  • 只做普通 RAG 切块:切块太小,丢失全局逻辑,回答不出整体故事线、主题、人物弧光。
  • 超长上下文直接塞:受模型窗口限制,不可能实现,且推理成本极高、极易混乱。
    因此必须摘要 + RAG 协同工作。
    第一步:对长篇小说做「多层结构化摘要」
    目的:保留全局结构,不丢失宏观信息。
    你需要生成至少三层摘要:
    1.全书级摘要
  • 整本书的主题、核心冲突、结局、核心思想。
    2.卷 / 章级摘要
  • 每一卷 / 每一章的剧情、关键事件、人物行动。
    3.关键节点摘要
  • 重要转折、人物关系变化、关键场景的浓缩描述。
    这些摘要会:
  • 存入结构化知识库(如 JSON / 图谱);
  • 同时向量化,进入RAG 向量库。
    作用:
  • 回答梗概、整体剧情、人物成长、主题思想这类宏观问题时,优先使用摘要。
  • 保证模型 “看懂整本书”。
    第二步:对原文做「细粒度 RAG 切片」
    目的:保留所有细节,支持精准检索。
    做法:
  • 把小说按段落 / 小节切成小片段(通常几百字符一段);
  • 每段保留:章节号、位置、上下文边界、人物、场景;
  • 全部向量化存入向量库。
    作用:
  • 回答细节类问题(谁在何时何地说什么、某个场景细节、某段原文)时,直接从 RAG 召回原文片段。

第三步:摘要与 RAG 如何
系统需要一个路由层(调度逻辑),根据问题类型自动选择来源:
(1)宏观问题 → 优先用「多层摘要」
例如:

  • 这本书讲了什么?
  • 主角经历了怎样的成长?
  • 小说的结局是什么?
  • 主题 / 中心思想是什么?
    处理流程:
    1.问题 → 检索全书 / 章节摘要;
    2.把摘要送入模型;
    3.输出完整、连贯、全局化回答。
    (2)细节问题 → 直接用「细粒度 RAG」
    例如:
  • 第三章主角说了什么?
  • 某某场景的环境描写?
  • 某个人物的某个行为?
    处理流程:
    1.问题 → 检索原文切片;
    2.把最相关的原文片段给模型;
    3.模型基于原文给出精准、可引用的回答。
    (3)混合问题 → 摘要 + RAG 一起用
    例如:
  • 主角为什么会做出某个决定(需要梗概 + 具体场景)?
  • 请结合剧情分析某个人物(需要全局 + 细节)。
    处理流程:
    1.召回相关章节摘要(提供上下文);
    2.召回关键细节片段(提供证据);
    3.按 “摘要在前、细节在后” 组织上下文;
    4.模型统一理解并生成综合答案。
    如何保证:既能答梗概,又能答细节
    核心机制:
    1.分层存储
  • 上层:摘要(结构、全局、逻辑)
  • 下层:原文切片(细节、证据、原文)
    2.分层检索
  • 问题意图识别 → 判断是宏观 / 微观 / 混合
  • 自动从对应层抽取信息
    3.动态上下文拼装
  • 不把整本书塞进去
  • 只把 “必要摘要 + 必要细节” 拼进上下文
  • 既不超窗口,又信息完整
    关键工程要点
  • 章节 / 段落必须带位置索引,保证可追溯、可定位。
  • 摘要要结构化,最好包含:章节、人物、事件、因果、情绪、转折。
  • RAG 检索时做多路召回:摘要路 + 原文路,然后重排。
  • 超长内容绝对不依赖单段超长上下文,完全靠 “检索 + 组装”。
  • 可以搭配轻量知识图谱记录人物关系、事件时序,大幅提升剧情类问题准确性。
    极简总结
    超长小说无法直接放入上下文,必须采用:
    1.多层摘要负责全局梗概、剧情脉络、人物与主题;
    2.细粒度 RAG负责场景、对话、原文等细节;
    3.通过问题路由 + 动态上下文组装,让模型按需取用摘要与细节;
    4.最终实现:既能回答整体故事,又能精准回答任意细节,且不超上下文限制。

问题
如何将 RAG 系统从纯文本扩展到多模态,支持检索图像、视频、图文并茂的文档等多模态信息,并在生成回答时以多模态形式呈现,例如包含原始文档中的图表和视频?
答案
多模态 RAG 四大关键模块

  1. 多模态统一编码
    目标:把文本、图像、视频、音频映射到同一个向量空间。
    做法:
  • 使用多模态模型(如 CLIP 类、多模态 LLM 配套的 encoder)
  • 对所有内容编码成同维度向量:
  • 文本:句子 / 段落 / 标题 → 向量
  • 图像:整图 / 区域 / 图表 → 向量
  • 视频:按秒 / 关键帧抽取 → 逐帧向量 + 片段摘要向量
  • 图文文档:文本 + 图片联合编码
    这样就能实现:
  • 文本 query → 检索最相似的文本 / 图像 / 视频片段
  • 图像 query → 检索相似图像 / 相关文本
  1. 多模态数据切片与入库
    (1)文本类
  • 按段落 / 章节切块,生成向量 + 元数据(位置、章节、标题)
    (2)图像 / 图表类
  • 对图片生成:
  • 图像向量
  • 图像标题 / 描述文本(由多模态模型生成)
  • OCR 文字(图表内文字)
  • 一起存入向量库
    (3)视频类
  • 抽关键帧 + 按时间分片
  • 对每一帧做图像编码
  • 对片段做语音转文字 + 画面摘要
  • 存储:片段起始时间、结束时间、帧向量、文本向量
    (4)图文混合文档(PDF/PPT/ 网页)
  • 按页 / 块拆分:文本块、图片块、表格块、图表块
  • 每个块独立编码,并记录块之间的布局关系(上下左右、对应关系)
  • 建立 “图表 ↔ 说明文字” 的关联索引
    多模态检索(路由 + 多路召回)
    流程:
    1.用户提问(文本 / 图像 / 语音)
    2.系统编码为多模态 query 向量
    3.执行多路并行检索:
  • 文本召回 → 相关文本
  • 图像召回 → 相关图 / 图表
  • 视频召回 → 相关帧 / 片段
    4.对所有结果重排序(相关性、来源可信度、位置完整性)
    5.选出:
  • 最相关的文本
  • 最相关的图 / 图表
  • 最相关的视频片段(带时间戳)
    多模态生成回答
    让回答不只是文字,而是富媒体内容:
    (1)文本回答
  • 基于检索到的多模态信息生成自然语言答案
    (2)插入图像 / 图表
  • 直接引用检索到的原图 / 图表
  • 配上说明:图来自哪页、表达什么
    (3)插入视频片段
  • 返回视频源 + 起止时间戳
  • 前端可直接播放对应片段
    (4)结构化呈现
  • 文本解释 + 图表展示 + 视频片段联动
  • 例如:
    如何保证 “能检索到、能展示出”
  1. 元数据体系必须完整
    每条多模态数据必须带:
  • 类型:text/image/chart/video
  • 来源:文档页码 / 视频时间 / 链接
  • 关联关系:此图对应哪段文字、此图表说明什么
  • 质量评分:清晰度、重要性
  1. 检索策略
  • 全局问题(总结 / 概述):优先文本 + 摘要
  • 细节 / 数据问题:优先图表 + 表格
  • 场景 / 视觉问题:优先图像 + 视频
  1. 展示控制
  • 模型决定回答中要不要放图、放哪张、放几段视频
  • 前端根据类型渲染:图片、图表、视频切片、富文本
  • 极简专家总结多模态 RAG 就是把传统 RAG 扩展为三步:
    1.统一多模态编码:文本、图像、视频映射到同一向量空间
    2.多模态切片入库:图文按块、视频按帧 / 片段、文档按页结构化存储
    3.跨模态检索 + 多模态生成:
  • 用文字 / 图像检索任意模态内容
  • 回答时自动拼接文字 + 图片 + 图表 + 视频片段
    最终实现:既能检索多模态,也能输出多模态回答。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐