微信扫码
添加专属顾问
今天是2024年11月4日,星期一,北京,天气晴
昨天有说到RAG中的长文本压缩,那么,进一步可以看看方案总结,关于prompt压缩的技术总结,在技术路线上可以分为硬提示和软提示两种路线。
事实上,核心问题是,我们应该如何去设计一个prompt 压缩算法,从而能够最大化的压缩prompt,同时又不影响LLMs的性能。这种被压缩的prompt能直接用在下游任务中吗?它的泛化性怎么样?
这些问题,都可以看看技术的技术方案,今天说的方法是个很好的索引,可以收藏后续看。
可以看看方案总结,《Prompt Compression for Large Language Models: A Survey》,https://arxiv.org/abs/2410.12388V2,可以看看几个看点。
1、提示压缩方法的说明性示例
图1:提示压缩方法的说明性示例。
硬提示方法移除低信息量的语言标记或进行释义以实现简洁。软提示方法将文本压缩成更少的特殊标记,
在硬提示中,每个标记不能关注之前删除的标记(Di)。在软提示中,经过压缩的标记(Ci)关注了所有先前的输入标记(Ii)之后,随后的输出标记(Oi)不能关注压缩标记之前的标记。
可以应用于多个场景,包括通用问答(General QA)、检索增强生成(Retrieval-Augmented Generation, RAG)、上下文学习(In-Context Learning, ICL)、基于代理的系统(Agent-based Systems)
硬提示方法包括过滤(Filtering)方法和释义(Paraphrasing)方法两种,这类方法通过删除、重写等方式直接对自然语言提示词进行压缩。
1)过滤(Filtering)方法
一个很简单的压缩思路就是删除那些不能为LLMs带来“信息”的文本,达到压缩Prompt的目的,这就是过滤的方案的核心,包括SelectiveContext、LLMLingua、LongLLMLingua、AdaComp等,也包括一些增强方案,如图;
首先是以信息熵为核心的方法都将语言模型的logits输出当做语言的信息熵。
SelectiveContext使用自信息量来量化词语重要性,删除冗余内容,LLMLingua使用小型语言模型(如GPT-2)计算困惑度,去除低信息量token,LLMLingua-2通过数据蒸馏训练分类器来保留关键token。
例如,SelectiveContext(Compressing Context to Enhance Inference Efficiency of Large Language Model,https://arxiv.org/abs/2310.06201)通过量化词汇单元的信息化量来识别并删除输入提示中的冗余或信息量较少的部分。使用Spacy的句法解析能力,将单个标记组合成名词短语,以保持文本连贯性。SelectiveContext不依赖外部模型或额外参数,可以应用于任何模型架构。
LLMLingua(LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models, https://arxiv.org/abs/2310.05736)使用一个较小的语言模型(如GPT-2)来计算内容的自我信息或困惑度,并在将自然语言提示输入到大模型之前移除冗余标记。LLMLingua在提示结构上操作,最初基于困惑度分数选择关键示例,然后应用token级过滤。
LongLLMLingua(LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression(https://arxiv.org/abs/2310.06839)利用Prompt压缩增强LLMs在Long Context Scenarios下感知prompt中关键信息的能力,能够有效缓解Lost in the Middle,计算Document与Query之间的条件熵,以此来判断Document相对于Query的“重要性”。此时有两种选择,计算给定Document下的Query的熵,计算给定Query下的Document的熵。很显然考虑到Document自身拥有的信息熵可能差距非常悬殊,而且难以归一化,所以直接计算给定Document下的Query的熵更加合理。因此,提出了它的两个核心点:粗粒度压缩(Question-Aware Coarse-Grained Compression)和细粒度压缩(Question-Aware Fine-Grained Compression)。
另一种是,在模型加上一层Linear来进行token级别的分类来做压缩。也就是使用分类器模型来做,专门训一个模型:
也就是LLMLinga-2(LLMLingua-2: Data Distillation for Efficient and Faithful Task-Agnostic Prompt Compression,https://aclanthology.org/2024.findings-acl.57.pdf)训练一个token级别分类模型来做token“重要性”的识别,以此达到压缩的目的,有趣的是,压缩的实际目标与基于小模型logits的信息熵并不一致;使用双向语言模型可以做到的压缩性能上限要高出单向语言模型,并在实现上使用BERT+Classification范式,形成一个BERT的token级别分类模型,将每个token输出的logits作为起“保留”的概率,设定一个压缩比例阈值来进行压缩。
2)释义(Paraphrasing)方法,也叫改写式压缩
与其删词,不如换个写法,因此,可以释义(Paraphrasing)的方案,包括Nano-Capsulator、CompAct、FAVICOMP等;
Nano-Capsulator使用fine-tuned Vicuna-7B将原始提示词重写为更简洁的版本, CompAct专注于问答场景下的文档压缩重写
例如,Nano-Capsulator(Learning to Compress Prompt in Natural Language Formats, https://arxiv.org/abs/2402.18700): 将原始提示总结成简洁的自然语言版本,然后输入到LLM中。这个过程移除了不相关的信息,并将提示重构为流畅的句子。
压缩模型是独立于LLM操作的,并且包括语义保留损失以保留对下游任务重要的关键含义,以及一个奖励函数来优化提示对LLM的实用性。
硬提示方法通过直接操作自然语言标记来实现提示的压缩,通常保持使用自然语言单词或子单词,但结果提示可能在流畅性和语法正确性上有所欠缺。
这些方法的优势在于可以泛化到具有不同嵌入配置的LLMs,并且不需要额外的内存成本。
但也存在着诸多问题,例如,过滤后的硬提示可能会破坏语法正确性,并为LLM提供不熟悉的输入分布,可能影响其性能。此外,创建有效和精确的硬提示需要相当的人力,并且可能涉及训练模型来优化这些提示。
软提示方法可能会被分为仅解码器(Decoder-Only)、编码器-解码器(Encoder-Decoder)等子类别。
1)仅解码器架构
仅解码器架构主要包括有,CC训练短软提示词来近似原始提示词的输出分布;GIST修改注意力机制,用特殊token替代原始提示词;AutoCompressor递归压缩,可处理长度达30,720的提示词。具体地:
Contrastive Conditioning (CC) (Prompt Compression and Contrastive Conditioning for Controllability and Toxicity Reduction in Language Models, https://arxiv.org/abs/2210.03162)通过训练一个较短的软提示来近似自然语言提示的输出分布,通过最小化token序列之间的Kullback-Leibler (KL) 散度。这种方法需要对自然语言提示和软提示进行重复序列采样,以估计输出分布。CC方法可以针对特定的自然语言提示进行训练,但泛化能力有限,因为新的提示需要从头开始重新训练。
Gist Tokens (GIST) (Learning to Compress Prompts with Gist Tokens, https://arxiv.org/pdf/2304.08467)通过在原始提示token后追加一系列新的可训练token来修改LLM的注意力机制。这些压缩token可以关注原始提示,而新生成的token只能关注压缩token,从而在注意力流中实现分离。GIST方法能够泛化到未见过的提示,而不需要额外的微调。
AutoCompressor (Adapting Language Models to Compress Contexts, https://arxiv.org/pdf/2305.14788)可以处理长上下文提示的压缩,其过程是递归的,将原始提示分成多个子提示,每个子提示被压缩成一小组token,然后与新的子提示一起传递给下一次迭代以进行进一步压缩。
2)编码器-解码器架构
采用编码器-解码器架构方案的,主要有ICAE专注于压缩信息密集的上下文,保持问题部分不变;500xCompressor通过KV值存储实现高压缩比;xRAG使用冻结的嵌入模型作为编码器;UniICL专注于压缩few-shot示例。
具体地:
In-Context AutoEncoder (ICAE) (In-context Autoencoder for Context Compression in a Large Language Model, https://arxiv.org/pdf/2307.06945)通过使用冻结的LLM作为解码器来增加压缩长度。将长而信息丰富的上下文压缩成少量token,然后用于问答。ICAE可以处理详细的、复杂的上下文,而问题本身保持未压缩,答案是基于压缩的上下文和未压缩的问题生成的。
500xCompressor (500xCompressor: Generalized Prompt Compression for Large Language Models,https://arxiv.org/abs/2408.03094)在保持压缩长度限制的同时实现高压缩比的提示压缩。与ICAE类似,500xCompressor在编码器中使用可训练的LoRA参数,同时保持原始LLM在解码器中冻结。不同之处在于,500xCompressor向解码器提供压缩token的K V值,而不是token本身,这些K V值保留了比嵌入向量更详细的信息。
xRAG(xRAG: Extreme Context Compression for Retrieval-augmented Generation with One Token) 使用冻结的嵌入模型作为编码器,只有编码器和解码器LLM之间的适配器包含可训练参数。xRAG证明了当前的嵌入模型可以将信息压缩到单个token中,用于问答任务。
UniICL(Unifying Demonstration Selection and Compression for In-Context Learning, https://arxiv.org/abs/2405.17062)专注于压缩输入提示的示例组件,留下查询不变。UniICL中唯一可训练的组件是放置在编码器和解码器之间的投影器。UniICL的编码器和解码器都是冻结的,减少了训练过程中的梯度计算,并节省了加载LLM所需的内存。
本文主要介绍了看看方案总结,关于prompt压缩的技术总结,在技术路线上可以分为硬提示和软提示两种路线,对于进一步的细节,可以看看列出来的论文,大家可以多看看,多思考
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-05
AI 知识库为什么总答不准?不是模型笨,是资料没整理好
2026-07-05
AI知识库RAG演进:上一代解决「找得到」,下一代解决「记得住、连得起、信得过」
2026-07-04
大模型支持的上下文已超 1M, RAG 是不是没有意义了?
2026-07-03
RAG 检索优化策略:从命中率到答案质量的一套工程打法
2026-07-03
RAG 落地总翻车?全球赛事冠军架构,改造适配企业级生产
2026-07-01
提升 RAG 准确率全攻略 让你的 AI 知识库 真正靠谱起来!
2026-06-30
教程:如何用AutoRAG + Milvus避免RAG 与Agent 中出现串租问题
2026-06-30
知识库不是文件堆——我把RAG准确率从60%调到了92%
2026-04-27
2026-04-23
2026-04-20
2026-04-09
2026-04-12
2026-04-22
2026-04-10
2026-05-14
2026-04-30
2026-04-27
2026-07-04
2026-06-23
2026-06-23
2026-06-15
2026-06-10
2026-06-10
2026-05-20
2026-05-18
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。