当前位置: 首页 > news >正文

LLM 长上下文 RAG

文章目录

  • 背景
  • 综述
    • 位置编码优化
    • 注意力机制优化
  • QA

背景

DeepSeek-R1 — 128K,
Llama 4 则将上下文长度的界限扩大到超过 1000 万个 token。
Gemini-- 100w

  • 100w token 相当于
    • 50,000 行代码(标准为每行 80 个字符)
    • 您在过去 5 年内发送的所有短信
    • 8 部平均长度的英语小说
    • 150h长播客剧集的转写内容

综述

  • 长上下文要解决的两个问题:
    • 计算复杂度高–attention N2N^2N2
      • 修改注意力:
    • 位置编码泛化性差:正弦编码、RoPE 在面临长度外推的时候,性能会急剧下降;

位置编码优化

  • 经典位置编码:旋转位置编码(RoPE),正弦编码

  • NTK-aware Scaled RoPE:

    • 核心思想:对RoPE的高频部分进行修改,认为高频信息对相对位置更重要,而低频信息对长距离依赖更重要。通过调整RoPE的基底(base),使其能更好地外推。
    • 缺点:严重损害短距离建模能力。所有频率都被拉长,模型对精细位置的分辨能力下降。
    • 位置编码:R(m, θ_i),m 是token 在序列中的位置,i 是维度在嵌入向量中的位置;
    • θi=1000(−2i/d)θ_i = 1000 ^ (-2i / d)θi=1000(2i/d),调整基底就是比如把1000改成10000,
    • 底数 base 的直观理解:
      • 决定了旋转频率的范围:
        • 当 i 很小时(向量的低维部分),2i/d 接近0,θ_i 接近 10000^0 = 1。这代表一个低频旋转(转得慢)。
        • 当 i 很大时(向量的高维部分),2i/d 接近1,θ_i 接近 10000^-1 = 0.0001。这代表一个高频旋转(转得快)。
      • 编码了不同尺度的信息:
        • 低频部分 (转得慢): 即使位置 m 变化很大,旋转的角度变化也很小。这部分维度非常适合编码长距离、全局的位置信息。
        • 高频部分 (转得快): 位置 m 稍微变化一点,旋转角度就会变化很大。这部分维度非常适合编码短距离、精细的相对位置信息。
  • 位置插值 (Position Interpolation, PI):当需要将上下文从 L 扩展到 L’ 时,不是让模型去“外推”到未见过的位置,而是通过“插值”将新的位置索引“压缩”到原始的 [0, L) 范围内。

    • llama2 用到;本质上也是一种全局的“压缩”,只是操作对象是位置索引而非 base。 仍会一定程度上模糊短距离信息,
    • 例子:如果要从4K扩展到8K,可以将8K序列的位置索引 0, 1, 2, …, 8191 按比例缩小为 0, 0.5, 1, …, 4095.5,然后对相邻整数位置的编码进行线性插值。
    • 优点:非常有效,只需少量微调(fine-tuning)即可让模型适应新长度,且性能下降很小。LLaMA 2 就是用这种方法扩展了上下文。
  • YaRN (Yet another RoPE extension method)

    • 实现比前两者略复杂,需要修改 RoPE 的计算逻辑和 Attention 模块。
    • 性能最佳。在扩展上下文的同时,最大程度地保留了模型的原始性能,无论是在长文本还是短文本任务上。
    • 具体实现
      • 分段缩放:只对那些波长大于上下文窗口的“低频”维度进行插值,而保持“高频”维度的频率不变(低频绝对位置,高频相对位置)
      • 注意力分数的温度缩放:AttentionScores = softmax((Q * K^T) / t)
        • 温度 t 的计算: t 是一个与上下文扩展比例 s = new_len / original_len 相关的超参数,通常 t > 1。
        • YaRN 论文中给出的经验公式是 t = 0.1 * ln(s) + 1。
        • 作用: 除以一个大于1的温度 t,会使得注意力分数的分布变得更加平滑 (smooth)。这可以看作是一种正则化,防止模型在长序列中对某些 token 产生“过度自信”的注意力,从而提高了模型的稳定性和泛化能力。
  • Q1:预训练之后做位置编码改变,需要注意什么?

    • A1: 需要在长文本数据集上进行finetune。这也是 Position Interpolation (PI) 和 YaRN 等方法成功的关键。
  • Q2: PI vs NTK 对比

    • A2: 位置插值 (PI) 是直接在位置索引上进行插值,而 NTK-aware scaling 是通过修改 base 间接实现插值。两者思想相通,PI 在实现上可能更直接,而 NTK 的理论基础更强。在实践中,它们的效果和实现细节(如是否只对高频部分进行缩放)是社区研究的重点。

注意力机制优化

  • DCA(Dual Chunk Attention)
    • 应用:qwen3, 长序列建模使用 RoPE + YARN/Base-Scaling + DCA,模型4k—32k
    • 无需重新训练或微调的情况下,解决长序列推理N2计算消耗的问题;
    • 方法:将attention分成块内注意力 (Intra-chunk Attention)和 块间注意力 (Inter-chunk Attention) 两种方式;
      • 具体是通过kv cache 实现的,Intra-chunk Attention使用正常的kv cache,为了保持长记忆能力,但是又不能将之前所有的kv cache 存下来,所以对pre-chunks的kv cache,进行mean pooling 操作。所以当前的token query,不仅和chunk内的kv进行计算,还和之前pooling 之后的全局kv cache 计算;
    • 评价:(1)信息损失:用平均池化来代表整个块的信息是一种有损压缩。一个块内的细节、特定的关键信息可能会在平均过程中被“稀释”或丢失。这可能导致模型在需要精确定位历史信息(如“大海捞针”测试)的任务上表现不佳。(2)块边界效应 (Chunk Boundary Effects): 位于块边界附近的 token 无法看到相邻块的紧邻 token,可能会影响局部连贯性。

QA

  • Q: 长文本能力怎么评测

    • “大海捞针” (Needle In A Haystack) 测试:文档的不同深度位置放“针”(比如写一句话“披萨是最好吃的水果”,然后提问),查看模型的记忆能力;不同文本长度,性能是否有差距。
    • 多文档问答: 查看模型的记忆,信息整合,交叉验证的能力;
    • 长对话连贯性测试:N 轮问答之后,callback 之前的信息;
  • Q: qwen其他长序列的工作–Qwen3Long1

    • 长度渐进式训练:20k 数据 --> 60k 数据,通过从短到长逐步训练,模型可以更稳定地适应和泛化其位置编码在不同长度尺度上的作用,避免在优化过程中因长序列带来的不稳定性而“忘记”或“混淆”位置信息。
    • 基座能力继承, R1-Distill-Qwen已经做了长序列的工作
  • Q:对于openAI, gemni 长序列工作的研究&推测

    • openai : FlashAttention (工程基础) + 位置插值 (核心算法) + 长文本微-调 (能力激活)。
      • GPT-3.5-16K 到 GPT-4-32K,再到 GPT-4-128K Turbo;长度渐进式扩大,说明大概率是基模基础上长文本数据微调;
      • FlashAttention + 稀疏attention;
    • gemni: MoE 架构 (核心差异化) + 可能的新型线性时间架构 (如受 Mamba 启发) + 极致的工程和数据优化。他们似乎在寻求一种比稀疏 Transformer 更根本的解决方案,来彻底摆脱二次方复杂度的限制。
      • Gemini 1.5 Pro 生成在“在模型架构上的突破”;而且有很好的“大海捞针”测试结果
      • MOE 结构,不能解决N2的计算复杂度问题,但是不同的专家可能会分配不同的长短记忆功能
  • 长上下文和RAG的对比

    • 相同点:都是对大模型知识库的扩充
    • 不同点:
      • 长上下文是需要输入一系列的信息/文档,然后利用大模型的能力进行理解生成
      • RAG(Retrieval-Augmented Generation)检索增强生成:先根据用户的问题在互联网上进行检索,找到最相关的片段,将检索到的信息和用户问题一起送给大模型,用于生成回答。
    • 对比:
      • 长上下文输入的信息没有重点,模型需要查看所有的信息,然后理解整体出回答;处理的文本长度比较长,不能超出模型能力;如果知识源发生变化,需要重新构建完整的长上下文并再次输入。
      • RAG的输入已经是比较相关的片段(检索准确度也是整个系统的上限),信息密度比较高,但是LLM 输入的信息比较碎片化;知识库是互联网上的信息,单独更新不影响,但是需要构建和维护一个额外的系统,包括文本分块、向量化、索引、数据库等。
    • 应用侧重:
      • 长上下文输入:文档总结,横向对比,创意写作等
      • RAG:需要溯源的应用,实时信息查询(新闻,天气)
    • 未来趋势:长上下文记忆能力和 RAG 不是相互替代的关系,而是正在走向融合,形成更强大的系统。

文章转载自:

http://D5GZtRz3.khtjn.cn
http://HUp8ofuR.khtjn.cn
http://Oni0Usb0.khtjn.cn
http://uGpXWYgi.khtjn.cn
http://4QENQrGY.khtjn.cn
http://CO2mQKZ0.khtjn.cn
http://i06CmVyD.khtjn.cn
http://1uGsThru.khtjn.cn
http://59Wz651r.khtjn.cn
http://IYotMKEA.khtjn.cn
http://V2lAOCU5.khtjn.cn
http://YiHm7LYv.khtjn.cn
http://xPnxQzSF.khtjn.cn
http://HMAraZaK.khtjn.cn
http://7aqpERsi.khtjn.cn
http://OOmhctaY.khtjn.cn
http://hZza4bX0.khtjn.cn
http://5uoH8n7N.khtjn.cn
http://TGr7vdax.khtjn.cn
http://pZfAvkd3.khtjn.cn
http://okEte0Ib.khtjn.cn
http://tN4jvxFs.khtjn.cn
http://41Wr7zJy.khtjn.cn
http://pc2X2Sa1.khtjn.cn
http://oLSskOA4.khtjn.cn
http://dAdj5yMl.khtjn.cn
http://oLPJ8m4b.khtjn.cn
http://7uMUfzj0.khtjn.cn
http://mAD45PX1.khtjn.cn
http://u2o8PJwz.khtjn.cn
http://www.dtcms.com/a/371142.html

相关文章:

  • 深入剖析Spring Boot启动流程
  • 郭平《常变与长青》读书笔记(第二章)
  • 郭平《常变与长青》读书笔记(第四章)
  • 中断和异常
  • 压缩空气储能电站可视化管理
  • 第08章 聚合函数
  • 20250906-01:开始创建LangChain的第一个项目
  • MySQL数据库安全:权限管理与防SQL注入完全指南
  • 吴恩达机器学习(八)
  • 50系显卡训练深度学习YOLO等算法报错的解决方法
  • 【golang长途旅行第38站】工厂模式
  • 分享vscode翻译插件
  • Phthon3 学习记录-0707
  • 嵌入式学习笔记--Linux系统编程阶段--DAY07进程间通信--存储映射和共享内存
  • DMA寄存器学习
  • 对于单链表相关经典算法题:206. 反转链表及876. 链表的中间结点的解析
  • 云原生部署_k8s入门
  • 分布式数据库的历史演变与核心原理
  • 线代:排列与逆序
  • GPIO的配置中开漏输出与推挽输出的差别
  • 有有有深度学习
  • 车载通信架构 --- DoIP企业规范中细节有哪些?
  • 【Linux基础】Linux系统管理:GPT分区实践详细操作指南
  • 6-2-4 解决第一次发送失败
  • 跨域彻底讲透
  • c++之基础B(x转10进制,含十六进制)(第四课)
  • 自注意力机制解析
  • 数据结构——队列(Java)
  • Dify 从入门到精通(第 79/100 篇):Dify 的多模态模型评估(高级篇)
  • 具身导航“所想即所见”!VISTA:基于生成式视觉想象的视觉语言导航