有效构建提示词以利用 LLM 中检索到的上下文 为了确保 LLM 有效地使用检索到的上下文,请构建包含明确指令、清晰的上下文分离和特定于任务的指导的提示词。首先使用类似“使用以下段落回答查询”的系统消息来启动模型,使其优先考虑所提供的信息。 将上下文紧随此指令之后放置,使用视觉标记(例如,---
或 XML 标签)将其与查询区分开来。例如
System: Use the passages below to answer.
Context: [Retrieved passages here]
Question: [User query]
这种方法减少了歧义,确保模型将上下文识别为主要来源。 开发人员应避免将上下文埋藏在查询中,或者使用诸如“参考此信息”之类的模糊语言,这可能导致模型忽略或未充分利用所提供的数据。
优化上下文呈现和相关性 检索到的上下文的顺序、长度和相关性会显着影响性能。 将最关键的信息放在首位,因为 LLM 会按顺序处理文本,并且可能会为较早的内容分配更高的权重。 例如,如果回答有关 API 设计的技术问题,请从最相关的文档片段开始。 裁剪掉无关的细节以避免使模型不堪重负——超过 500 个 token 的上下文通常会降低准确性。 使用项目符号或编号列表等格式来提高可读性。 例子
Context:
1. API authentication requires OAuth 2.0 tokens.
2. Rate limits: 100 requests/minute.
3. Error code 429 indicates rate limit exceeded.
Question: How to handle error 429 in the API?
这种结构有助于模型快速识别关键细节。 如果上下文不相关,请明确说明“如果段落无法回答问题,请说‘未找到相关信息’”,以防止幻觉。
处理边缘情况和迭代改进 即使是结构良好的提示词,如果上下文不完整或矛盾,也可能会失败。 通过添加回退机制来解决此问题。 例如,包含一个最终指令,例如“如果段落冲突,请解释歧义。” 对于复杂的任务,将查询分解为子问题,并将每个问题映射到特定的上下文部分。 开发人员应迭代地测试提示词:从简单的结构开始,评估输出,并根据失败模式进行改进。 例如,如果模型忽略了关键段落,请使用“特别关注 [关键细节]”之类的短语来添加强调。 诸如 LangChain 的“RetrievalQA”链之类的工具可以自动执行此过程的某些部分,但手动调整对于小众用例仍然至关重要。
通过结合明确的指令、上下文优先级和迭代测试,开发人员可以显着提高 LLM 准确有效地利用检索到的信息的能力。