Q1333项目实战与企业级真题解析通用与软实力AgentAlpha 社区真题库约 7 分钟更新 2026-09-29

什么是上下文工程?与提示词工程的区别

什么是上下文工程?与提示词工程的区别

1️⃣ 考察意图

面试官想看你是否真正理解LLM应用中的“输入侧”优化,而非只会调prompt。这道题考察类型是概念辨析+系统设计,刁钻点在于:很多人把上下文工程等同于RAG或长上下文,但面试官真正想看的是你能否区分静态指令优化(提示词工程) 与动态信息编排(上下文工程) 的本质差异。答好了能展示你对LLM输入侧有体系化认知,能设计出高鲁棒性的Agent/RAG系统,而非只会套模板。

2️⃣ 标准答

定义与核心差异

上下文工程(Context Engineering)是对LLM输入上下文的动态管理和优化,核心解决“给模型什么信息、怎么给、给多少”的问题。提示词工程(Prompt Engineering)则聚焦于指令和示例的静态设计,比如few-shot格式、角色设定、思维链模板。

关键区别在于三个维度:

  • 动态性:提示词工程通常是写死的模板(如“你是一个客服”),而上下文工程需要根据用户输入、对话历史、外部数据源实时组装上下文。例如,在Agent系统中,每次调用工具后,需要将工具返回的结果动态插入到上下文中。
  • 信息源:提示词工程依赖模型内部知识或少量示例;上下文工程依赖外部检索(RAG)、记忆缓存(如MemGPT的层级记忆)、上下文压缩(如LLMLingua)。一个典型场景:长对话中,上下文工程会用滑动窗口+摘要压缩来管理历史,而提示词工程只会写“记住之前的对话”。
  • 优化目标:提示词工程追求指令清晰度(减少幻觉);上下文工程追求信息密度与窗口利用率。例如,用BM25+LLMLingua对检索文档进行压缩,在保持95%准确率的同时将上下文长度缩减60%,这是提示词工程做不到的。

核心技术栈

  • 上下文压缩:LLMLingua(基于GPT-2的压缩器)、Selective Context(按token重要性剪枝)。工程取舍:压缩比越高,信息损失越大,需要根据任务类型(如QA vs 摘要)动态调整压缩率。
  • 检索增强(RAG):结合BM25(稀疏检索)和DPR/ColBERT(稠密检索),用HNSW索引加速。实际坑:检索到的文档可能包含噪声,需要rerank(如Cohere Rerank 3)过滤低相关片段。
  • 记忆机制:MemGPT的层级记忆(工作记忆+长期记忆),用RoPE位置编码处理超长上下文。落地解法:对长期记忆做摘要压缩,每轮对话后更新摘要,避免上下文膨胀。
  • 动态编排:如LangChain的AgentExecutor,根据工具调用结果动态拼接上下文。坑:上下文顺序影响模型注意力,通常将最新信息放在末尾(靠近输出位置)。

应用场景

  • 长对话:客服系统用上下文工程管理多轮历史,避免模型遗忘。例如,用滑动窗口保留最近5轮+摘要压缩前20轮。
  • 多工具调用:Agent调用API后,将返回结果结构化插入上下文,而非简单拼接JSON。
  • 知识密集型任务:RAG系统用上下文工程控制检索文档数量(top-k=5),避免上下文过长导致模型“迷失在中间”。

3️⃣ 答题模板(30 秒电梯版)

“这个问题我从定义、核心区别、技术栈三个层面回答。定义上,上下文工程是动态管理LLM输入信息,提示词工程是静态设计指令。核心区别在于动态性(实时组装 vs 固定模板)、信息源(外部检索 vs 内部知识)、优化目标(信息密度 vs 指令清晰度)。技术栈包括上下文压缩(LLMLingua)、RAG(BM25+DPR)、记忆机制(MemGPT)。总结一句:提示词工程解决‘怎么说’,上下文工程解决‘给什么’。”

4️⃣ 高频追问 & 应对

追问 1:上下文工程和RAG是什么关系?能互相替代吗?

上下文工程是RAG的上层框架。RAG是上下文工程的一种实现方式,负责从外部知识库检索信息。但上下文工程还包括记忆管理、上下文压缩、动态编排等。例如,在长对话中,RAG只解决“从知识库找答案”,而上下文工程还需要管理对话历史(滑动窗口+摘要)。不能替代:RAG解决信息缺失,上下文工程解决信息冗余和编排。

追问 2:上下文压缩会损失信息,如何评估压缩质量?

用两个指标:压缩比(压缩后长度/原始长度)和任务性能(如QA准确率)。工程上,先做离线测试:对同一任务,用不同压缩率(0.3/0.5/0.7)跑一遍,绘制压缩比-准确率曲线,找到拐点(如压缩比0.5时准确率下降<5%)。线上用AB测试,监控用户满意度。注意:压缩器(如LLMLingua)本身有延迟,需要权衡压缩时间 vs 推理时间。

追问 3:上下文工程中,如何解决“上下文窗口溢出”问题?

三种策略:1)滑动窗口:保留最近N轮对话,丢弃早期内容,适合短时记忆任务。2)摘要压缩:对早期对话生成摘要(用LLM或专门模型),替换原始内容,适合长对话。3)层级记忆:如MemGPT,将上下文分为工作记忆(当前轮+工具结果)和长期记忆(摘要+关键实体),用RoPE处理位置编码。工程取舍:摘要压缩会丢失细节,滑动窗口会丢失长期依赖,需要根据任务类型选择。

5️⃣ 避坑 · 常见错误答法

  • ❌ 把上下文工程等同于“写更长的prompt”或“加更多few-shot示例” → ✅ 上下文工程是动态管理信息源,不是静态扩充prompt长度。例如,用RAG检索文档后,需要压缩和排序,而不是直接拼接。
  • ❌ 认为上下文工程和提示词工程是互斥的 → ✅ 两者互补:提示词工程设计指令模板,上下文工程填充动态内容。例如,Agent系统中,提示词工程写“你是一个客服”,上下文工程插入用户历史+知识库片段。
  • ❌ 只提RAG不提记忆管理和压缩 → ✅ 上下文工程包含RAG、记忆、压缩三大块。面试官想看你是否理解完整体系,而非只懂检索。

6️⃣ 简历呼应

  • 如果你有RAG项目:从“检索文档的上下文管理”切入,讲如何用LLMLingua压缩检索结果,对比压缩前后准确率和延迟,展示对信息密度的理解。
  • 如果你只做过传统NLP:用“对话系统”类比,传统NLP的对话状态跟踪(DST)相当于上下文工程中的记忆管理,LLM的上下文工程是DST的升级版,强调动态性和压缩。
  • 如果你是校招无项目:聚焦论文复现,比如复现MemGPT的层级记忆机制,用开源模型(如Llama 3)实现一个长对话Demo,展示对上下文窗口管理的理解。
  • 论文:LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models
  • 论文:MemGPT: Towards LLMs as Operating Systems
  • 工具:LangChain AgentExecutor 源码(理解动态上下文编排)
  • 博客:Anthropic 的“Context Engineering”官方文档(Claude的上下文管理最佳实践)
  • 论文:Lost in the Middle: How Language Models Use Long Contexts(理解上下文位置偏差)

—— 本场面试完 ——

我们不做玩具级 Demo 教学。训练营的作业是开源项目和论文——我们想陪伴你,做出能改变生活、最后改变世界的项目。