提示词设计与 RAG 应用笔记
约 1337 字
提示词设计与 RAG 应用笔记
提示词的作用
提示词(Prompt)是提供给模型的指令和上下文。好的提示词能减少任务歧义、提供必要信息,并明确期望的输出形式;它不能保证模型永不出错,也不能替代对结果的验证。
一个实用的提示词结构
可以根据任务需要组合以下要素:
- 任务:说明要完成什么。
- 背景:提供完成任务所需的信息。
- 约束:说明范围、语气、受众或不能做的事。
- 输出格式:指定表格、清单、JSON 等结构。
- 验收标准:说明什么样的结果才算完成。
示例:
任务:将下面的会议记录整理为行动项。
背景:读者是项目团队成员。
约束:只使用记录中明确的信息;不确定的负责人标记为“待确认”。
输出:使用表格,列包含事项、负责人、截止日期、依据。
会议记录:……对复杂任务,可以先让模型列出步骤或澄清缺失信息,再逐步完成;但拆分步骤并不会自动保证每一步都正确。
让输出更可靠
- 把目标写得具体,避免“写得更好”这类无法检验的要求。
- 提供必要材料,区分事实、假设和个人意见。
- 对格式要求给出明确字段或示例。
- 要求模型标记未知信息,不要为了填满格式而猜测。
- 对重要结论保留来源、计算过程或原始依据,便于人工复核。
- 使用固定输入和测试样例评估提示词,而不是只看单次效果。
如果模型输出需要被程序解析,应在应用层校验字段、类型和取值范围;不能仅依赖提示词要求模型“严格输出 JSON”。
什么是 RAG
RAG(Retrieval-Augmented Generation,检索增强生成)把外部资料检索与大语言模型生成结合起来。它适用于需要依据特定文档回答、而这些内容未必存在于模型训练数据中的场景。
典型流程如下:
- 准备资料:清理文档并切分为适合检索的片段。
- 建立索引:将片段转换为向量,或建立关键词索引,并保存原文与来源信息。
- 检索相关内容:根据用户问题查找可能有用的片段。
- 组织上下文:把问题、检索结果和回答要求一并提供给模型。
- 生成并展示答案:尽量依据检索到的内容回答,并附上来源。
- 评估与改进:检查检索是否找到正确资料,以及最终答案是否忠实于资料。
向量检索可以找到语义相近的内容,但相似不等于正确。许多系统会结合关键词检索、向量检索和重排序,以改善结果相关性。
RAG 的常见问题
- 切分不合理:片段太短会丢失上下文,太长会带入噪声或挤占上下文窗口。
- 检索结果不相关:嵌入模型、查询表达或索引质量可能不匹配资料领域。
- 来源信息丢失:没有保存文档名称、章节或链接,就难以核查答案。
- 检索到内容但回答仍错:模型可能忽略证据、误读材料或在证据之外补充推断。
- 资料已过期:索引未及时更新,答案会依据旧文档生成。
因此,RAG 的质量不仅取决于大语言模型,还取决于资料治理、切分、索引、检索、提示词和评估流程。
如何评估一个问答系统
至少分别检查两个环节:
- 检索质量:正确资料是否出现在检索结果中,结果是否足够相关。
- 回答质量:答案是否回答了问题、是否有依据、是否忠实于检索内容、引用是否准确。
可准备一组覆盖常见问题、边界问题和无答案问题的测试集,记录预期依据与允许的回答。对于资料中没有答案的问题,系统应能说明无法从现有资料确认,而不是编造结论。
隐私与安全注意事项
发送给模型或写入索引的内容可能包含个人信息、商业机密或内部资料。使用前应确认数据处理规则、访问控制、保留期限和供应商政策。检索到的文档也应视为不可信输入:其中可能包含与任务无关或试图影响模型行为的文字,应用系统应避免把文档内容当作高优先级指令执行。
学习小结
- 清晰的任务、背景、约束和输出格式能提升提示词的可用性,但不能代替校验。
- RAG 通过检索外部资料为生成提供依据,质量依赖完整的检索与数据流程。
- 检索相关不代表回答正确;应同时评估检索结果与生成答案。
- 对敏感资料做好权限和隐私管理,并为无答案情况设计可靠的处理方式。
