RAG信赖度提升实战:Trustworthy Generation设计模式(非常详细),从入门到精通,收藏这一篇就够了!
本文介绍了名为Trustworthy Generation的设计模式旨在提升 RAG 系统生成内容的信赖度即真实性是否准确、无幻觉、无偏见与完整度是否全面、不遗漏关键信息。文章系统分析了 RAG 信赖度不足的四大根源检索错误、内容可靠性问题、前置推理错误、模型幻觉。针对这些问题文章提出围绕“可解释、可追溯、可反思、可监管”四个层次的解决方案。作者指出该模式的权衡点会增加系统复杂度与计算开销并存在误过滤风险并提供了三种替代路径——双知识库交叉验证、增强过程透明性、带置信分的引用标注。01 前言Trustworthy Generation设计模式的目的是提升RAG生成内容的信赖度这里的信赖度包含两个方面真实性和完整度该设计模式是一系列技术和功能模块的组合下面从该设计模式面向的问题域、解决方案以及一些优劣权衡点来展开介绍下。02 ProblemRAG在此就不过多赘述目前实践中RAG技术应用非常广泛RAG是由两个主要动作组成Retrieve和Generate本质是在做Context Engineering中的内容补充虽然我们在知识库中补充、梳理、构建的都是我们认为高质量和真实的信息但是RAG最后返回的是LLM Generate的内容该内容的生产会因为以下几种情况不仅限于出现信赖度不足的问题检索错误包含a.准确率问题即检索召回的部分信息相关性很弱检索是按照语义向量的相似性召回高向量相似度不等同于高内容相关性high similarity≠high relevantb.召回率问题即知识库中有些非常相关的内容没有被检索召回内容可靠性问题比如召回的信息虽然都是相关的但是有些内容存在偏见、过期或本身内容有矛盾冲突的情况前置推理错误这个问题一般是由于在检索前做的query扩写或者是step back问题抽象出现一些偏差导致最终检索的方向是错的从而导致检索出来的内容也是偏差的模型幻觉在面向一个复杂问题做RAG时由于问题的复杂和召回内容的繁杂模型在最后Generate的时候就容易出现自导自演加戏的情况以上所列举的情况基本上涵盖了RAG使用过程中的大部分问题但是针对这些问题无法根解本文所说的设计模式也只是在一定程度上通过一些技术和人机交互的结合来降低问题出现的概率提升对于问题出现的感知从而提高RAG的信赖度。03 Solution解决方案围绕着提升信赖度的四个层次来展开“解决不了事情要明确说出来”不要自己发挥这是信赖建立的第一步“说话要有依据”生成的内容关键的信息要附带内容出处“深思熟虑为自己的言论负责”检索过程中可以有反思和递进同时对于返回的结果做好质量卡口“建防护、受监管”构建面向信赖度提升的工程技术链路同时增加人机交互的监督。▐****信息关联度识别本质上我们在工程链路中使用RAG是为了给当前query补充关联的信息因此如果RAG模块 a.返回有关联的信息 且 b.在没有检索到足够有关联信息的时候明确不返回能够做到这两点可以比较大的提升人们对其的信赖度。当前比较多的问题在于RAG经常返回一些相似但是不相关的信息提升对于相关信息的“识别”是问题的关键这里有三种做法相似度threshold设置RAG的检索是计算query和知识embedding index的相似度然后按照相似度降序返回k个但是对于这个相似度本身没有做底线threshold的要求这里可以设定一个threshold值小于该值的相似度检索信息就不做召回该threshold需要针对各自的场景去摸索和调优同时有研究表明当两个信息没有关联性的时候向量相似度会陡然下降这里可以判断一个陡降的趋势截止到这个相似度分值之后的信息都是关联性不大的问题类型分类就是在RAG之前做问题分类如果不属于当前RAG知识库可覆盖的信息类型范围就不做RAG的调用领域关键词识别只有在检测到query中有包含特定的关键词或者领域术语时才触发RAG调用这是一种非常严格的限制。▐****引用出处说明第二种提升RAG信赖度的方式是针对RAG生成的内容明确标识出这部分结果信息来自于哪段知识的引用和写论文引用他人观点或者文章内容类似。这里引用说明的实现有三种方式分别是信息直接来源引用说明即只要指出这段内容来源于哪个知识文档如果有chunking的话就是某个chunk后面统一称doc相关的prompt和结果如下所示template Answer the question based on the following sources, using in-line citations like in scientific papers. SOURCES: {sources} QUESTION: {question} INSTRUCTIONS: 1. Use information only from the provided sources 2. Provide an answer with in-line citations using brackets, e.g., Einstein developed the theory of relativity [1] 3. Use the source ID in brackets [1], [2], etc., corresponding to the source number 4. Cite ALL facts with their source IDs 5. If multiple sources support a fact, you can include multiple citations [1][2] 6. If the information isnt in the sources, say I dont have enough information to answer this question 7. Include a References section at the end listing all the sources you cited Your answer should be comprehensive, accurate, and include citations for all factual claims. 附带引用来源的结果示例有判断的引用来源说明先判断这段内容是否需要引用说明来增加信赖度这个判断可能和当前应用的领域以及该事实内容对于整体内容的影响来评估比如这段文字”王二生于1990年3月3日出生在一农民家庭于2015年被评为全国劳模“那么对于王二的出生日期和出生情况不需要引用做说明对于后面获得荣誉要指明出处不然如果胡诌的话影响比较大这里对于返回内容哪些需要进一步说明引用出处需要面向特定领域做小模型微调会有额外的成本。基于token级别的关联说明在面向一些复杂问题的回答时可能会检索召回比较多的doc同时最终结论生成的内容中每个段落都是结合了多个doc的内容来关联生成的因此还是会存在模型会生成逻辑错误不同的内容编排形式可能就会引入重大事实差异或事实错误参考的doc太多上下文一长容易自我发挥基于token级别的关联说明当前没有实际实现的类库整体示意如下图所示Token级别关联引用说明▐自我批判和自我反思在我们设计和应用RAG时候的初衷是为当前用户的query补充相关联的高质量信息但是有时候随着事情的发展会有一些事与愿违的情况发生没有帮助降低模型幻觉反而助长了模型幻觉产生的可能这里有个认知前提我们认为知识库里面的内容是精心梳理、准备和录入的因此在使用中对这部分内容是缺乏批判和反思的但是事实证明知识库中的内容是否足够正确 以及 知识库中的内容是否比模型本身能力可返回能力更高质量这不是一个固定的结论或判断因时因事而异。批判性的看待和在此过程中增加反思对于提升RAG信赖度亦显得非常重要。CRAG首先先来介绍下带自我批判的RAG也称Corrective retrieval-augmented generation (CRAG)主要解决两个问题评估检索出来的doc的质量信息正确性对于低质量doc做过滤或者关联其他知识库或者外部搜索来补充正确的数据评估检索出来的doc的质量关联性对于doc中和query不相关的内容做裁剪整体流程示意如下CRAG流程示意图下面是来自于langchain中LLM-based的doc打分实现def grade_documents(state): Determines whether the retrieved documents are relevant to the question. Args: state (dict): The current graph state Returns: state (dict): Updates documents key with only filtered relevant documents print(---CHECK DOCUMENT RELEVANCE TO QUESTION---) question state[question] documents state[documents] # Score each doc filtered_docs [] web_search No for d in documents: score retrieval_grader.invoke( {question: question, document: d.page_content} ) grade score.binary_score if grade yes: print(---GRADE: DOCUMENT RELEVANT---) filtered_docs.append(d) else: print(---GRADE: DOCUMENT NOT RELEVANT---) web_search Yes continue return {documents: filtered_docs, question: question, web_search: web_search}# Data model class GradeDocuments(BaseModel): Binary score for relevance check on retrieved documents. binary_score: str Field( descriptionDocuments are relevant to the question, yes or no ) # LLM with function call llm ChatOpenAI(modelgpt-4o-mini, temperature0) structured_llm_grader llm.with_structured_output(GradeDocuments) # Prompt system You are a grader assessing relevance of a retrieved document to a user question. \n If the document contains keyword(s) or semantic meaning related to the question, grade it as relevant. \n Give a binary score yes or no score to indicate whether the document is relevant to the question. grade_prompt ChatPromptTemplate.from_messages( [ (system, system), (human, Retrieved document: \n\n {document} \n\n User question: {question}), ] ) retrieval_grader grade_prompt | structured_llm_graderSelf-RAGSefl-RAG带自我反思的RAG主要有以下三个职能评估检索到的doc的相关性和质量过滤掉相关性不大或低质量的doc针对当前检索到的doc判断是否需要进一步做信息检索召回这部分设计有点Agentic RAG的意思不过Agentic RAG面向的是一个全面和泛化的“知识库”包含文档知识、接口、search等评估doc的内容判断是否直接基于底层LLM做问答召回来替换该部分doc内容这里可以比较好利用和结合基模的快速发展红利Self-RAG流程示意图如下Self-RAG流程示意图▐****防护人机监管Guardrails整体防护是围绕RAG核心两个动作Retrieve和Generate划分了4个阶段配合相关的手段进行设计的具体如下Pre-retrieval阶段过滤掉不在能力范围的内的query调用对于doc进行正确性评估过滤掉错误或者过期的docPost-retrieval阶段过滤掉低于相似度阈值的doc针对检索返回的doc进行正确性验证和隐私合规性验证Pre-generate阶段过期信息过滤比如过滤掉1年前的doc关键信息设置多个引用来源交叉验证Post-generate阶段针对生成的结果做评判和反思检查结果内容相较于引用内容是否存在幻觉等Human FeedbackHuman-in-the-Loop可以发生在RAG流程中的每个核心步骤中如下示意Human feedback关联设计示意基于人的交互监督设计背后都会涉及到比较多的专家人员的人力投入因此围绕human feedback设计的初衷都是要回收关键的再训练样本数据去做针对性的工程以及模型的调优工作。Consideration在上述说的提升RAG信赖度的方式中基本上都会一定程度上增加整体架构的复杂度以及增加对于模型的调用从而会影响整体的性能和开销因此是否使用使用哪些方式和手段都需要结合实际去做权衡。▐局限性RAG在检索的时候非常依赖向量的相似度计算的值上面有提到一个相似度分值threshold的问题但是这个threshold在实际过程中不一定能够非常直观的被发现或者被决定需要结合一些评测进行调整同时该值还会随着知识库内容的变化以及知识领域的扩充也会发生变化需要定期检测和判断调整。同时本模式在实现设计中有针对检索内容的打分、质量判断、正确性判断然后基于这样的判断做一些过滤这些动作本身都有一定的成功率如果过滤策略严格那么同时也会带来另外一个负面影响就是会误杀掉一些有用的信息从而最终影响返回的结果。▐可选的其他方式如果针对该设计模式基于权衡下不考虑采用可以有另外三种方式推荐给RAG增加另外一个知识库知识的维护和组织方式都是独立的每次query面向两个知识库做信息检索召回然后针对双方结果做交叉验证提升整体信息的可靠性让过程更透明给出检索出来的信息概述以及最终得出结论的思考变相增加整体过程的解释性从而提升信赖度针对返回的结果附上引用来源同时在引用来源上增加“置信分”给到用户自己判断某些段落的信息表达的正确性和后置行为的依赖程度。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】