趋近智
上下文注入是将相关文本段落(即“上下文”)整合到将发送给大型语言模型(LLM)的提示词中。注入此上下文的方式显著影响LLM有效发挥其作用的能力。常见的上下文注入方法在此讨论。
最直接的做法是简单地将获取到的上下文直接附加到原始用户问题的前面或后面。通常会使用分隔符或引导短语。
示例结构:
上下文:
[获取到的段落 1]
[获取到的段落 2]
...
根据以上上下文,回答以下问题:[用户问题]
或者,问题可能在前:
问题:[用户问题]
使用以下信息回答问题:
[获取到的段落 1]
[获取到的段落 2]
...
一种更有条理且通常更受欢迎的方法是使用提示词模板。这些是预定义的字符串,带有问题和上下文的占位符。Python的f-strings或专门的模板库(如Jinja2,常用于LangChain等框架中)可以使这项工作易于管理。
示例模板(Python f-string):
# 假设 'retrieved_docs' 是字符串列表
# 'user_query' 是原始问题
context_string = "\n".join(retrieved_docs)
prompt_template = f"""
你是一个助手,负责根据提供的上下文回答问题。
不要使用以下上下文之外的任何信息。
上下文:
{context_string}
问题:{user_query}
答案:
"""
# 'prompt_template' 现在包含为LLM完全格式化好的提示词
一些LLM或交互框架可能支持更结构化的输入格式,可能接受问题和上下文作为对象内的独立参数或字段。
示例(API调用):
response = llm_api.generate(
query="什么是RAG?",
context_documents=[
"RAG 是检索增强生成(Retrieve-Augmented Generation)的缩写...",
"它结合了检索与生成..."
],
instructions="仅使用提供的文档回答问题。"
)
将上下文放在模板中的位置也很重要。常见模式包括:
最佳位置取决于所使用的具体LLM和任务的性质。一些模型表现出近因偏差,更关注提示词中后面出现的信息。通常需要进行实验。
下图展示了模板化注入的流程:
用户问题和获取到的上下文段落被插入到提示词模板中指定的占位符内。生成的格式化提示词随后发送给LLM。
选择合适的注入方法需要在实现上的简易性、对LLM行为的控制需求以及优化其使用提供信息的方式之间取得平衡。模板化为大多数RAG应用提供了灵活性和控制力的良好结合。在构建RAG系统时,思考这些不同的注入策略如何影响最终的生成输出,尤其是在处理不同数量的获取上下文时。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造