你可能见过这种回答“这项费用可以报销。来源员工手册.pdf。”乍一看它比没有来源的回答可靠很多。但点开文件以后你可能发现员工手册有几十页相关章节只讲报销范围没有说这项费用一定可以报销。文件名是真的结论却不一定由文件支持。如果你还不熟悉 RAG可以先把它理解成一套“先查资料再让大模型回答”的系统。用户提问后系统先从知识库里找出几段相关原文再把这些原文交给大模型。引用要解决的问题就是让用户知道答案里的每个事实究竟来自哪一段资料。问题就在这里。系统搜到了相关文件不等于模型说出的每句话都被文件支持。就像一篇文章提到了报销制度也不能自动证明某一笔费用符合报销条件。这道 RAG 面试题很容易被一句“让模型标引用”带过但真正往下问会遇到下面这个问题RAG 的引用怎样做到可以核验为什么答案后面有一个来源编号还不够面试官继续追问时通常会问到四件事引用编号由谁生成模型能不能自己编编号指向真实原文为什么仍可能是错引一句话需要两段证据时引用怎样表示用户点开引用时怎样直接看到支持结论的那段原文先把这道题答到 30 秒面试时可以先这样说可核验引用要从资料入库时开始准备。文档被切成小段以后每一段都要保留文件名、章节、页码和原文位置。回答时一种可能的实现方式是由服务端给本轮找到的真实片段编号模型只能使用这些编号。生成结束后还要检查所引原文是否真的支持对应句子。最后把编号映射回具体章节和原文让用户能够亲自核对。记住三个问题就够了原文在哪里编号能不能对应真实片段这段原文到底支不支持结论。引用为什么不是生成阶段临时加一下引用链的起点在文档解析不能等大模型写完答案以后再临时补一个“来源”。PDF 解析时除了抽出纯文本还要保留页面与位置信息。文档通常会被切成许多便于检索的小片段工程里常把这样的片段叫作 Chunk。每个 Chunk 进入知识库时都应该能回答它来自哪个文档、哪一页、哪个章节以及原文在页面上的位置。随片段一起保存的来源信息常被叫作 metadata也就是这段文字的“来源标签”。doc_id是文档的标识chunk_id是片段的标识kb_id表示它属于哪个知识库。章节标题和章节路径帮助用户理解上下文。页码、幻灯片编号、视频时间段负责把用户带回原位置。材料里还出现了 bbox它表示一段文字在页面上的矩形坐标适合在 PDF 里高亮原文。如果解析时只保存了纯文本页码和位置已经丢失生成阶段通常无法可靠补回。模型可以猜一个页码却不能把猜测变成证据。检索返回 Chunk 时不应只有内容和相似度分数还要一起带回文档 ID、知识库 ID 和原始位置。引用系统应该沿用这条已有的数据链而不是让模型凭语言能力重新描述来源。可核验引用与普通文件名引用的区别文件名只能告诉用户大概来自哪里可核验引用还要定位到当时用于回答的具体证据。所以回答末尾写“来源某某.pdf”最多完成了文档级提示还没有完成陈述级归因。真正需要回答的是这句话由哪一段原文支持点击后看到的原文是否就是模型当时读到的内容。一条引用是怎样生成的把 Prompt 引用和后处理归因组合起来可以整理成下面六步。这里描述的是一套实现思路不是说模型天然会做好引用。第一步解析和切分时记录来源 metadata。第二步检索从指定知识库中找出与问题相关的真实片段并把片段内容和来源信息一起返回。第三步一种可能的实现方式是由服务端给本轮进入上下文的片段分配编号比如[1]、[2]、[3]。第四步Prompt也就是发给模型的任务说明包含“编号、原文、必要的来源信息”并要求事实陈述标注对应编号。第五步生成后检查模型用到的编号是否真实存在再检查陈述和证据之间的支持关系。第六步服务端把编号映射成文档标题、章节、页码、原文摘录和可跳转位置。一条引用从解析到用户点击的完整链路编号负责连接答案与本轮证据文档标识、片段标识和原位置负责把用户带回资料。这里有一个关键边界模型使用的编号必须来自服务端提供的证据集合。假设本轮只给模型三段原文编号就是[1]到[3]模型却输出了[7]。服务端不能因为格式看起来正确就接受它。模型可能漏标或标错文档编号编号映射本身也得检查。同样模型不应该凭记忆写出文件名。即使文件名碰巧存在也无法证明它是本轮检索结果更无法证明模型依据的是该文件。受控编号先解决“引用对象是否真实存在”但还没有解决“这段原文是否支持这句话”。用户点开 [1] 时后台究竟要拿出什么下面这段不是要背的代码。它更像一张电子证据卡记录了一句话和原文之间的对应关系{ sentence: 核辐射不在保障范围内。, source: { doc_title: XX意外险条款, section_path: 第3条 责任免除 (2), page_num: 5, original_text: 责任免除2核辐射、核爆炸、核污染…… } }这几个字段分别回答四个很朴素的问题。sentence告诉系统现在核验的是答案里的哪一句。doc_title告诉用户证据来自哪份资料。section_path和page_num负责定位避免用户打开几十页文件以后自己从头找。original_text则把真正支持结论的原文摘出来用户可以直接比较答案有没有说过头。只返回一个文件名不够。“文件谈到了核辐射”和“文件明确把核辐射列为责任免除”是两回事。前者只是主题相关后者才可能支持结论。章节和页码也不能少。同一份文档里可能同时出现适用规则、例外条件和责任免除。没有位置用户很难判断模型究竟读了哪一段。引用的价值不是多一个蓝色编号而是这个编号能打开一段可比较、可复查的原文。编号是真的为什么结论仍可能错下面只是一个教学问题不对应真实客户或项目事件。问题是“核辐射是否在保障范围内”候选一讲的是保险责任候选二讲的是责任免除。模型回答“核辐射不在保障范围内”却把候选一标成来源。编号一确实存在原文也确实与保险范围有关但它没有支持“核辐射不在保障范围”这条结论。这就是引用有效性和证据支持性的区别。前者检查编号能不能映射到真实候选后者检查原文能不能推出对应陈述。更严格一点把答案拆成可以核验的事实句。对每句话分别检查引用的原文是否包含关键实体时间、数字和否定关系是否一致结论是否只是主题相关还是确实能由证据推出。这里说的“事实句”也不能只按句号机械切。一句话里可能塞了两个独立结论例如“通常可以申请线上办理时不需要纸质材料”。前半句讲申请资格后半句讲办理材料依据可能来自不同章节。核验时要把它拆成两个能够分别判断真假的主张再给每个主张找证据。反过来纯粹用于衔接语气的句子未必需要单独引用。引用系统真正要盯住的是数字、日期、适用对象、条件、禁止性表述和明确结论。这样既不会让答案每几个字就挂一个编号也不会把关键事实藏在一整段共享引用后面。规则可以先拦一批明显错误。例如答案里出现某个数字引用原文中却没有这个数字答案说“禁止”原文只说“建议”答案说“现在可以申请”原文讲的却是过去某个时间段的流程。剩下的语义关系可以用 NLI 或另一个模型辅助判断。NLI 的中文意思是自然语言推理它把“原文”和“答案句”放在一起判断两者是支持、矛盾还是无法判断。这三个结果很好理解。原文明确写“核辐射属于责任免除”答案说“核辐射不在保障范围内”可以判为支持。原文说“可以申请”答案说“禁止申请”属于矛盾。原文只讲产品背景没有回答能不能申请就应该判为无法判断。但自动判断不是最终真值。NLI 自己也可能出错仍需要用人工标注样本校准。材料越长、例外越多、领域术语越密集越不能把一次模型判断当成最终裁决。一条事实还可能需要多段证据。如果问题要比较两个方案分别来自两份文档模型只引用其中一份就无法支持完整结论。如果结论需要先找到规则再结合例外条件两段原文都应该进入引用。引用检查的三层判断矩阵先检查编号是否存在再检查原文是否支持陈述最后检查回答所需证据是否完整。“一句话挂一个来源”不是硬规则。真正的规则是这句话包含的事实需要哪些证据就引用哪些证据。Prompt 引用和后处理归因怎么选Prompt 引用最容易落地。系统把检索内容编号要求模型在事实句后写出编号。好处是模型生成时就知道证据边界回答和引用可以一起组织用户读起来也自然。它的问题同样明显。模型可能忘记标注可能把整段话只挂一个编号也可能给语义相近但不支持结论的片段贴上引用。后处理归因走另一条路。模型先生成答案服务端把答案拆成句子再从本轮候选中寻找每句话的支持证据。一种实用的组合是先用句子相似度缩小候选再用 NLI 或另一个核验模型判断“证据是否支持这条陈述”。相似度负责找相关内容NLI 负责区分支持、矛盾与无法判断两者的角色不同。后处理的优点是控制更细可以单独标出没有证据支持的句子。缺点是增加计算成本而且如果检索阶段根本没有找到正确证据后处理也无能为力。实际设计不必二选一。可以先让模型按已有编号生成再对生成结果逐句检查。这样做会多一次拆句、匹配和判断成本与延迟都会增加但能够把“编号写对了”和“证据真的支持”分开处理。两种方法的差别可以直接记成下面这张表方法怎么做优点局限Prompt 引用模型生成答案时同时写编号实现直接答案和引用一起组织可能漏标、标错或把整段话只挂一个来源后处理归因先生成再逐句寻找支持证据能单独发现没有依据的句子增加计算成本检索错了也救不回来组合方式先按编号生成再检查事实句同时利用两种方法的优点链路更长需要准备人工样本验收排查错误时至少得能看到最终答案、检索到的候选片段和引用关系。否则答案错了以后仅凭一个[1]很难分清是模型标错、映射错还是一开始就没有找回正确原文。四种常见错误应该怎样定位第一种只给文件名不给原位置用户看到“制度手册.pdf”却不知道具体在第几页、哪个章节。先检查 Chunk metadata 是否保留页码、章节和位置。如果这些信息在解析阶段就没有写入索引生成端无法修复。解决重点在入库链路而不是继续改 Prompt。第二种编号是真的但挂错了原文模型使用了服务端提供的[1]可是[1]讲的是保险责任真正支持结论的责任免除条款在[2]。这时编号没有编造错的是编号和事实句之间的关系。要把答案拆成事实句再比较每句话与各候选片段。只检查“编号存在”会放过这种错误。第三种否定关系被引用错原文写“以下情况不适用”答案却说“以下情况适用”同时仍然引用这段原文。词面高度重合会让相似度看起来很好但结论方向相反。数字、否定词、时间和条件词需要单独检查不能只靠句向量相似度。第四种一条结论需要两段证据却只引了一段答案说“通常可以申请但线上办理时不需要纸质材料”。前半句来自办理规则后半句来自线上办理的例外说明。如果只引用通用规则整个结论就没有被完整支持。这类问题不能靠“每句话最多一个引用”的格式限制解决。先把结论拆成若干事实要点再看每个要点对应的证据是否齐全。缺证据时要么补齐引用要么收窄答案不要把部分依据包装成完整结论。这四类错误分别发生在来源定位、编号归因、语义方向和证据完整性。它们不可能靠一句统一 Prompt 全部解决。引用展示怎样避免制造新的误解后端引用关系正确前端展示仍然可能误导用户。如果页面只展示一个醒目的文件名却把真正支持结论的原文折叠得很深用户会把“来自这个文件”误认为“这句话已经被文件证明”。更清楚的展示应该让答案中的编号、来源卡片和原文片段一一对应。来源卡片至少可以显示文档标题、章节路径、页码或时间位置以及与答案直接相关的短原文。用户点击后再打开完整文档并定位到原位置而不是只跳到文件首页。当一句话有多个来源时界面要显示多个编号并说明它们分别支持哪一部分。把两个来源合成一个模糊的“综合资料”会让用户无法核验推理链。展示层最重要的不是做一个好看的“来源”标签而是把答案编号、来源卡片和原文片段对应起来。一份可核验的来源卡片至少应该包含文档标题、章节路径、页码、原文摘录和查看原文入口。来源卡片里的摘录不能只截一个命中的关键词。原文如果写的是“以下情况不适用”只露出“不适用”前后的几个字用户仍然看不懂对象和条件。更合适的做法是展示一句能够独立理解的原文并允许继续打开完整上下文。表格资料还要保留表头和行列关系。只展示一个数值用户并不知道它属于哪个项目、哪个时间或哪种条件。大表格被切成多个 Chunk 时每段都要带上表头。否则数值虽然来自原表也可能失去含义。有个很实用的验收方法让测试人员不看模型的推理过程只看答案句、引用卡片和打开后的原文。如果他能判断结论有没有说过头这条引用才真正帮到了用户。如果仍要从整份文件里重新搜索引用只是把核验工作推回给了人。怎么证明引用真的可靠评测集不能只写一个参考答案还要标出每个事实要点对应的正确证据。否则系统回答错了团队只能看到“答案不对”却不知道是没有检索到原文、模型引用错了片段还是证据本来就不完整。一条引用评测样本至少要有用户问题、参考答案、支持证据和干扰证据。支持证据是能够推出结论的原文干扰证据则是主题很像、关键词很多但不能支持结论的片段。没有干扰证据测出来的只是系统会不会复制答案不是它会不会识别可靠依据。至少准备四类样本。第一类单句由单段原文直接支持。第二类一句话需要两段或两份文档共同支持。第三类候选主题相关但不支持结论用来测试错引。第四类答案包含数字、否定、时间和适用范围用来测试细粒度一致性。评测时不要只统计“多少答案带了引用”。至少要分别看四件事。第一引用覆盖。答案里的事实陈述是否都给出了依据。第二证据关联。引用的原文是否真的支持这句话而不是只和主题相近。第三证据充分。一个复杂结论需要两段材料时系统有没有只找回其中一段。第四事实一致。数字、否定、时间、对象和适用条件有没有被模型改写错。举个最简单的验收例子。参考答案说“核辐射属于责任免除”标注证据是责任免除条款。测试时可以故意加入一段“保险责任”作为干扰项。如果系统引用责任免除条款说明证据方向正确如果引用保险责任说明它只抓住了“保险”这个主题没有理解结论。再看多证据题。问题要求比较 A、B 两个方案参考答案中的两部分分别来自两份材料。系统只引 A 的资料即使语言很流畅也只能算部分支持。这个样本能测出系统是否把“找到一条相关证据”误当成“证据已经完整”。自动核验模型的结果要和人工判断对照。模型把某句话判为“有支持”不能直接当成系统已经正确。尤其当证据很长、存在例外条款或需要跨段推理时人工抽检不可省略。人工样本也不能只挑最简单的正例。至少要混入主题相近的错误片段、只支持一半结论的片段、包含相反否定关系的片段以及需要两段证据才能回答的问题。系统能在这些样本上拒绝错引才说明它不是看到关键词就随手挂来源。引用系统上线前的核验清单可靠引用既要检查答案和证据也要检查编号、原文定位和多段证据是否齐全。面试官继续追问怎么接让模型只回答检索内容是否就不需要引用核验仍然需要。模型可能错误理解原文、漏掉例外条件或者给正确文件贴上错误结论。内容受限不等于陈述和证据天然对齐。为什么不直接让模型输出文件名和页码模型不能凭空知道可靠位置。文件名、页码和坐标必须来自解析与检索 metadata服务端再完成编号映射。否则格式正确也可能是编出来的。相似度高能不能说明原文支持答案不能。相似度只能说明主题接近。否定关系、数字、条件和多段证据都可能在高相似度下出错需要更细的支持关系判断。NLI 能不能彻底解决错引不能。NLI 自身也会误判而且长文档、领域术语和多跳证据会增加难度。它适合作为辅助筛查仍要经过本领域人工样本校准。引用率很高能不能说明系统可靠不能。引用率只说明答案里出现了多少编号不能说明编号是否指向正确证据。一个系统可以做到每句话后面都有[1]同时把所有句子都挂到同一段无关原文。必须把覆盖、关联、充分和事实一致分开评估。最后把答案完整说一遍到了面试现场可以沿着“来源数据、编号控制、陈述核验、评测验收”这四步展开RAG 的引用不是在答案末尾加一个文件名而是一条从解析到展示的数据链。入库时每个 Chunk 要保留文档 ID、Chunk ID、章节、页码或原始坐标。一种可能的实现方式是由服务端给本轮证据分配编号模型按这些编号标注来源生成后再映射回具体章节和原文位置。我会把引用检查分成三层。第一层检查编号是否真的出现在本轮上下文第二层把答案拆成事实句判断所引原文是否支持对应陈述第三层检查完整答案需要的证据是否都已覆盖。数字、否定、时间和适用范围会做更严格核验NLI 或另一个模型只能做辅助仍要用人工样本校准。评测不能只看有没有引用还要分别检查引用覆盖、证据关联、证据充分和事实一致并实际打开来源卡片核对原文。这样引用才是可核验链路而不是看起来专业的装饰。这道题真正考的不是你会不会在 Prompt 里写“请标注来源”。最后应能回答三个问题来源信息从哪里来结论为什么由这段原文支持以及用户怎样回到原文亲自复查。学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%免费】