跟大语言模型(LLM)打交道,就像跟一个记性很好但容量有限的“专家”聊天。 这个“专家”的记忆力就是它的“上下文窗口”(Context Window)。 你跟它说的每一句话,它都会记在当前这个窗口里。但窗口大小是固定的,满了之后,最早的信息就会被挤掉。 这就带来一个问题:如果你想让它处理一篇很长的文档,或者进行一次持续很久的复杂对话,上下文窗口很快就不够用了。 这时候,提示词压缩技术(Prompt Compression)就派上用场了。

简单说,提示词压缩就是在不丢失核心意思的前提下,把又长又啰嗦的输入(Prompt)变短。 它的目标很直接:用更少的文字(也就是Token)表达同样的信息,这样就能在有限的上下文窗口里塞进更多内容。 这不仅能帮你绕开上下文窗口的限制,还能实实在在地省钱和省时间。因为大多数LLM服务的收费都和Token数量挂钩,输入的Token越少,费用越低,模型的响应速度也越快。
那么,具体要怎么做呢?提示词压缩的方法五花八门,但核心思路可以分成几类。
一、筛选和过滤掉不重要的信息
这是最直接也最常用的一类方法,有点像在给文章划重点,把无关紧要的词句删掉。 这类方法也被称为“硬提示压缩”(Hard Prompt Methods),因为它们直接对原始文本进行删减,保留了自然语言的结构。
具体的操作方法有几种:
提取关键词或短语:只保留那些最关键的词语,去掉所有修饰性或补充性的文字。 比如,你原来可能会写:“能否请您为我提供一份关于X公司最新季度财务报告的全面摘要,重点突出其中的积极和消极方面?” 压缩后就变成了:“总结X公司季度报告:优点和缺点?” 意思没变,但长度缩短了很多。
基于信息熵的方法:这个听起来有点技术化,但原理很简单。它用一个小的语言模型(比如GPT-2)来判断你输入内容里哪些词是“意料之外”的,哪些是“理所当然”的。 那些信息量大、不容易被预测的词(也就是自信息量高或困惑度高的词)会被保留下来,而那些常见的、没什么信息量的词就会被删掉。 LLMLingua就是这类技术的代表,它能把提示词压缩很多倍,同时尽量保留核心信息。
句子或段落级别的压缩:如果处理的是长文档,可以把文档分成句子或段落,然后评估每个部分与核心问题的相关性。 只保留那些最相关的部分,把剩下的扔掉。比如,一个叫Selective Context的技术就是这么做的,它通过计算自信息来评估内容的质量,只保留高质量的部分。 这种方法在处理检索增强生成(RAG)系统中的大量文档时特别有用。
二、用更浓缩的方式来表达
除了直接删减,我们还可以把信息“浓缩”一下。这类方法通常更复杂,有时被称为“软提示压缩”(Soft Prompt Methods),它们不再保留原始的自然语言形式,而是把信息转换成模型更容易理解的紧凑格式。
主要包括以下几种技术:
知识蒸馏(Knowledge Distillation):这个方法有点像让一个博学的老师(大模型)教一个学生(小模型)如何抓住重点。 在提示词压缩的场景里,我们训练一个小模型,让它学会怎么把一个长长的、详细的“硬提示”压缩成一个更短、更精炼的版本。
编码和向量化:这种方法把输入的文本转换成一串数字,也就是向量(vectors)。 这些向量能够捕捉文本的核心语义,但长度比原文短得多。模型可以直接处理这些向量,从而省去了处理大量文字的过程。
使用特殊符号(Special Tokens):这是一种更极致的方法。我们可以把一个很长的指令或者一段上下文,直接用一两个特殊的符号来代替。 然后通过训练,让模型明白这些特殊符号代表的就是那些复杂的信息。比如,AutoCompressors和GIST就是利用这种思路,它们把长提示压缩成几个模型可以理解的特殊“摘要符号”。
它到底有什么用?
提示词压缩技术带来的好处是实实在在的。
首先,降低成本和延迟。 对于需要频繁调用LLM API的应用来说,每次调用输入的Token数量直接影响费用。压缩提示词能显著减少Token使用量,从而降低开销。 同时,模型处理的输入短了,响应速度自然也就快了。 这对于需要实时交互的应用,比如智能客服,至关重要。
其次,绕过上下文窗口的限制。当需要处理的文档非常长,或者对话历史很复杂时,上下文窗口很容易就不够用了。 通过压缩,我们可以在有限的空间里塞入更多的有效信息,让模型能够“看到”更全面的背景,从而做出更准确的回应。 这对于需要深度理解上下文的任务,比如文档摘要、多轮对话和复杂的问答系统,帮助很大。
最后,提升模型的专注度。有时候,过于冗长的提示词反而会干扰模型,让它抓不住重点。 精简后的提示词去掉了噪音,只留下核心信息,能帮助模型更专注于手头的任务,生成的答案也可能更相关、质量更高。
当然,提示词压缩也不是万能的。过度压缩可能会导致关键信息的丢失,反而影响模型的表现。 比如,在法律文件或技术文档的摘要任务中,一个微小的细节可能至关重要,错误地压缩掉就会出问题。因此,需要在压缩率和信息保真度之间找到一个平衡点。选择哪种压缩方法,取决于具体的应用场景和对信息精确度的要求。








评论前必须登录!
注册