定义
上下文压缩是指用于减小提供给大型语言模型(LLM)的输入数据(上下文窗口)的大小或复杂性的技术集合,同时保留实现所需输出的最关键语义信息。
这个过程至关重要,因为LLM有有限的上下文窗口限制,处理超长的输入在计算上既昂贵又缓慢。
为什么重要
在实际应用中,用户通常会提供大量的文本——例如整个文档、冗长的聊天记录或复杂的代码库——作为上下文。将所有这些原始数据发送给模型会产生显著的成本(按令牌定价)并增加推理延迟。
上下文压缩直接解决了这些瓶颈,使企业能够经济且大规模地部署强大的LLM。
工作原理
上下文压缩采用了多种方法,这些方法通常是结合使用的:
- 摘要生成: 使用一个更小、专业的LLM来生成长输入的密集、抽象摘要,然后再将其输入到主模型中。
- 检索增强生成(RAG)精炼: 不传递所有检索到的文档,而是使用重排序或查询扩展等技术来选择最相关的片段。
- 实体/关键词提取: 仅识别和提取关键实体、日期和行动项,丢弃冗长的填充文本。
- 滑动窗口/分块: 系统地分解上下文,只传递最新或最相关的片段。
常见用例
上下文压缩在多个企业用例中至关重要:
- 文档问答: 允许用户在不超出令牌限制的情况下询问关于多达数百页法律合同的问题。
- 长期聊天机器人: 通过压缩过去的对话历史来维持长时间对话的连贯性。
- 代码分析: 将大型代码库或复杂的函数定义输入给LLM,以进行错误检测或重构建议。
主要优势
实施上下文压缩的主要好处有三方面:
- 降低成本: 处理的令牌越少,API使用成本就越低。
- 延迟改进: 输入数据越小,所需的计算时间就越少,从而为最终用户提供更快的响应时间。
- 上下文聚焦: 通过过滤噪声,模型可以将注意力集中在最显著的信息上,从而可能提高最终答案的质量。
挑战
尽管具有实用性,但上下文压缩并非完美无缺的科学。主要挑战包括:
- 信息丢失: 过度激进的压缩可能会无意中丢弃一个微妙但对准确响应至关重要的信息。
- 实现复杂性: 设计正确的压缩流程(例如,决定使用哪个摘要模型)需要大量的工程工作。
相关概念
该技术与检索增强生成(RAG)、微调和提示工程密切相关。虽然RAG侧重于检索相关数据,但上下文压缩侧重于浓缩已经检索或提供的数据。