AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
  • 大模型基础

    • 语言模型基础

      • 概述
      • 基于统计方法的语言模型
      • 基于神经网络的语言模型
      • 语言模型的采样方法
      • 语言模型的评测
    • 大语言模型架构

      • 概述
      • 主流模型架构
      • Encoder-only
      • Encoder-Decoder
      • Decoder-only
      • 非Transformer 架构
    • Prompt工程

      • 工程简介
      • 上下文学习
      • 思维链
      • 技巧
    • 参数高效微调

      • 概述
      • 参数附加方法
      • 参数选择方法
      • 低秩适配方法
      • 实践与应用
    • 模型编辑

      • 简介
      • 方法
      • 附加参数法
      • 定位编辑法
    • RAG

      • 基础
      • 架构
      • 知识检索
      • 生成增强
  • 动手学深度学习

    • 深度学习基础

      • 引言
      • 数据操作
      • 数据预处理
      • 数学知识(线代、矩阵计算、求导)
      • 线性回归
      • 基础优化方法
      • Softmax回归
      • 感知机
      • 模型选择
      • 过拟合和欠拟合
      • 环境和分布偏移
      • 权重衰减
      • Dropout
      • 数值稳定性
    • 卷积神经网络

      • 模型基本操作
      • 从全连接层到卷积
      • 填充和步长
      • 多个输入和输出通道
      • 池化层
      • LeNet
      • AlexNet
      • VGG
      • NiN网络
      • GoogleNet
      • 批量归一化
      • ResNet
    • 计算机视觉

      • 图像增广
      • 微调
      • 目标检测
      • 锚框
      • 区域卷积神经网络
      • 单发多框检测
      • 一次看完
      • 语义分割
      • 转置卷积
      • 全连接卷积神经网络
      • 样式迁移
    • 循环神经网络

      • 序列模型
      • 语言模型
      • 循环神经网络
      • 序列到序列学习
      • 搜索策略
    • 注意力机制

      • 优化算法

RAG - 生成增强

  • 在输入端增强
  • 在中间层增强
  • 在输出端增强
  • 分解式增强
  • 渐进式增强
  • 去除冗余文本
  • 复用计算结果

何时增强

  • 判断是否需要增强的核心在于判断大语言模型是否具有内部知识。

  • 外部观测法,

    • 通过Prompt 直接询问模型是否具备内部知识,或应用统计方法对是否具备内部知识进行估计,这种方法无需感知模型参数。
    • 问询方式
      • Prompt 直接询问大语言模型是否含有相应的内部知识
      • 反复询问大语言模型同一个问题观察模型多次回答的一致性
    • 通过翻看大语言模型的“教育经历”,即训练数据来判断其是否具备内部知识。
  • 内部观测法

    • 通过检测模型内部神经元的状态信息来判断模型是否存在内部知识,这种方法需要对模型参数进行侵入式的探测。
      • 由于模型的内部知识检索主要发生在中间层的前馈网络中,因此在处理包含或不包含内部知识的不同问题时,模型的中间层会展现出不同的动态变化。基于这一特性,我们可以训练分类器进行判别,这种方法被称为探针。

何处增强

得益于大语言模型的上下文学习能力、注意力机制的可扩展性以及自回归生成能力,其输入端、中间层和输出端都可以进行知识融合操作。

  • 在输入端,可以将问题和检索到的外部知识拼接在Prompt中,然后输入给大语言模型
  • 在中间层,可以采用交叉注意力将外部知识直接编码到模型的隐藏状态中;
  • 在输出端,可以利用外部知识对生成的文本进行后矫正。

在输入端增强

良好的Prompt 设计和外部知识排序,可以使模型更好地理解、利用外部知识。模型可以直接从输入的上下文中提取到所需信息,无需复杂的处理或转换。

在中间层增强

利用注意力机制的灵活性,先将检索到的外部知识转换为向量表示,然后将这些向量插入通过交叉注意力融合到模型的隐藏状态中。这种方法能够更深入地影响模型的内部表示,可能有助于模型更好地理解和利用外部知识。同时,由于向量表示通常比原始文本更为紧凑,这种方法可以减少对模型输入长度的依赖。

在输出端增强

利用检索到的外部知识对大语言模型生成的文本进行校准,是一种后处理的方法。在此类方法中,模型首先在无外部知识的情况下生成一个初步回答,然后再利用检索到的外部知识来验证或校准这一答案。校验过程基于生成文本与检索文本的知识一致性对输出进行矫正。矫正可以通过将初步回答与检索到的信息提供给大模型,让大模型检查并调整生成的回答来完成。

多次增强

对于复杂问题和模糊问题,难以通过一次检索增强就确保生成正确,多次迭代检索增强在所难免。

  • 处理复杂问题时,常采用分解式增强的方案。该方案将复杂问题分解为多个子问题,子问题间进行迭代检索增强,最终得到正确答案。
  • 处理模糊问题时,常采用渐进式增强的方案。该方案将问题的不断细化,然后分别对细化的问题进行检索增强,力求给出全面的答案,以覆盖用户需要的答案。

分解式增强

DEMONSTRATE–SEARCH–PREDICT(DSP)是一种具有代表性的分解式增强框架。它的核心思想是:将一个复杂的问答任务分解为三个清晰的阶段,以模拟人类解决问题时的思维过程,从而显著提高模型回答的准确性和可解释性。该框架主要包含以下三个模块:

  1. DEMONSTRATE(示范/分解)
  • 目标:将原始问题分解为一系列可执行的子步骤。
  • 方法:通过提供几个“问题 → 推理步骤”的示例(few-shot prompting),引导模型学会如何拆解问题。
  • 关键:这些示例展示了如何将模糊或复杂的查询转化为具体的、有序的行动指令。
示例:
原始问题:“为什么20世纪初的飞机飞行距离很短?”
分解后步骤:
1. 搜索“20世纪初飞机使用的发动机类型”。
2. 搜索“早期飞机燃料效率”。
3. 搜索“当时航空材料对重量的影响”。
4. 综合信息,解释飞行距离受限的原因。
  1. SEARCH(搜索/检索)
  • 目标:根据上一步生成的子问题,调用外部知识源进行检索。
  • 方法:使用传统搜索引擎(如Bing、Google)或向量数据库,获取与每个子问题相关的文档或段落。
  • 作用:弥补LLM知识截止和幻觉问题,引入最新、准确的外部信息。
示例:
子问题:“20世纪初飞机使用的发动机类型”
检索结果:“早期飞机多使用活塞式发动机,功率低,油耗高。”
  1. PREDICT(预测/生成)
  • 目标:基于检索到的信息,生成最终答案。
  • 方法:将原始问题、分解步骤和检索到的证据输入LLM,让其综合所有信息进行推理并输出答案。
  • 特点:答案不再是凭空生成,而是有据可依,可追溯。
示例:
最终答案:“20世纪初的飞机飞行距离短,主要是因为其使用的活塞式发动机功率有限且燃料效率低,同时机身材料较重,导致续航能力不足。”

渐进式增强

在处这样的模糊问题时,可以对问题进行渐进式地拆解、细化,然后对细化后的问题进行检索,利用检索到的信息增强大模型。

TREE OF CLARIFICATIONS (TOC),中文可译为 “澄清之树” 或 “疑问树”,是一种用于提升大型语言模型(LLM)在面对模糊、歧义或信息不完整查询时表现的交互式提示框架。

TOC 的工作流程:

  1. 识别歧义(Ambiguity Detection)
  2. 生成澄清问题(Generate Clarifying Questions)
  3. 构建树状结构(Tree Structure)
  4. 收敛到明确意图(Converge to Intent)
  5. 生成最终回答(Final Answer Generation)

降本增效

检索出的外部知识通常包含大量原始文本。将其通过Prompt 输入给大语言模型时,会大幅度增加输入Token 的数量,从而增加了大语言模型的推理计算成本。此问题可从去除冗余文本与复用计算结果两个角度进行解决。

去除冗余文本

去除冗余文本的方法主要分为三类:

  • Token 级别的方法
    • 通过对Token 进行评估,对文本中不必要的Token 进行剔除。
  • 子文本级别的方法
    • 通过对子文本进行打分,对不必要的子文本成片删除。
  • 全文本级别的方法
    • 直接从整个文档中抽取出重要信息,以去除掉冗余信息。

复用计算结果

为了避免对每个Token 都重新计算前面的Key 和Value 的结果,可以将之前计算的Key和Value的结果进行缓存(即KV-cache),在需要是直接从KV-cache中调用相关结果,从而避免重复计算。

最近更新: 2026/1/24 10:44
Contributors: klc407073648
Prev
知识检索