出差旅行时,你是不是也遇到过这种窘境:衣柜里的衣服件件都想带,可行李箱就那么大。硬塞进去?拉链都拉不上。这时候,一位经验丰富的“打包专家”登场了——他先清点衣物,把两件差不多的白衬衫合并成一件;再淘汰那些“可带可不带”的零碎;最后把每件衣服卷得紧紧的,让箱子腾出一大半空间。等你到了目的地打开箱子,惊喜地发现真正要用的东西一件都没落下。 LLMLingua 干的就是这件“打包”的活儿,只不过对象从衣服换成了 Prompt。它是一位 Prompt 打包专家:在把提示词交给大模型之前,先派一位轻量的“行李顾问”(小模型)逐字逐句检查,判断哪些词是必须保留的关键信息、哪些是可以说服自己丢掉的冗余词,然后果断抽走。结果,一份 1000 个 token 的 Prompt 被压缩到 100 个,大模型读起来照样心领神会。本文就来拆解这套“打包术”的原理、用法与取舍。
学完本章,你将掌握用 LLMLingua 为超长 Prompt 瘦身的完整方法,在保住任务效果的前提下,把 API 调用成本打到原来的一成甚至更低——这是每个做 AI 应用开发的工程师都该会的省钱手艺。
可视化演示
展示小模型驱动的token压缩过滤过程、压缩率与效果权衡曲线及多LLM兼容性测试评分对比,揭示Prompt压缩核心技术原理。
本节配有交互动效(进入视口后自动加载,约 3KB)。
压缩原理:小模型过滤低信息token 小模型评估:计算每token信息量 保留高信息:删除冗余token 压缩 = 保留高信息token 2x压缩率下语义基本无损
压缩原理
还记得那位打包专家的三步操作吗?他先清点所有衣物,把重复的款式合并;再淘汰“可带可不带”的物件;最后把留下的衣服一件件卷紧。LLMLingua 的压缩流程几乎一模一样,只是处理对象换成了 Prompt 文本。它采用的是一种“由粗到细”的三级压缩框架:第一步是示例级压缩,把 Prompt 里多个 redundant 示例中重复的信息合并;第二步是句子级压缩,删掉与任务无关的废句;第三步才是重头戏——词元级压缩,像卷衣服一样,逐词逐字地剔除冗余。
为什么能精细到“词”这个粒度?因为词元(Token)才真正决定大模型的注意力成本。一个句子删掉“的、了、在”这类词,意思几乎不变,却能省下不少 token。关键在于如何判断一个词够不够“冗余”——LLMLingua 的答案是:让一个小模型给每个词打分,分数用“困惑度”(Perplexity)表示。困惑度越高,说明这个词越出乎意料、信息量越大;困惑度越低,说明这个词太容易预测、删了也无妨。这个评估不是凭空进行的,它会把你的任务指令 $I$ 也纳入上下文,实现“指令感知”的压缩。
1. 词元 $x_i$:当前被评估的某一个词元,中文场景下可以理解为一个字或一个词。
2. 上文 $x_{<i}$:该词元之前出现的全部词元,提供判断的语境。
3. 指令 $I$:用户给出的任务指令,让“重要性”的判断与任务目标绑定,而不是孤立地看词频。
4. 条件概率 $P$:小模型在给定语境和指令下,预测出这个词的概率,越常见越容易猜中。
5. 取负倒数次方:概率越高、困惑度越低,代表越冗余;概率越低、困惑度越高,代表越关键,后续按困惑度排序决定去留。
回到行李箱的比喻:打包专家整理衣物的终极标准,不是“这件衣服贵不贵”,而是“没了它我的行程会不会抓瞎”。LLMLingua 里的困惑度正是这样的标准——它不关心词的长短好坏,只关心“删掉这个词,大模型还读得懂吗”。有了这把尺子,压缩就不再是拍脑袋截断,而是一次有依据的取舍。
小模型选择
打包专家当然可以自己一件件翻看衣物,但那样太慢也太贵。聪明的做法是派一位熟悉衣橱的助手先做初步筛选,专家只在关键处把关。LLMLingua 的思路如出一辙:它不调用昂贵的商用大模型来评估词元,而是用一个参数规模小得多的语言模型来当“行李顾问”。候选模型包括 GPT-2 系列、LLaMA-7B 等,它们的共同点是:参数量小、显存占用低、推理速度快,评估成本几乎可以忽略。
一个自然的疑问是:小模型的判断靠谱吗?答案是“相当靠谱”。语言模型在预训练阶段习得的语言学先验是相通的——无论是 7B 的小模型还是 175B 的大模型,对“的、了、是”这类高频功能词的敏感度、对实体名词和数字的重视程度都高度一致。论文实验也证实,小模型给出的困惑度排序与大模型高度相关,评估一致性足以支撑压缩决策。当然,参数量也不能无限小,太小会丢失语义判断力,太大又失去了成本优势,因此需要一个参数规模权衡。
1. 成本比 $R$:使用小模型评估与使用大模型评估的成本之比。
2. 评估成本 $C$:近似与模型参数量成正比,参数量越大单次推理越贵。
3. 小模型参数量 $P_{small}$:以 LLaMA-7B 为例,即 70 亿参数。
4. 大模型参数量 $P_{large}$:以 GPT-3.5 级别约 1750 亿参数为例。
5. 代入求值:相除可得约 4%,这就是“让小模型当顾问”的显存与算力成本优势。
那位便宜的“实习生顾问”之所以敢拍板,是因为他和专家受过同一种“语言训练”。在打包的场景里,这意味着:你不需要为每一次评估支付头等舱的价格,却能获得接近头等舱的判断质量。选对助手,是整套压缩术的第一块基石。
使用方法
找到了打包专家,下一步自然是把行李交给他,填好交接单。LLMLingua 的使用也类似:先“请专家进门”,也就是安装依赖;然后调用核心 API 完成压缩;最后把压缩结果交给大模型。开发者在 Python 环境中只需执行 pip 安装即可引入 LLMLingua 库,工具会在本地加载一个小模型作为评估器,整个过程不需要联网申请额外的服务。
核心 API 是 PromptCompressor 这个类。先实例化压缩器,再调用 compress_prompt 方法,传入原始 Prompt、任务指令和期望的目标 token 数,它就会自动完成三级压缩并返回压缩后的文本。整个过程的核心参数配置包括:target_token(目标 token 数)、ratio(压缩率上限)以及 iterative_size(迭代压缩的粒度)。若你使用 LangChain 生态,还可以把 LLMLingua 作为 Prompt 压缩器接入链中,位于模板渲染之后、发送给大模型之前,自动完成瘦身,对上层业务几乎透明。
1. 原始长度 $N_{original}$:压缩前 Prompt 的总 token 数,即“满柜子衣服”。
2. 压缩率参数 $r$:期望保留的 token 比例,0.1 表示压缩到原来的 10%。
3. 相乘:目标长度是原始长度乘以压缩率,得到期望的 token 数量。
4. 向下取整 $\lfloor \cdot \rfloor$:token 数必须是整数,向下取整保证不超预算。
这份“交接单”上的每一项都对应着一个旋钮:想带大箱子还是小箱子、哪些衣物碰都不能碰(condition 参数可保护指定词元)。把交接单填好,剩下的事打包专家全包了——安装、调用、集成,三步走完,你的 Prompt 已经轻装上阵。
压缩率控制
行李箱有 18 寸、20 寸、28 寸之分,打包专家能根据箱子大小调整收纳策略。LLMLingua 同样提供了多个控制压缩程度的旋钮,其中最直接的是目标 token 数(target_token)和压缩率参数(ratio)。前者直接指定压缩后 Prompt 的 token 上限,适合有明确成本预算的场景;后者指定保留比例,比如 0.2 表示最多保留原长度的 20%,适合对压缩程度有直觉把握的场景。
除了“一锤定音”式的压缩,LLMLingua 还支持迭代压缩:把压缩过程拆成多轮,每轮只删掉一部分最冗余的词元,然后重新计算剩余文本的困惑度,再进入下一轮删除。为什么要这么麻烦?因为删掉一批词后,剩余文本的语境发生了变化,某些原本“安全”的词可能变得关键,迭代压缩能让每次删除都基于最新的语境判断,效果更稳。这两种方式共同服务于同一个“长度预算”管理目标。压缩率计算公式 $\beta$ 表示被删掉的比例,前端经常用它来展示省钱效果。
1. 压缩率 $\beta$:被压缩掉的 token 占原始 token 的比例,0.85 表示省掉 85%。
2. 压缩后长度 $N_{compressed}$:打包完成后行李箱里的 token 数量。
3. 求占比:先用压缩后长度除以原始长度,得到“剩余比例”。
4. 用 1 相减:剩余比例越小,压缩率越大。
选 28 寸大箱还是 18 寸登机箱,取决于你的行程(任务)和对舒适度(效果)的要求。LLMLingua 把选择权交给你:想要极致省钱,就调大压缩率、调低目标 token;想要稳妥保效果,就留足长度预算。真正的打包高手,会先预估行程再选箱子。
效果权衡
箱子越小,越可能漏带某件必需品。压缩率与效果之间的博弈,是 LLMLingua 使用中最需要清醒认识的一课。研究者发现,随着压缩率上升,任务效果并不是匀速下滑,而是呈现明显的“阈值现象”:在压缩率较低时(比如压到 50%),效果几乎不掉,因为删掉的都是纯冗余词汇;但当压缩率超过某个临界点后,效果会急剧滑坡——这时删掉的已经不只是“的、了”,而是承载关键信息的实体词和逻辑词。
因此,评估压缩效果不能只看压缩率,更要看“信息保留度”。常用的做法是拿压缩后的 Prompt 跑一遍验证集,对比原始 Prompt 的效果,计算效果损失 ΔAcc。如果任务是对抗性较强的复杂推理(如数学题、多跳问答),信息保留度的要求就更高;如果是简单分类、关键词提取,压缩空间则更大。这也意味着存在一个“压缩率天花板”:超过它,省下的 token 远抵不上效果损失的成本,得不偿失。
1. 原始效果 $Acc_{full}$:使用未压缩 Prompt 时模型在验证集上的准确率。
2. 压缩后效果 $Acc_{compressed}$:使用压缩 Prompt 后模型在同一验证集上的准确率。
3. 做差:两者之差就是压缩带来的效果损失。
4. 判读:ΔAcc 接近 0 说明压缩安全;明显大于 0 说明已越过阈值,需要回调压缩率。
打包界的金科玉律是“够用就好,别为省钱把必需品扔掉”。实际项目中,通常的做法是先从一个保守的压缩率(如 0.5)开始,逐步收紧,每压一档就跑一遍验证集,找到效果还能接受的临界点——那个点就是你的行李箱最佳尺寸。
兼容性测试
经常出差的人都知道,不同航空公司的行李规定不一样:有的对登机箱尺寸卡得死,有的对超重罚款狠。LLMLingua 压缩后的 Prompt,在不同大模型上的“待遇”也各不相同,因此上线前必须做兼容性测试。论文在多款主流模型上做了系统验证,包括 GPT-3.5、GPT-4、ChatGPT 以及开源模型 LLaMA 系列,观察压缩 Prompt 对各类模型输出成功率的影响。
测试结果显示,LLMLingua 具有良好的跨模型兼容性:多数模型在压缩后仍能保持相当的任务成功率,但具体数值存在差异。指令微调过的模型对压缩 Prompt 的鲁棒性通常更好,因为它们更擅长从“精简、命令式”的文本中提取意图;而某些基座模型在高度压缩的输入上,成功率下滑会更明显。此外,任务类型也影响适配度:GSM8K 这类数学推理任务对关键数字极其敏感,压缩时要格外保护数值词元;而文本分类、抽取任务则宽容得多。模型鲁棒性和任务类型适配,共同决定了成功率对比的结论。
1. 模型数量 $K$:参与兼容性测试的大模型个数。
2. 压缩后准确率 $Acc_k^{c}$:第 $k$ 个模型在压缩 Prompt 下的准确率。
3. 原始准确率 $Acc_k^{o}$:第 $k$ 个模型在原始 Prompt 下的准确率,作分母归一化。
4. 求比值再取平均:每个模型的效果保持率取平均,得到整体兼容性评分 $\bar{Q}$,越接近 1 越稳。
给行李箱打包前,先查清楚目的地航空公司的规定,是成熟旅行者的习惯。成熟的 AI 应用工程师也一样:在把压缩管线推向生产前,先在自己的目标模型和目标任务上各跑一遍对比测试,确认“这只箱子在哪家航空公司都提得上飞机”,再放心起飞。
应用场景
出差归来,精明的旅行者会算一笔账:请打包专家省下的托运费,够不够付他的服务费?答案通常是超值的。把同样的逻辑搬到 Prompt 压缩上,省钱效果可以用一个简洁的公式表达:省下的费用等于被删掉的 token 数乘以每个 token 的单价。假设原始 Prompt 有 4000 个 token,压缩到 400 个,按业内常见计价,单次调用成本直接降到原来的 10%。
第一个典型场景是降低 API 成本:凡是需要高频调用大模型的应用,Prompt 压缩都是直接的成本杠杆。第二个是长文档处理:把几十页 PDF 的背景知识作为上下文塞进 Prompt,token 占用动辄上万,压缩后不仅省钱,还因为上下文窗口的释放而减少了模型显存压力。第三个是批量任务加速:数据标注、内容审核、批量分类这类“同样规则跑千万条数据”的场景,压缩后的 Prompt 让每条的推理时间显著缩短,吞吐量成倍提升。第四个是对多轮对话历史的压缩:聊天机器人每轮都携带完整历史,几十轮后 token 爆炸,用 LLMLingua 把历史压缩成精炼摘要,既能续上话题,又不会拖慢响应。
1. 省下的 token 数 $(N_{o} - N_{c})$:原始 token 数减去压缩后 token 数。
2. 单价 $p$:供应商按 token 计费的单价,通常是每百万 token 若干美元。
3. 相乘:两者相乘即单次调用的成本节省额。
旅行结束时,你会发现那位打包专家的服务费远低于省下的托运费。LLMLingua 亦是如此:压缩付出的算力成本是小模型评估的几分钱,换来的却是大模型调用账单上高达 90% 的削减。这笔账,怎么算都划算。
AI 应用场景
长文档知识库问答
阶段:Prompt 预处理与成本优化
解决的问题:企业知识库问答时,常把几十页产品手册、政策条款全文塞进 Prompt 作为上下文,每次调用都要为几千上万个 token 买单;传统做法只能被动接受高额账单或粗暴截断导致答案残缺。用 LLMLingua 压缩后,语义关键信息保留,冗余描述剔除,成本大降且效果几乎无损。
具体案例:某保险科技公司将 8000 字的理赔条款压缩到 1200 字后接入客服问答,验证集上的答案准确率仅下降 1.2%,而单次调用 token 费用下降了约 85%,月度大模型账单从 3 万元降到不足 5000 元。
批量数据分类与标注
阶段:批处理推理加速
解决的问题:电商平台每天有数十万条商品评论需要做情感分类,每条都要携带冗长的分类规则说明。传统方式下,token 消耗与推理延迟都很高,GPU 集群常年满载。把规则说明压缩成精炼指令后,单条推理速度提升约 4 倍,同等的算力可以处理更多数据。
具体案例:某内容平台用 LLMLingua 压缩分类 Prompt 后跑全量历史评论,日处理量从 8 万条提升到 35 万条,分类 F1 值仅从 0.94 微降至 0.92,业务方完全可接受。
多轮对话历史压缩
阶段:上下文管理
解决的问题:客服机器人对话超过 20 轮后,携带的聊天历史常达 4000 token 以上,既推高成本又拖慢首字响应时间。传统做法是定期截断历史,但容易“失忆”。用 LLMLingua 在每轮对话结束后压缩历史,保留关键用户意图与已确认信息,实现“压缩版记忆”。
具体案例:某银行智能客服升级后,把单次会话平均 token 从 5200 降到 900,机器人响应提速 63%,用户问题解决率反而提升了 2%,因为模型不再被冗长历史干扰。
Python 演示
# -*- coding: utf-8 -*-"""简化版 LLMLingua 演示:用伪困惑度评估词元重要性并压缩 Prompt"""import reimport mathfrom collections import Counter STOPWORDS = set('的了是在和有就都而及与或一个我不他这那我们你们它') def pseudo_perplexity(token, freq, total, pos): """伪困惑度 = -log(出现概率),停用词打分极低(易预测、冗余),靠前位置加分""" if token in STOPWORDS: return 0.15 p = freq.get(token, 0) / total base = -math.log(p + 1e-6) return base * (1.5 if pos < 3 else 1.0) def compress(prompt, ratio=0.5): """贪心删除伪困惑度最低的词元,直到长度达到 ratio * 原文长度""" tokens = re.findall(r'[\u4e00-\u9fa5]|[A-Za-z0-9]+', prompt) current = tokens[:] target = max(1, int(len(current) * ratio)) freq = Counter(tokens) total = len(tokens) while len(current) > target: scores = [pseudo_perplexity(t, freq, total, i) for i, t in enumerate(current)] idx = scores.index(min(scores)) del current[idx] return ''.join(current), len(tokens), len(current) if __name__ == '__main__': prompt = '请确认您的航班时间为上午九点整,在三号航站楼C区办理登机手续,谢谢配合。' ratio = float(input('请输入压缩率(0.1-1.0,默认0.5):') or 0.5) compact, orig, kept = compress(prompt, max(0.1, min(ratio, 1.0))) print('原始词元数:', orig) print('压缩后词元数:', kept) print('压缩率:', round(kept / orig * 100), '%') print('压缩后内容:', compact)
STOPWORDS = set('的了是在和有就都而及与或一个我不他这那我们你们它')定义停用词表,对应“打包顾问一眼就判定可扔的包装盒”。def pseudo_perplexity(token, freq, total, pos):伪困惑度函数,模拟小模型对词元的“惊讶程度”打分。base = -math.log(p + 1e-6)出现概率越低,困惑度越高,信息量越大。return base * (1.5 if pos < 3 else 1.0)句首位置加权,模拟 LLMLingua 对指令开头关键信息的保护。def compress(prompt, ratio=0.5):主压缩函数,对应 LLMLingua 的 token 级过滤。tokens = re.findall(r'[\u4e00-\u9fa5]|[A-Za-z0-9]+', prompt)把中文按单字、英文数字按单词切分为词元序列。target = max(1, int(len(current) * ratio))根据压缩率计算目标 token 数,相当于确定行李箱尺寸。while len(current) > target:迭代压缩循环,每轮只删一个当前最冗余的词元。idx = scores.index(min(scores))找出伪困惑度最低(最可预测、最冗余)的词元位置。del current[idx]执行删除,模拟“把冗余词从行李箱里拿出来”。
常见误区
误区很多初学者觉得,既然要减少 token,那直接把 Prompt 从 1000 个 token 截断到 200 个不就行了?反正大模型读前面的内容也能猜个大概。
正解直接截断相当于从行李箱中间拦腰剪掉一半,可能把最关键的航班号、日期、金额全部剪掉。LLMLingua 的顺序是逐词评估、删除最不重要的,而不是按位置截断。它更像把箱子里的物品逐件称重,扔掉最轻的,而不是把箱子砍短。
为何常见:因为“截断”是人对文本空间最直觉的理解方式,而“逐词元评估重要性”需要理解困惑度机制,思维上绕了一个弯,所以容易先用截断来类比。
误区删掉了那么多字,大模型读到的信息变少了,效果怎么可能不变差?所以很多团队对压缩望而却步。
正解压缩删掉的多是“的、了、非常、十分”这类冗余修饰词,保留的是实体、数字、逻辑关系。有时候去除冗余反而让模型更专注,部分任务的效果甚至略有提升。论文实验和实际案例都表明,在压缩率不越过阈值的范围内,效果损失可以控制在 1-2 个百分点以内。
为何常见:人们习惯于用“信息量=文本长度”来粗略估计,忽略了自然语言中大量存在的冗余信息本来就占着 token 却不占智商。
误区既然是省钱利器,那把压缩率调到 95%、目标 token 压到原来的 5%,岂不美哉?
正解压缩率存在天花板,越过阈值后效果会急剧滑坡。到了那个临界点,省下的 token 费用远抵不上任务失败造成的业务损失。正确做法是从保守压缩率开始,逐步收紧并用验证集监控效果,找到“效果还能接受的最大压缩率”。
为何常见:省钱冲动容易让人忽略收益递减规律,再加上“能压 90%”的宣传印象,让不少开发者误以为压缩率越高越先进。
误区让 GPT-2 这种“小不点”来决定哪个词重要,能比得上 GPT-4 的眼光吗?还是老老实实用大模型评估更放心。
正解小模型与大模型在语言先验上高度一致,对高频功能词、实体名词的判断排序几乎相同,而成本只有大模型的约 4%。LLMLingua 恰恰是通过“小模型评估 + 大模型消费”的分工实现性价比最优。用大模型评估压缩,省下的钱又花回去了。
为何常见:人们对“能力越强越可靠”有路径依赖,忽略了评估任务(判断词元可预测性)本身并不需要极强的推理能力,靠统计先验就够了。
误区压缩完的 Prompt 发给谁都能正常干活,反正都是大模型,理解力应该差不多。
正解不同模型对压缩输入的鲁棒性差异明显。指令微调过的模型对精简命令式文本更友好;基座模型在高度压缩输入上成功率下滑更明显。同一份压缩 Prompt,在 GPT-4 上表现优秀,在某个开源小模型上可能一塌糊涂,所以上线前必须在目标模型上做兼容性测试。
为何常见:人们习惯把“大模型”当作一个同质化的整体,忽略了预训练目标、微调方式带来的行为差异。
面试题
Q1. LLMLingua 压缩 Prompt 的最小操作粒度是什么?
- A.字符级
- B.词元级← 正确答案
- C.句子级
- D.段落级
答案:B。LLMLingua 的三级压缩最后一级就是词元(Token)级过滤,它逐字逐词地评估并删除冗余 token,这是其核心创新点。字符级太细会破坏语义,句子和段落只是前两级粗筛,不是最小粒度。
Q2. LLMLingua 评估词元重要性的核心指标是?
- A.词语出现频率
- B.模型困惑度← 正确答案
- C.文本情感强度
- D.字符长度大小
答案:B。LLMLingua 的核心是用小模型计算每个词元的困惑度(Perplexity),困惑度越高表示越出乎意料、信息量越大,越应该保留;频率、情感、长度都不是它的评估依据。
Q3. LLMLingua 主要是由哪家公司开源的?
- A.微软公司开源← 正确答案
- B.谷歌公司开源
- C.百度公司开源
- D.腾讯公司开源
答案:A。LLMLingua 是微软开源(Microsoft)的 Prompt 压缩工具,论文发表于 EMNLP 2023,配套代码在 GitHub 上以 LLMLingua 项目发布,题目属于常识性识记。
Q4. 在 LLMLingua 中,困惑度较低(容易被预测)的词元通常被认为?
- A.信息量大应当优先保留
- B.冗余内容可以被安全剔除← 正确答案
- C.属于指令关键词应大写
- D.表示模型能力不足需重训
答案:B。困惑度低意味着小模型“闭着眼都能猜到”,这类词通常是“的、了、在”等高频功能词,删掉不影响语义,属于安全的压缩对象。反之,高困惑度词才承载关键信息,应优先保留。
Q5. LLMLingua 三级压缩的正确执行顺序是?
- A.词元级到句子级再到示例级
- B.句子级到词元级再到示例级
- C.示例级到句子级再到词元级← 正确答案
- D.示例级到词元级再到句子级
答案:C。LLMLingua 采用 coarse-to-fine(由粗到细)策略:先做示例级去重,再删冗余句子,最后做最精细的词元级过滤。逐层缩小审查范围,既保证效率又保证精度。
Q6. 关于压缩率与任务效果的关系,下列说法正确的是?
- A.压缩率越高推理效果越好
- B.低压缩率完全不影响效果
- C.超过阈值后效果会快速滑坡← 正确答案
- D.压缩率与效果完全无关
答案:C。效果随压缩率提升呈“先平后陡”的阈值现象:低压缩率时删掉的多是冗余词,效果几乎不变;一旦越过临界点,关键信息开始受损,效果急剧下降。因此需通过验证集找到临界压缩率。
Q7. 使用 LLMLingua 压缩 Prompt 最主要的收益是?
- A.提升模型数学推理能力
- B.减少Token消耗降低成本← 正确答案
- C.增大模型参数规模
- D.让生成答案成倍变长
答案:B。LLMLingua 的直接收益是减少 Prompt 的 token 数量,从而降低按 token 计费的 API 成本和推理延迟。它不改变模型本身,也不提升模型能力,更不能让输出变长。
Q8. 关于 LLMLingua 使用的小模型,下列说法正确的有?
- A.可直接用 GPT-2 轻量模型← 正确答案
- B.模型越小压缩效果一定越差
- C.判断与大模型高度一致← 正确答案
- D.必须用推理端同款大模型
答案:AC。LLMLingua 支持 GPT-2、LLaMA-7B 等轻量模型作为困惑度评估器,实验表明其判断与大模型有较高一致性。但“越小越差”是绝对化说法,存在参数权衡空间;也并非必须用推理端同款模型,小模型和大模型的分工正是其设计精髓。
Q9. 关于压缩后 Prompt 的效果表现,下列说法正确的有?
- A.所有任务效果必然下降
- B.部分任务去除干扰后提升← 正确答案
- C.需要结合任务单独评估← 正确答案
- D.完全不影响复杂推理。
答案:BC。压缩删除的主要是冗余信息,部分任务在去除噪声后效果反而提升,所以 A 的“必然下降”不成立。但复杂推理对关键信息敏感,效果影响因任务而异,必须单独评估,因此 D 的“完全不影响”也错误。
Q10. 使用 LLMLingua 进行 Prompt 压缩时,下列做法正确的是?
- A.所有任务统一用一个压缩率
- B.用 target_token 控制压缩程度← 正确答案
- C.长文档尽量不压缩直接传
- D.压缩后需抽检关键信息保留度← 正确答案
答案:BD。target_token 是官方提供的核心控制参数,可以精确设定压缩后长度;压缩后抽检关键信息保留度是防范效果滑坡的必要手段。不同任务对压缩敏感度不同,统一压缩率不可取;长文档虽长,但恰是压缩收益最大的场景,不应回避。