三十七:更多提示压缩方法自测题答案¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484481&idx=1&sn=7d43b2abac469c9cd5d9b0e6b6de1bc8&chksm=f01eb738c7693e2eda40e77015d57bb5a889a6001adaac98f31d22aa63b341e19f29cf6bfe5e#rd
参考资料¶
-
提示词压缩技术综述: https://blog.csdn.net/Baihai_IDP/article/details/140060389
-
AutoCompressor paper: https://arxiv.org/pdf/2305.14788
-
LLMLingua-2 paper: https://arxiv.org/pdf/2403.12968
-
RECOMP paper: https://arxiv.org/pdf/2310.04408
-
LLMLingua project: https://github.com/microsoft/LLMLingua
-
LongLLMLingua paper: https://arxiv.org/abs/2310.06839
A. 提示压缩基础¶
1. 什么是提示压缩?它要解决什么问题?¶
提示压缩是在保留任务关键信息的前提下,把长 prompt 或长上下文变短。它解决长上下文带来的 token 成本高、延迟高、上下文窗口受限、无关内容干扰等问题。 面试中要强调:压缩的目标不是单纯变短,而是让压缩后的上下文仍能支持下游任务。
2. 提示压缩和普通摘要有什么区别?¶
普通摘要通常追求人类可读、概括主要内容;提示压缩追求下游 LLM 能完成任务,可能保留看似碎片但对答案关键的 token、实体、数字、引用和格式。 提示压缩的评价标准是端到端任务效果,而不是摘要流畅度。
3. 提示压缩和 RAG 中的 contextual compression 有什么关系?¶
contextual compression 是提示压缩在 RAG 检索结果上的一种应用。它压缩检索到的上下文,只保留与 query 相关的信息。 提示压缩更广,包括会话历史、工具输出、长文档和软提示压缩。
4. 提示压缩的输入、输出和优化目标分别是什么?¶
输入通常是 instruction、context、query。输出可以是短文本、抽取片段、摘要或 soft vectors。优化目标是在 token 预算内最大化下游答案正确性、忠实性和格式稳定性,同时降低成本和延迟。 高风险任务还要优化引用准确率和关键信息保留率。
5. 提示压缩为什么能降低长上下文推理成本?¶
LLM 推理成本通常随输入 token 增加而增加。压缩减少输入 token,能降低计算量、费用和延迟,也能避免超出上下文窗口。 但如果压缩器本身很贵,需要计算总成本是否真的下降。
6. 提示压缩可能带来哪些风险?¶
可能删除关键证据、数字、否定词、条件、例外、引用 ID;生成式压缩可能引入幻觉;soft prompt 压缩难以解释;高压缩比可能破坏语义。 因此要做端到端评估和关键信息校验。
7. 什么是 query-aware compression?¶
query-aware compression 根据用户问题决定保留哪些内容。例如问退款条件时,优先保留退款条款、限制和例外。 它通常效果更好,但需要在线根据 query 运行,成本更高。
8. 什么是 query-agnostic compression?¶
query-agnostic compression 不依赖具体问题,提前把文本压缩成通用短表示或摘要。 它适合离线缓存、会话历史压缩和通用文档摘要,但对具体问答可能不如 query-aware 精准。
9. query-aware 和 query-agnostic 压缩分别适合什么场景?¶
query-aware 适合 RAG 问答、工具结果压缩和任务相关上下文选择。query-agnostic 适合离线文档压缩、长会话记忆、摘要缓存和不知道未来 query 的场景。 两者可以组合:先离线通用压缩,再在线 query-aware 筛选。
10. 压缩比越高越好吗?为什么?¶
不是。压缩比越高,信息损失风险越大。压缩后的上下文如果丢失关键证据,即使成本降低,答案质量也会下降。 合理目标是满足 token 预算下最大化任务效果。
B. 方法谱系与选型¶
11. 提示压缩方法可以按输出形式分成哪几类?¶
可以分为抽取式压缩、生成式压缩、软提示压缩和混合式压缩。 抽取式保留原文片段,生成式生成摘要,软提示输出连续向量,混合式结合多种方法。
12. 抽取式压缩和生成式压缩有什么区别?¶
抽取式从原文中选择 token、句子或 span,不改写内容。生成式会重新组织语言,生成更短摘要或压缩文本。 抽取式忠实性更强,生成式压缩率和流畅性更高但幻觉风险更大。
13. 软提示压缩和文本压缩有什么区别?¶
软提示压缩输出连续向量,例如 summary vectors,不一定可读。文本压缩输出自然语言或原文 token,可直接放入 prompt。 软提示通常需要模型适配,文本压缩更兼容通用 LLM API。
14. 为什么软提示压缩通常可解释性较弱?¶
因为连续向量没有直接的人类可读语义。很难检查它到底保留了哪些事实、数字、引用或条件。 出错时也难判断是压缩丢失还是模型读取失败。
15. 为什么文本压缩更容易接入黑盒 LLM API?¶
黑盒 LLM API 通常只接受文本输入,不允许传入自定义 continuous vectors。文本压缩输出仍是 token 或短文本,可以直接作为 prompt。 这使 LLMLingua-2、抽取式 RECOMP 等更容易落地。
16. 在需要引用原文的 RAG 系统中,为什么抽取式压缩通常更稳?¶
抽取式保留原文和 doc_id,更容易保证答案有证据支持,也便于 citation verification。生成式压缩可能改写或合并证据,导致引用不清或引入新事实。 法律、金融、医疗等场景通常偏向抽取式。
17. 在长会话记忆中,为什么递归压缩有价值?¶
会话持续增长时,不能无限保留所有历史。递归压缩可以把旧历史压缩成记忆,再与新上下文继续交互。 AutoCompressor 的 summary vectors 就体现了这种逐段压缩思想。
18. 为什么压缩器自身的开销也必须纳入评估?¶
如果压缩器运行成本和延迟高于压缩后节省的 LLM 成本,系统整体不划算。生产中要计算端到端延迟和费用,而不是只看输入 token 减少。 尤其 LLM-based compressor 可能很贵。
19. 如何理解“压缩不是越短越好,而是保留任务相关信息”?¶
压缩的核心是信息选择。一个很短但丢失关键条件的压缩结果会导致答案错误;一个略长但保留证据的结果更好。 评价标准应是任务准确率、忠实性和成本的综合。
20. 高风险任务中提示压缩应额外注意哪些信息?¶
要强制保留数字、日期、单位、否定、条件、例外、条款编号、doc_id、来源和权限信息。 这些信息一旦丢失,答案可能产生严重误导。
C. AutoCompressor¶
21. AutoCompressor 的核心思想是什么?¶
AutoCompressor 把长上下文压缩成一组 summary vectors,让模型通过这些连续向量读取前文信息,而不是显式保留所有 token。 它是软提示/压缩记忆方向的方法。
22. 什么是 summary vectors?¶
summary vectors 是模型生成或维护的连续向量,用来表示前文压缩信息。它们类似软提示或隐式记忆,不一定对应自然语言文本。 后续模型可以把这些向量作为上下文的一部分使用。
23. summary vectors 和自然语言摘要有什么区别?¶
自然语言摘要可读、可检查、可直接传给任意 LLM。summary vectors 不可读,可能携带更适合模型内部使用的信息,但需要模型能理解这些向量。 二者在可解释性和兼容性上差异很大。
24. AutoCompressor 如何支持递归或分段压缩长上下文?¶
它可以先处理一段文本生成 summary vectors,再把这些 summary vectors 传入下一段处理,逐步累积压缩记忆。 这样长文档或长会话可以分段压缩,而不是一次性输入全部内容。
25. AutoCompressor 为什么更偏模型训练/架构侧方法?¶
因为 summary vectors 需要模型在训练中学习如何生成和读取。普通黑盒 LLM API 不能直接接收这类连续向量。 因此它不是简单 prompt 模板,而是模型能力或架构设计问题。
26. AutoCompressor 的主要优点有哪些?¶
优点包括压缩率潜力高、适合长会话/长文档递归压缩、避免自然语言摘要的信息瓶颈、显著减少显式 token。 如果模型适配良好,它可以作为高效长期记忆。
27. AutoCompressor 的主要限制有哪些?¶
限制包括需要训练或模型适配、可解释性差、与黑盒 API 兼容性弱、引用困难、出错难调试。 在强证据和合规场景中要谨慎。
28. 为什么 AutoCompressor 不适合强引用场景?¶
summary vectors 不直接包含可读原文和 doc_id。模型即使回答正确,也很难提供可验证引用。 RAG 中需要证据追溯时,抽取式文本压缩更合适。
29. 如果 AutoCompressor 输出错误,为什么调试较困难?¶
因为压缩内容是连续向量,无法像文本那样检查“哪些句子被保留、哪些事实被删除”。错误可能来自压缩、读取、生成或训练分布偏移。 可观测性弱是软提示压缩的核心问题。
30. AutoCompressor 更适合哪些场景?¶
适合自研模型、可训练模型、长会话记忆、超长文本内部压缩、对引用要求低但对压缩率要求高的场景。 不适合作为黑盒 API RAG 的第一选择。
D. LLMLingua-2¶
31. LLMLingua-2 的核心思想是什么?¶
LLMLingua-2 把提示压缩建模为 token 级保留/删除任务,通过数据蒸馏训练压缩器,预测每个 token 的重要性,保留关键信息并删除冗余 token。 输出仍是文本,因此易接入下游 LLM。
32. LLMLingua-2 如何把提示压缩建模为 token classification?¶
对输入 token 序列中的每个 token 预测标签:
保留高重要性 token,删除低重要性 token,从而得到压缩后的 prompt。33. LLMLingua-2 中数据蒸馏的作用是什么?¶
数据蒸馏用强模型或自动构造流程生成压缩监督信号,让较小压缩模型学习哪些 token 应保留。 这样压缩器可以更高效地在线运行。
34. LLMLingua-2 相比依赖下游 LLM 困惑度的方法有什么潜在优势?¶
它可以训练一个专门压缩器,推理更快,更不依赖下游 LLM 的在线打分;也更容易泛化到不同任务和模型接口。 这有利于生产部署。
35. LLMLingua-2 输出为什么更容易被任意 LLM 使用?¶
因为输出仍是普通文本 token,不需要传入连续向量或修改模型结构。任何接受文本 prompt 的 LLM 都可以使用。 这比 AutoCompressor 类 soft vector 方法更兼容。
36. token 删除式压缩为什么可能破坏语法或语义?¶
删除 token 可能破坏句子结构,尤其是删除连接词、否定词、条件词或实体修饰语时。压缩文本可能变得不流畅,甚至改变原意。 因此要特别保护关键结构词和事实词。
37. LLMLingua-2 在高压缩比下容易丢失哪些信息?¶
容易丢失数字、日期、单位、否定、条件、例外、引用 ID、长距离依赖和上下文前提。 这些通常是问答和合规任务中最关键的信息。
38. LLMLingua-2 适合哪些生产场景?¶
适合黑盒 LLM API、通用长 prompt 压缩、在线压缩、成本敏感但仍需要文本可解释性的应用。 也适合 RAG 上下文较长但引用要求不是极端严格的场景。
39. LLMLingua-2 不适合哪些场景?¶
不适合极高风险、必须逐字引用、不能丢任何条件和数字的场景,尤其在高压缩比下。也不适合压缩后文本必须保持完美自然语言的场景。 这些场景更适合抽取式保守压缩。
40. 如何评估 LLMLingua-2 是否保留了关键信息?¶
可以构造标注关键信息的问题集,检查压缩后是否保留支持答案的实体、数字、条件和引用。再比较压缩前后下游答案正确性、faithfulness 和 citation accuracy。 只看压缩率不够。
E. RECOMP¶
41. RECOMP 主要面向什么问题?¶
RECOMP 面向 retrieval-augmented language modeling 中的检索上下文压缩问题。它压缩检索到的文档,使生成模型获得更短、更相关的上下文。 它更贴近 RAG 检索后处理。
42. RECOMP 在 RAG 链路中处于什么位置?¶
通常位于 retriever 之后、generator 之前:
它减少进入 LLM 的上下文长度。43. RECOMP 的 extractive compressor 是什么?¶
extractive compressor 从检索文档中抽取与 query 相关的句子、span 或片段,保留原文,不生成新事实。 它强调忠实性和可引用性。
44. RECOMP 的 abstractive compressor 是什么?¶
abstractive compressor 对检索内容生成压缩摘要,可能整合多个文档的信息,用更短文本表达。 它压缩率和流畅性较好,但有幻觉风险。
45. 抽取式 compressor 的优点和缺点是什么?¶
优点是忠实性强、便于引用、幻觉风险低。缺点是压缩率有限,片段之间可能不连贯,难以整合多文档信息。 适合事实问答和高风险场景。
46. 生成式 compressor 的优点和缺点是什么?¶
优点是压缩率高、表达流畅、能整合多来源信息。缺点是可能引入未被原文支持的内容,丢失细节和引用。 需要 faithfulness 检查。
47. 为什么 RECOMP 适合检索增强生成中的上下文压缩?¶
RAG 检索结果常包含冗余和噪声。RECOMP 可以针对 query 压缩检索文档,提高上下文密度,降低 token 成本。 它直接服务于“检索后、生成前”这一瓶颈。
48. RECOMP 与普通 rerank 有什么区别?¶
rerank 对候选文档排序,决定哪些文档靠前;RECOMP 压缩文档内容,决定每个文档中哪些信息进入上下文。 二者可以组合:先 rerank,再 compress。
49. RECOMP 与 LongLLMLingua 有什么区别?¶
LongLLMLingua 主要面向长上下文 prompt 的 query-aware 压缩和信息选择;RECOMP 更明确面向检索增强语言建模中的 retrieved documents compression,并区分抽取式和生成式 compressor。 二者都可用于 RAG,但方法侧重点不同。
50. 在事实问答中,RECOMP 应如何保留引用和证据?¶
应优先抽取式压缩,保留 doc_id、句子、段落编号和原文证据。若使用生成式压缩,应同时保留原文引用或做 citation verification。 不要只给无来源摘要。
F. 评估、风险与生产化¶
51. 提示压缩评估应包含哪些指标?¶
包括压缩率、下游答案正确性、faithfulness、citation accuracy、关键信息保留率、token 成本、延迟、压缩器开销和拒答准确率。 高风险场景还要看数字/条件保留率。
52. 什么是关键信息保留率?¶
关键信息保留率衡量压缩后是否保留回答问题所需的证据,例如实体、数字、日期、条款、否定、条件和引用。 它比普通 ROUGE 更贴近问答任务。
53. 为什么只看压缩率无法判断方法好坏?¶
压缩率只说明变短了多少,不说明是否保留了正确答案所需信息。一个 90% 压缩但删除关键证据的结果是失败的。 必须看端到端任务效果。
54. 如何设计提示压缩的 A/B 实验?¶
固定模型、数据和评估集,对比原始上下文、截断 baseline、摘要 baseline 和不同压缩方法。记录 token、延迟、成本、答案正确性、faithfulness 和引用准确率。 还要做错误分析,找出被删除的关键信息。
55. 压缩后答案错误时,如何判断是压缩失败还是模型生成失败?¶
检查压缩后上下文是否仍包含支持答案的证据。如果证据已被删除,是压缩失败;如果证据存在但模型没用好,是生成或 prompt 问题。 这和 RAG 的检索/生成分层诊断类似。
56. 如果压缩器删除了否定词,会造成什么后果?¶
会直接反转语义。例如“不得退款”变成“退款”,或“不适用海外用户”变成“适用海外用户”。 否定词必须作为高风险 token 保护。
57. 如果压缩器删除了 doc_id 或 citation,会造成什么问题?¶
答案无法追溯,citation verification 无法进行,模型可能给出无证据结论。RAG 系统的可解释性和审计能力下降。 需要强制保留引用锚点。
58. 生成式压缩为什么可能引入幻觉?¶
生成式压缩会重写和概括原文,模型可能补充不存在的信息、错误合并多个文档、改写数字或遗漏限制。 这类风险在高压缩比和多文档摘要中更明显。
59. 如何降低生成式压缩的幻觉风险?¶
要求只基于原文、保留引用、输出可验证 claims、用 verifier 检查摘要是否被原文支持,必要时保留原文片段作为证据。 高风险场景可以限制为抽取式压缩。
60. 如何为法律/金融场景选择提示压缩策略?¶
优先抽取式压缩,保留原文、条款编号、数字、日期、条件、例外和引用。避免无证据摘要;如果必须摘要,要附原文证据和人工/规则校验。 压缩率应服从忠实性和合规性。
G. 综合比较与设计¶
61. 请比较 AutoCompressor、LLMLingua-2、RECOMP 的输出形式。¶
AutoCompressor 输出 summary vectors,是软提示。LLMLingua-2 输出压缩后的文本 token。RECOMP 可以输出抽取片段或生成式摘要。 输出形式决定了可解释性和 API 兼容性。
62. 请比较 AutoCompressor、LLMLingua-2、RECOMP 的可解释性。¶
抽取式 RECOMP 可解释性最强,因为保留原文;LLMLingua-2 也可检查保留 token;生成式 RECOMP 需要验证摘要;AutoCompressor 最弱,因为 summary vectors 不可读。 可解释性越强,越适合高风险 RAG。
63. 请比较 AutoCompressor、LLMLingua-2、RECOMP 的 API 兼容性。¶
LLMLingua-2 和 RECOMP 输出文本,能接入黑盒 LLM API。AutoCompressor 依赖连续向量,需要模型架构支持,不适合普通 API。 生产应用通常优先文本压缩。
64. 请比较 AutoCompressor、LLMLingua-2、RECOMP 的压缩潜力和风险。¶
AutoCompressor 压缩潜力高,但可解释性和兼容性风险高。LLMLingua-2 压缩效率好、兼容性强,但 token 删除可能丢细节。RECOMP 抽取式忠实但压缩率有限,生成式压缩率高但有幻觉风险。 选型取决于任务风险和系统约束。
65. 如果使用黑盒商业 LLM,应该优先考虑哪类压缩方法?为什么?¶
优先考虑文本压缩方法,如 LLMLingua-2、抽取式/生成式 RECOMP、contextual compression。因为黑盒 API 只能接收文本,不能接收 summary vectors。 还要考虑输出格式和引用保留。
66. 如果自研模型并关注超长会话记忆,可以考虑哪类方法?为什么?¶
可以考虑 AutoCompressor 类 soft prompt / summary vectors 方法,因为可以训练模型生成和读取压缩记忆,适合递归压缩长历史。 但要解决可解释性和评估问题。
67. 如果 RAG 需要严格引用原文,应如何设计压缩链路?¶
先 rerank 选择候选,再用抽取式压缩保留原文句子、doc_id、段落 ID 和引用。生成答案时要求每个关键结论引用来源,最后做 citation verification。 避免只给生成式摘要。
68. 如何把提示压缩和 rerank、hybrid retrieval 结合?¶
流程可以是:dense+BM25 hybrid 召回,合并去重,rerank 精排,选择 top-k,再对长 chunk 做 query-aware compression,最后生成答案。 retrieval/rerank 解决选哪些文档,compression 解决文档内保留哪些内容。
69. 请设计一个生产 RAG 系统中的提示压缩模块。¶
输入 query、候选 chunk、doc_id、metadata 和 token budget。先保护不可删字段,如 doc_id、数字、日期、否定、条款编号;再使用抽取式或 token 级压缩;输出压缩文本和保留证据映射。模块记录压缩率、耗时、被删除内容摘要、版本和失败回退。 若压缩后证据不足,应回退到低压缩率或原文。
70. 请系统总结提示压缩方法的核心原理、方法对比、适用场景和面试表达要点。¶
提示压缩通过删除、抽取、摘要或 soft vectors,把长上下文变短,同时尽量保留任务关键信息。AutoCompressor 用 summary vectors,压缩率高但需要模型适配且不可解释;LLMLingua-2 用 token 级保留/删除,兼容黑盒 LLM,适合通用在线压缩;RECOMP 面向 RAG 检索上下文,有抽取式和生成式两类,分别在忠实性和压缩率之间权衡。 面试表达要点是:压缩的评价标准不是短,而是压缩后答案是否正确、忠实、可引用且总体成本更低。高风险场景优先抽取式和引用保留,低风险或自研模型场景可以探索更激进的压缩。
预览时标签不可点
<div class="