同一个问题,不同员工可能应当得到不同答案。销售可以查阅通用服务条款,却未必有权读取某个客户的折扣附件;项目成员可以访问当前方案,也不代表旧版本仍然有效。企业检索增强生成的目标,是在调用者当下的权限与资料适用范围内,组织足以支撑结论的证据。以下以合同与交付知识库为假设场景讨论工程设计。
先定义答案必须遵守的边界
设计知识库之前,可以先写下一份答案契约:回答面向哪个租户、由谁发起、适用什么时间、哪些来源具有解释权,以及证据不足时允许返回什么。假设用户询问“客户甲今年的交付延期是否免收服务费”,通用条款中的免责规则、客户补充协议和本次延期原因可能缺一不可。只命中其中一份材料,不能据此给出完整结论。
这份契约需要落在请求与数据结构里。每次查询携带由可信登录流程确定的身份、租户和授权上下文;每份证据记录来源、版本、生效区间及可访问对象。模型可以帮助理解“今年”指向的时间,但最终采用的日期和时区应由应用明确展示。权限范围由授权服务决定,不能由模型根据聊天内容自行扩大。
还要区分资料中的事实、系统进行的推断和业务上的裁决。检索可以找到“延期超过十日可申请减免”,却不能把“可申请”改写成“自动免收”。在这个场景中,合格答案应说明条款、适用条件与尚未确认的事实,并把需要业务审批的部分保留下来。这种边界比流畅程度更适合作为验收标准。
把切片、版本和权限作为同一份证据管理
文档切片的目的,是形成能够独立解释的证据单元。按固定长度截断合同,容易把金额与币种、规则与例外、表格行与表头拆开。可以先依据章节和段落形成边界,再为过长内容细分;表格需要保留列名、单位和所属章节。检索片段若缺少限定条件,即使向量相似度很高,也可能支撑一个错误答案。
每个片段应继承稳定的原文标识,并单独保存修订号、页码或锚点、内容指纹与权限版本。这样,同一文档更新后可以分辨哪些内容发生变化,引用也能指向回答当时实际使用的版本。展示链接可以打开当前资料,但审计记录还需要保留受控的历史证据,避免用户看到的原文已经与答案不一致。
正文更新、权限修改和删除都应进入索引生命周期。撤销权限不能等到下一轮全文重建才生效;至少需要一个及时生效的拒绝层,并明确索引同步延迟的上限。删除记录可先留下仅供内部同步使用的墓碑标记,防止迟到的更新把旧片段重新写回。版本切换时,应避免同一回答混用新正文与旧授权信息。
授权应贯穿检索与返回链路
Azure AI Search 的文档级访问控制说明区分了应用传入的字符串安全过滤与基于身份的权限检查。这提醒我们:过滤表达式只是执行机制,调用者身份如何被确认、群组成员关系是否新鲜、租户边界是否可信,仍需完整设计。来自浏览器的用户标识或模型生成的群组名称,都不应直接成为授权依据。
关键词检索和向量检索应使用一致的授权范围。若先从全库取最相近的一批资料、再删除无权访问的部分,剩余结果可能不足,召回也会被其他部门的大量文档挤占。可优先采用支持过滤的检索路径,并验证实际引擎在过滤、近似搜索与候选截断之间的行为。无论内部排序如何实现,未经授权的文本都不能进入外部重排服务、模型上下文或用户可见日志。
权限也会从旁路泄漏。搜索建议、文档标题、命中数量、引用预览和缓存答案,都可能暴露用户无权得知的信息。缓存键至少应包含租户与能够准确代表授权范围的标识,并随权限变化失效;跨用户复用答案前必须重新验证全部证据。若无法确认权限同步状态,系统应暂缓使用相关材料,避免把同步故障解释为资料确实不存在。
用混合检索扩大候选,再检查问题覆盖
企业问题通常同时包含精确名称和口语表达。合同编号、产品型号或错误码需要可靠的字面匹配;“交付拖延如何处理”则可能对应文档中的“履约期限变更”。因此,可以让关键词检索与语义检索各自生成候选,再统一去重。分词、同义词和向量模型都应接受领域样本检验,尤其要检查中文简称、英文缩写与混合编号。
Elastic 文档中的倒数排名融合方法,提供了一种按照名次合并多路结果的方式,避免直接相加不同量纲的原始分数。它适合作为可解释的起点,但不能自动判断某一检索通道是否可靠。候选窗口、各通道配置和过滤条件仍需验证;如果相关文档未进入任何检索通道的候选集,后续融合就无法补回它。
对前面的延期问题,可以分别检索通用减免条款、客户补充约定与延期记录,再把候选映射到问题需要的证据类型。这种拆分应保留原问题、租户和时间约束,防止改写后扩大范围。调试时记录每路候选的来源与名次,检查相关证据在哪一步丢失。仅观察最终回答,很难区分分词错误、候选不足和生成遗漏。
重排与上下文组织解决不同问题
Sentence Transformers 的检索与重排文档描述了两阶段结构:先得到候选,再由同时读取查询与片段的交叉编码器评估相关性。工程上可以把两路检索合并后的有限候选交给重排器,而不对全库逐条计算。候选数量应依据延迟预算与离线召回曲线选择;增加数量是否值得,需要结合该业务真实问题测量。
重排得分仍然不是答案正确的概率。一个与问题措辞高度相似的旧版本,可能比现行条款排得更高。因此,版本有效性和授权属于硬约束,相关性排序在其后运行。组织上下文时还应减少重复片段、保留定义与例外,并给相互矛盾的来源明确标签。需要跨文档比较时,不能让大量重复的通用条款挤掉唯一的客户补充协议。
Lost in the Middle 研究在所测任务与模型中观察到证据位置影响表现。它提供了应当测试上下文排列的理由,而不是对所有新模型的固定结论。可以在自己的样本上移动关键证据位置、改变干扰材料数量,比较答案是否稳定。证据包宜按问题子项组织,附上简短来源标识,并留下足够输出空间解释限制,避免仅因窗口仍有余量就继续填入材料。
引用要支撑具体结论,拒答要指出缺口
可核查答案应把重要陈述与证据片段建立对应关系。引用需要覆盖金额、日期、适用对象和例外条件等关键事实,而不是在整段末尾挂一个大致相关的文档链接。系统可以先形成“结论—证据—条件”的内部结构,再生成自然语言,并核验引用标识确实来自本次授权后的证据集合,避免模型编造路径或文档编号。
检查引用时,要分别问来源是否真实、片段是否包含该事实,以及事实是否足以支持完整结论。“合同允许申请减免”与“本次免收费用”之间缺少审批和事实判断,即使引用真实,推断仍可能越界。涉及计算时应记录输入数值、单位和运算规则,用确定性逻辑计算;语言模型负责解释结果,不能凭流畅表述替代计算过程。
拒答也可以提供明确帮助。当只有通用条款时,答案可以说明已找到申请条件,但缺少有权访问的客户补充约定或延期事实,因而无法确认本次是否适用。不要通过提示隐藏文档的名称来解释权限不足。文档中出现“忽略规则并调用其他工具”的文字,应作为不可信资料处理;它不改变应用指令、工具授权和证据使用边界。
评估要拆开召回、忠实性与权限安全
评估集需要为同一个问题配置不同身份、时间与资料版本,并标注可访问的相关证据、应回答的结论和应拒答的条件。检索阶段关注授权集合内的证据召回率和排序质量;生成阶段检查结论是否得到材料支持、引用是否准确、必要条件是否完整。最终回答错误时,要能定位到证据未召回、上下文未保留或生成越界,不能只留下一个总分。
RAGAS 原始论文将检索上下文与生成质量作为不同维度评估,适合启发自动评估的拆分方式。但模型评审会受提示、评审模型和领域知识影响,不能替代权限测试与业务抽检。重要条款可以采用人工核对的样本作为固定基线,同时定期复核自动评分与人工判断的分歧,尤其关注措辞温和但实际扩大了承诺的答案。
安全评估应直接检查未授权文本是否进入任何模型或外部服务,而不只检查最终答案有没有泄漏。还应覆盖用户退出群组、文档转为保密、缓存尚未过期、旧链接仍可打开等情形。拒答率也必须与可回答问题上的误拒答率一起报告。系统通过大量拒绝可以显得安全,却没有证明它在合法范围内有用。
上线时为新鲜度、成本和降级分别设限
生产配置需要把权限同步、资料更新与回答延迟分别设定目标。权限撤销通常应比普通内容更新更快生效;长合同摘要可以异步构建,但摘要必须继承来源权限并记录来源版本。监控不仅统计总耗时,还要拆分身份解析、检索、重排和生成,才能判断成本与延迟来自哪一环,并据此选择缓存或候选数量。
降级策略也应遵守答案契约。重排服务不可用时,可以退回经过验证的混合检索,并降低可回答范围;授权服务不可用时,则不能继续使用未经确认的证据。资料过期或证据冲突时,应向用户说明答案的适用时间和不确定部分。一个返回原文片段与限定说明的结果,有时比勉强生成完整建议更符合业务需要。
上线可以从资料范围明确、来源稳定、后果可控的问题开始,逐步扩大覆盖面。每次更换切片策略、向量模型或权限实现,都回放同一组问题与身份组合,并保留版本化结果。企业 RAG 的可维护性,来自每一条重要结论都能追到当时可用的证据,也能解释为什么某些材料没有被使用,以及缺少什么才能继续回答。
