跳转至

三十六:长上下文提示压缩自测题答案

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484460&idx=1&sn=bfaaba08159df717c6c7b082d793a5fe&chksm=f01eb755c7693e4382f1c53838b041826c0f4b7e932e1b9b92b5fe285a72d60afa60ec620944#rd

参考资料

  • Selective Context paper:https://arxiv.org/abs/2310.06201

  • LLMLingua paper:https://arxiv.org/abs/2310.05736

  • LongLLMLingua paper:https://arxiv.org/abs/2310.06839

  • LLMLingua project:https://github.com/microsoft/LLMLingua

一、基础概念

1. 提示压缩解决的核心问题是什么?

答案: 核心问题是 prompt 太长导致 token 成本高、延迟高、上下文噪声大、关键信息被稀释。提示压缩在送入目标 LLM 前删除低价值内容,在预算内保留任务所需信息。

2. 提示压缩和摘要有什么区别?

答案: 摘要通常会改写文本,生成新的表达,可能引入幻觉或丢失细节。提示压缩更偏删除和保留原文 token/片段,目标是减少 token 同时尽量保持原证据。

3. 提示压缩和 RAG 是替代关系还是互补关系?

答案: 是互补关系。RAG 负责从大语料中找候选证据;提示压缩负责在候选证据过多或过长时进一步减少冗余 token。常见流程是 retrieve -> rerank -> compress -> answer。

4. 长上下文模型已经支持很多 token,为什么仍然需要提示压缩?

答案: 因为长窗口并不等于便宜、快速、无噪声。上下文越长,成本越高,注意力越容易被无关信息干扰,lost-in-the-middle 也可能让模型忽略中间证据。压缩能降低噪声和成本。

5. 什么是 compression ratio 和 keep rate?

答案: compression_ratio = original_tokens / compressed_tokens,表示压缩了多少倍。keep_rate = compressed_tokens / original_tokens,表示保留比例。例如 10000 token 压到 2500,压缩比是 4,保留率是 25%。

6. 哪些 prompt 部分通常不应该压缩?

答案: 通常不压缩 system prompt、安全规则、用户问题、输出格式要求、工具调用 schema、关键引用 ID 和必须完整遵守的约束。

二、Selective Context

7. Selective Context 的核心思想是什么?

答案: 它认为上下文中不同 token/句子信息量不同,可以根据语言模型估计的信息量删除低信息内容,保留高信息内容。

8. 什么是 token 的 self-information?

答案: Self-information 可写为:

self_information(token) = -log P(token | prefix)
越不可预测的 token,自信息越高。

9. 为什么低信息量 token 可以优先删除?

答案: 因为低信息量 token 往往是功能词、重复表达、套话或容易从上下文恢复的内容,删除它们对任务信息损失较小。

10. Selective Context 的优点是什么?

答案: 优点是简单、通用、无需目标大模型参与,能在不大幅改写文本的情况下减少上下文长度。

11. Selective Context 的局限是什么?

答案: 局限是不一定考虑当前问题;可能保留罕见但无关的 token,也可能删除常见但关键的否定词、条件词或格式符号。

12. 为什么高 self-information 不一定等于对当前问题有用?

答案: 因为 self-information 衡量的是“罕见/不可预测”,不是“对当前问题有用”。一个罕见实体可能与问题无关,而一个常见词“不”可能决定答案方向。

三、LLMLingua

13. LLMLingua 的核心目标是什么?

答案: 目标是用较小语言模型压缩 prompt,使目标大模型在更少输入 token 下保持任务效果,从而降低成本和延迟。

14. 为什么 LLMLingua 使用小模型作为 compressor?

答案: 小模型推理便宜,适合作为前置 compressor。用小模型做重要性估计和删除决策,可以节省目标大模型的大量输入成本。

15. LLMLingua 的高层流程包括哪些模块?

答案: 高层流程包括 budget controller、粗粒度压缩、token-level iterative compression、生成压缩 prompt,然后送入 target LLM。

16. budget controller 的作用是什么?

答案: Budget controller 决定每部分 prompt 应该压到多少 token 或保留多少比例,避免压缩过度或预算分配不合理。

17. token-level iterative compression 的直觉是什么?

答案: 它不是一次性删大量 token,而是根据重要性逐步删除低价值 token,尽量减少压缩对语义和任务指令的破坏。

18. 小模型 compressor 和 target LLM 不一致会带来什么风险?

答案: 小模型认为不重要的 token,目标大模型可能依赖;小模型的语言偏好、领域知识和 tokenization 也可能不同,导致关键约束被误删。

19. LLMLingua 适合哪些场景?

答案: 适合长 prompt、few-shot 示例、RAG 证据冗余、对话历史压缩、成本敏感的批量推理。

20. LLMLingua 不适合或需要谨慎使用哪些场景?

答案: 法律、医疗、金融合规、代码、数学证明、表格、数字密集文本、工具 schema 和安全约束都要谨慎,必要时设置不可压缩区域。

四、LongLLMLingua

21. LongLLMLingua 相比 LLMLingua 主要改进在哪里?

答案: LongLLMLingua 面向长上下文场景,更强调 question-aware compression,即根据当前问题保留真正有助于回答的证据,而不是只按通用信息量压缩。

22. 什么是 question-aware compression?

答案: Question-aware compression 是把用户问题作为条件,评估文档、句子和 token 对回答该问题的有用性。它关注相关性和证据价值。

23. 为什么 question-aware 对长文档问答特别重要?

答案: 长文档中有很多信息量高但与问题无关的内容。如果不看问题,压缩器可能保留噪声、删掉答案证据。Question-aware 能把预算集中到与问题相关的证据上。

24. LongLLMLingua 的 coarse-to-fine 流程是什么?

答案: 流程是:先粗粒度筛选文档或段落,再筛选句子,最后做 token 级压缩。必要时保留或调整关键证据位置,再组成最终 prompt。

25. 文档级、句子级、token 级压缩分别解决什么问题?

答案: 文档级降低候选数量;句子级保留可能含答案的最小语义单元;token 级删除冗余词并压到预算内。三层结合能兼顾效率和精度。

26. LongLLMLingua 如何缓解 lost-in-the-middle?

答案: 它通过优先保留和问题相关的证据、减少无关上下文、必要时突出或重排关键片段,降低关键证据被长文本淹没的概率。

27. 在 RAG 系统中,LongLLMLingua 应该放在 rerank 前还是 rerank 后?为什么?

答案: 通常放在 rerank 后。先 rerank 可以把最可能相关的证据排前,减少压缩器处理的噪声;再压缩能在较高质量候选中保留关键 token。若先压缩再 rerank,可能提前删掉排序需要的信息。

28. LongLLMLingua 压缩时为什么要保留 citation id、标题和页码?

答案: 因为最终答案需要可追溯证据。压缩掉 citation id、标题、页码后,模型可能无法正确引用来源,也难以让用户核验答案。

五、评估与工程风险

29. 提示压缩有哪些常见失败模式?

答案: 常见失败包括删除否定词、实体、数字、条件、引用 ID;破坏表格列关系;破坏代码语义;删除输出格式;过度压缩导致语法碎片化;保留无关高信息噪声。

30. 为什么否定词、数字、实体、条件词不能轻易删除?

答案: 这些词往往短但决定语义。比如“不允许”和“允许”只差一个字,日期和金额决定事实,实体决定答案对象,条件词决定适用范围。误删会导致高置信错误。

31. 压缩表格和代码有什么特殊风险?

答案: 表格依赖行列对齐,删除列名或单元格会错配。代码依赖缩进、括号、变量和顺序,删除少量 token 就可能改变程序语义或让代码不可读。

32. 如何设计提示压缩的离线评估实验?

答案: 固定测试集和目标 LLM,比较原始 prompt、Selective Context、LLMLingua、LongLLMLingua。记录压缩比、token 成本、延迟、答案正确率、引用正确率、忠实性和失败样例。

33. 除了答案正确率,还应评估哪些指标?

答案: 还应评估 compression ratio、keep rate、成本下降、P50/P95 延迟、faithfulness、citation accuracy、关键信息保留率、格式遵循率和人工偏好。

34. 如果压缩率提升但答案质量下降,你会如何调参?

答案: 降低压缩比,提高保留率;设置不可压缩区域;加强 question-aware;先 rerank 再压缩;保留句子级完整性;对数字、否定、实体、引用 ID 加规则保护;按任务类型分配预算。

35. 如何为不同 prompt 区域分配压缩预算?

答案: 可以分区预算:system、safety、question、format 0 压缩;工具 schema 0 或低压缩;RAG evidence 高压缩;few-shot 示例中压缩;对话寒暄高压缩;关键证据低压缩。

36. 请写一个 RAG + LongLLMLingua 的生产流程。

答案: 生产流程:

user query
  -> retrieve top-n
  -> rerank top-k
  -> protect instruction/question/citation metadata
  -> LongLLMLingua question-aware compression
  -> assemble final prompt
  -> target LLM answer
  -> verify citations and faithfulness

37. 请用一段面试表达完整解释 LongLLMLingua。

答案: 示例表达:

LongLLMLingua 是面向长上下文的提示压缩方法。LLMLingua 用小模型估计 prompt 中 token 的重要性并按预算压缩,LongLLMLingua 进一步引入 question-aware 思路,根据当前问题判断哪些文档、句子和 token 对回答最有价值。它通常采用 coarse-to-fine 流程,先粗筛文档或句子,再做 token 级压缩。它能减少 token 成本、降低噪声,并缓解 lost-in-the-middle。但压缩可能误删否定、数字、实体或引用信息,所以要用答案质量、忠实性和引用正确率一起评估。

38. 如果压缩后模型引用了错误证据,可能是什么原因?

答案: 可能原因:citation id 被删或错位;压缩破坏了证据与来源的对应关系;关键证据被删,只剩相似但不支持答案的片段;RAG 本身召回或 rerank 错误;模型在压缩后的碎片上下文中错误归因。

            预览时标签不可点




































<div class="