Prompt and context — 提示词与上下文

From Systems analysis wiki
Jump to navigation Jump to search

提示词(Prompt)与上下文(Context)是提示词工程中针对大型语言模型(LLM)的两个基本概念。

上下文是提示词的关键组成部分,它决定了 LLM 生成准确、相关且有用回答的能力。高效的提示词工程在很大程度上是一门艺术,即在正确的时间为模型收集、筛选、构建和呈现正确的上下文,同时克服当前 LLM 的局限性。

Definition of Prompt - 提示词的定义

提示词(Prompt)是提供给 LLM 用以生成回应的完整输入数据集。它不仅仅是一个问题或命令,而是一个结构化的文本,可能包括:

  • 指令:直接告知模型需要做什么,以及采用何种格式、风格或语气。
  • 主要查询(Query):用户的直接问题或核心任务的描述。
  • 上下文:正确执行请求所需的附加信息。
  • 样例(Few-shot examples):展示在类似任务上期望的回答格式或风格。

提示词的质量和完整性直接决定了 LLM 回答的相关性、准确性和实用性。

Definition of Context - 上下文的定义

在提示词工程的框架内,上下文指的是在提示词内部的任何信息,这些信息帮助模型更好地理解任务、具体情况或用户期望,但不属于其原始训练数据的一部分。上下文提供了生成适当回应所需的情景细节。

上下文可以包括:

  • 先前对话的历史记录(在聊天机器人中)。
  • 从外部来源(文档、数据库、网页)提取的数据——这是RAG的基础。
  • 用户信息(个人资料、偏好)。
  • 当前任务或情况的具体细节。
  • 完成类似任务的示例(作为少样本提示的一部分)。

区分提示词中提供的上下文与模型在预训练期间获得的通用知识非常重要。提示词工程专注于有效提供情景化的上下文。

相互关系与影响

提示词与上下文是 Transformer 模型工作时的基本概念,它们决定了模型如何感知输入数据并基于此生成结果。从架构上讲,Transformer 模型并不会特意区分“提示词”和“上下文”——两者都是输入词元序列的一部分,这些词元被转换为嵌入向量,添加位置信息,并由自注意力层统一处理。

提示词与上下文密不可分:上下文是提示词的组成部分

  • 上下文构成提示词:工程师选择并组织相关的上下文以包含在提示词中。
  • 上下文引导模型:所提供的信息使 LLM 能够缩小可能答案的范围,专注于相关方面,并避免幻觉。
  • 上下文的质量决定了回答的质量:不充分、不相关或矛盾的上下文会导致不准确、泛泛而谈或错误的回答。准确而完整的上下文则能提高生成内容具体性和实用性。
  • 对指令解释的影响:上下文可以澄清或改变提示词中通用指令的解释。

提示词的有效性在很大程度上取决于工程师能否成功地收集、筛选并向模型呈现相关的上下文。

Types of Context - 上下文的类型

上下文可以根据不同特征进行分类:

按来源划分:

  • 用户提供:用户明确输入的内容、问题或任务描述。
  • 来自对话历史:用户和助手的先前消息(短期记忆)。
  • 检索所得(Retrieved):通过RAG从外部来源(文档、数据库、网页)获取的数据。
  • 来自用户画像/知识库:关于用户或领域的长期信息。
  • 静态/指令性:由工程师嵌入提示词模板中的信息(指令、示例、角色定义)。

按动态性划分:

  • 静态上下文:提示词中不变的部分(指令、定义、示例),定义了总体任务。
  • 动态上下文:每次请求都会变化的信息(用户数据、RAG 结果、当前时间),提供了具体细节。

按存储时间划分(记忆):

  • 短期上下文:当前对话会话的历史记录。
  • 长期上下文:关于用户或先前交互的已保存数据,需要存储和检索机制。

Context Management - 上下文管理

高效的上下文管理是提示词工程的一项关键任务,尤其是在 LLM 上下文窗口限制的背景下。主要方法包括:

  • RAG:处理大量信息最常用的方法。它允许从庞大的知识库中动态查找并仅将最相关的片段包含在提示词中。这需要向量数据库和高效的搜索机制(词法或语义搜索)。
  • 分块(Chunking):将大文档分割成语义相关或固定大小的部分,以便进行索引并通过 RAG 进行后续检索。
  • 摘要(Summarization):压缩长对话历史或大量文档,以便在有限的上下文窗口内传递核心信息。
  • 记忆管理(Memory Management):在聊天机器人和智能体中,使用不同策略来存储和检索对话历史(例如,LangChain中的 ConversationBufferMemory、ConversationSummaryBufferMemory)。
  • 滑动窗口(Sliding Window):仅在上下文中保留最近的 N 条对话消息。
  • 筛选与优先级排序:在构建最终提示词之前,根据上下文片段的重要性(例如,通过搜索时给出的相关性分数)进行筛选。

Role of Context in Prompt Engineering - 上下文在提示词工程中的作用

  • 提高相关性:上下文使模型能够生成与用户请求和情境高度匹配的回答。
  • 减少幻觉:提供事实信息(通过 RAG)使模型依赖于此信息,而不是凭空捏造事实。
  • 个性化:关于用户的上下文(偏好、历史)允许模型调整回答。
  • 状态管理:在对话和多步骤流程中,上下文(历史记录)确保了模型的连续性和对先前步骤的认知。
  • 克服模型知识限制:RAG 使模型能够回答关于其训练数据截止日期之后发生的事件或特定/私有数据的问题。

Limitations - 局限性

  • 上下文窗口限制:尽管现代模型的上下文窗口已增加到 100-200 万词元,但处理如此大的数据量可能成本高昂且速度缓慢。这需要高效的压缩和筛选策略(如 RAG、摘要)。
  • 相关上下文的检索:RAG 的有效性取决于检索质量。检索到的上下文不正确可能会误导模型(“垃圾进,垃圾出”)。
  • “茫然之谷”(Valley of Meh):位于超长提示词中间的信息可能会被模型忽略。这需要对提示词进行结构化处理(例如,“三明治技术”)。
  • 上下文注入风险:如果上下文来自不可信的来源(例如,网页),它可能包含恶意指令(提示词注入)。

参考文献

  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
  • Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
  • Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
  • Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.

参见

  • 大型语言模型
  • 上下文窗口
  • 向量数据库
  • LangChain