ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RAG知识库文档引用溯源-细说直接提示法_rag直接展示引用-CSDN博客

RAG知识库文档引用溯源-细说直接提示法_rag直接展示引用-CSDN博客 首屏导读 · 本教程配套付费专栏 大模型工程师修炼手记19.9 元AI 编程 / Agent 实战 本文同主题系统课程· AI时代程序员的自我提升49.9 元AI 时代成长方法论。单篇不过瘾订阅解锁全量源码、实战与答疑文末附资料包领取方式 ↓直接提示法Direct Prompting是RAG溯源中最朴素、门槛最低的实现方式。它不依赖模型的特殊功能如Function Calling仅通过精心设计的提示词引导模型在生成答案时以特定格式如[1]、[2]在文中标注引用并在末尾附上参考文献列表。其本质是将格式约束作为自然语言指令的一部分交给模型去理解和遵循。⚙️ 核心原理直接提示法的核心在于将格式要求显式地写入System Prompt或User Prompt。模型在阅读这些指令后会尝试按照要求的格式生成回答。例如你是一个严谨的助手。请仅根据提供的上下文回答问题并遵循以下格式要求 1. 在答案正文中凡是引用上下文中的信息必须在句末用方括号标注引用编号如[1]、[2]。 2. 在答案末尾单独列出“参考文献”部分给出每个编号对应的原文片段和出处。 上下文信息 [1] 来源: 文档A, 页码: 5 内容: RAGFlow提供了可视化溯源功能用户可以查看答案所引用的具体文档段落。 [2] 来源: 文档B, 页码: 12 内容: 混合检索结合了BM25关键词检索和向量语义检索能够显著提升召回率。 问题RAGFlow有哪些主要特性模型接收到这样的指令后理想情况下会输出RAGFlow的主要特性包括 - **可视化溯源**用户可以查看答案引用的具体文档段落[1]。 - **混合检索**支持BM25与向量检索的结合提升召回率[2]。 参考文献 [1] 文档A页码5 - “RAGFlow提供了可视化溯源功能用户可以查看答案所引用的具体文档段落。” [2] 文档B页码12 - “混合检索结合了BM25关键词检索和向量语义检索能够显著提升召回率。” 实现步骤与代码示例1. 构建带格式指令的提示词defbuild_prompt(question,retrieved_chunks):# 格式化上下文显式标注编号便于模型引用context_parts[]fori,chunkinenumerate(retrieved_chunks):sourcechunk.metadata.get(source,未知)pagechunk.metadata.get(page,N/A)contentchunk.page_content.strip()context_parts.append(f[{i1}] 来源:{source}, 页码:{page}\n内容:{content})context_text\n\n.join(context_parts)system_prompt你是一个严谨的、注重事实依据的助手。你必须**仅根据下面提供的上下文信息**回答问题。 如果上下文中没有相关信息请直接回答“根据现有资料无法回答”。 你的回答必须遵循以下**严格的格式要求** 1. 在答案正文中每引用一个上下文片段必须在引用内容末尾标注对应的编号格式为[编号]如[1]、[2]。 2. 在答案正文之后必须单独附上“**参考文献**”部分。 3. 参考文献部分中每个条目必须包含编号、来源、页码如有、以及被引用的**原文完整句子或段落**。 4. 确保正文中的每一个引用编号都在参考文献部分有对应的条目。 请严格按照上述要求回答。user_promptf上下文信息{context_text}问题{question}请回答务必遵循格式要求returnsystem_prompt,user_prompt2. 调用模型并解析结果importopenaidefgenerate_with_direct_prompt(question,retrieved_chunks):system_prompt,user_promptbuild_prompt(question,retrieved_chunks)responseopenai.ChatCompletion.create(modelgpt-4o,# 或任何文本生成模型messages[{role:system,content:system_prompt},{role:user,content:user_prompt}],temperature0.0,# 设为0以减少随机性提高格式遵循度)raw_answerresponse.choices[0].message.content# 后处理可以编写简单的正则表达式提取正文和参考文献但通常直接展示给用户returnraw_answer3. 应对弱格式遵循模型的强化技巧对于遵循指令能力较弱的模型如早期的开源模型可以采取以下强化策略在Prompt末尾加一句格式提醒如“请记住你的回答必须以‘参考文献’结尾并确保每个引用都有对应条目。”提供Few-shot示例在System Prompt中加入1-2个完整的问答示例展示期望的输出格式。使用特殊分隔符如要求模型用---分隔正文和参考文献便于解析。system_prompt_with_example你是一个严谨的助手……前述要求 以下是一个符合要求的回答示例 --- 问题水的沸点是多少 上下文 [1] 来源: 物理手册, 页码: 88 内容: 在标准大气压下水的沸点为100摄氏度。 回答 在标准大气压下水的沸点是100摄氏度[1]。 参考文献 [1] 物理手册页码88 - “在标准大气压下水的沸点为100摄氏度。” --- 请严格按照示例的格式回答下面的问题。 与工具调用法的对比维度直接提示法工具调用法实现复杂度极低。无需定义Schema只需写Prompt。中等。需要定义函数参数Schema且要求模型支持Function Calling。格式可靠性较低。依赖模型的文本生成稳定性可能出现格式错乱、遗漏引用标记。极高。模型必须返回符合Schema的JSON否则API调用会失败。引用准确性中。模型可能凭空捏造一个不存在的编号幻觉引用。高。通过要求模型显式提供quoted_text字段能促使模型核对原文。模型兼容性全兼容。适用于任何文本生成模型包括本地部署的Llama、ChatGLM等。受限。需要模型支持Function CallingGPT、Claude、文心4.0、GLM-4等。性能开销最低。单次API调用无额外Token消耗。较低。单次调用但Schema定义会消耗少量Token。后处理成本高。需要编写复杂的正则表达式来解析文本且易受格式变化影响。低。直接反序列化JSON即可数据结构固定。前端展示灵活性低。引用链接的生成依赖于对文本的手工解析。高。JSON数据可以方便地渲染为脚注、高亮、悬浮卡片等。 优势与适用场景直接提示法的最大优势在于普适性和低门槛特别适合以下场景快速原型验证在项目初期不需要搭建复杂的工具调用逻辑就能验证RAG管道的整体效果。使用不支持Function Calling的模型例如许多本地部署的开源模型如Llama 2、ChatGLM3的早期版本直接提示法是实现溯源的唯一选择。对输出格式要求不严格的应用比如内部使用的问答机器人只要能看到大致出处即可不需要前端进行复杂的交互渲染。成本极度敏感的场景由于不引入额外的结构化指令每次调用的Token消耗最少。⚠️ 挑战与应对策略1.幻觉引用模型生成了不存在的编号现象答案中出现了[3]但上下文只有2个片段。应对在Prompt中明确强调“只能引用上下文中提供的编号不得使用任何未给出的编号。”进行后处理校验用正则提取所有引用编号检查是否超出上下文数量范围。若超出可请求模型重新生成或直接过滤掉无效引用。2.格式漂移模型未按约定格式输出现象模型用了(1)而不是[1]或者将参考文献放在了开头。应对使用Few-shot示例来锚定期望格式。在API调用中设置temperature0最大限度减少随机性。编写容错性高的解析函数支持多种常见的引用格式如[1]、(1)、sup1/sup。3.参考文献内容不忠实于原文现象参考文献部分写的是“文档A提到……”而非原文摘录。应对在Prompt中明确要求“参考文献部分必须包含从上下文中逐字复制的原文句子不能自己总结。”提供一个Few-shot示例展示正确做法。 最佳实践总结上下文编号前置在构建Prompt时为每个检索到的文本块显式分配一个编号如[1]、[2]并让模型在回答中直接使用这些编号。这比让模型自己编号要可靠得多。温度设为0或极低值引用任务需要高度确定性低温度能显著提高格式的遵循度。提供清晰的Few-shot示例尤其是对于开源模型一个格式正确的示例比长篇大论的指令更有效。增加格式约束提醒句在Prompt的结尾用粗体或重复的方式再次强调格式要求例如“再次提醒请务必在回答末尾列出参考文献并使用[编号]格式标注引用。”后处理兜底永远不要完全信任模型的输出格式。实现一个简单的解析器来提取引用和正文如果解析失败则回退到直接显示原始文本。 总结直接提示法是RAG溯源实现中的“瑞士军刀”——简单、通用、快速上手。虽然它在结构化和可靠性上不及工具调用法但对于许多非关键任务和受限模型环境而言它已足够有效。只要掌握了提示词设计的技巧并辅以适当的后处理直接提示法完全可以支撑起一个体验良好的可溯源RAG应用。hrefhttps://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-e1cc28b339.css relstylesheet hrefhttps://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-d1e89cace4.css relstylesheet内容来源csdn.net作者昵称Tom·Ge原文链接https://blog.csdn.net/gedonshen/article/details/160357425作者主页https://blog.csdn.net/gedonshen标签#前端 #服务器 #javascript确定要放弃本次机会福利倒计时::立减 ¥普通VIP年卡可用立即使用延伸阅读 · 我的付费专栏觉得这篇文章对你有帮助我把同类主题的系统化内容沉淀成了付费专栏欢迎订阅支持持续输出专栏定价内容大模型工程师修炼手记19.9 元AI 编程 / Agent 深度实战AI时代程序员的自我提升49.9 元AI 时代成长方法论本文配套代码 / 资料包欢迎在评论区留言「求代码」我会私信发送完整资源
返回列表