Prompt Compression
探索提示压缩 (Prompt Compression) 如何优化 AI 效率。学习如何使用 Ultralytics YOLO26 减少 LLM Token 使用量、降低成本并提升推理速度。
Prompt compression 是一种先进的优化技术,旨在缩短提供给 Large Language Models (LLMs) 和 multi-modal models 的输入文本的长度并降低其复杂性。通过在保留核心语义的同时,以算法方式剔除冗余词汇、不相关的上下文和停用词,prompt compression 能够让 AI 系统更高效地处理信息。该方法对于最大限度降低计算成本、减少 inference latency 以及防止模型超出其最大 context window 变得越来越关键。
提示词压缩的工作原理#
在架构层面,prompt compression 通常利用较小的专用模型或信息论算法来评估给定 prompt 中每个 token 的重要性。token merging and entropy-based pruning 等技术可以识别并移除对整体语义贡献甚微的 token。这确保了最终的输入仅包含密度最高的信息。
来自权威机构的最新研究表明,高度压缩的 prompt 能够在复杂的推理任务中维持性能,同时显著减少 token 消耗。对于将 AI 集成到可扩展应用中的开发者来说,遵循 prompt optimization guidelines by OpenAI 并利用压缩框架是实现高效部署的标准最佳实践。
实际应用#
提示词压缩在需要快速处理海量文本或视觉数据的场景中能提供即时价值:
- Retrieval-Augmented Generation (RAG): 在企业搜索应用中,RAG 管道通常会检索几十篇冗长的文档来回答单个用户查询。Prompt compression 算法会缩短这些检索到的文档,将其提炼为简明的事实摘要,然后再输入给生成模型。这可以防止 token 溢出并加速 real-time inference。
- Autonomous AI Agents: 智能体和 chatbots 必须保持对用户交互的长期记忆。压缩技术不会将整个对话历史记录传递到每个新查询中,而是会总结较早的对话轮次,从而确保智能体在不产生指数级计算成本的情况下保持上下文感知。
提示词压缩与相关技术的对比#
为了构建稳健的 machine learning operations (MLOps) 管道,区分 prompt compression 与相关概念非常重要:
- Vs. Prompt Caching: 缓存存储以前处理过的文本的内部计算状态,以避免重新计算。另一方面,压缩在发生任何处理之前,会主动更改和缩短输入文本本身。
- Vs. Prompt Engineering: Prompt engineering 是人工设计有效指令的工艺。压缩则是对这些指令的自动化、算法化缩减。
- Vs. Prompt Enrichment: Enrichment 通过添加外部上下文来扩展 prompt,而压缩则对其进行缩减。它们经常一起使用:系统可能会用数据库结果丰富 prompt,然后在推理之前压缩最终有效载荷。
在计算机视觉中的实现#
在 Computer Vision (CV) 中,当使用接受文本查询来识别对象的开放词汇模型时,prompt compression 原则同样适用。保持类描述简洁可确保更快的文本编码并减少内存开销。
对于速度至关重要的固定类别生产环境,开发者通常会从文本提示模型过渡到高度优化的固定架构模型,例如 Ultralytics YOLO26。你可以使用 Ultralytics Platform 高效管理数据集并训练这些最先进的模型。
from ultralytics import YOLO
# Load an open-vocabulary YOLO-World model
model = YOLO("yolov8s-world.pt")
# Principle of prompt compression: Use concise, distilled class names
# instead of lengthy, complex descriptions for faster text encoding
compressed_prompts = ["helmet", "vest", "forklift"]
model.set_classes(compressed_prompts)
# Run inference with the optimized class list
results = model.predict("https://ultralytics.com/images/bus.jpg")
results[0].show()





