Sunday 的面试指南

如何设计企业知识库问答系统?文档更新、权限和评测怎么做?

🧑‍💻 面试官:给一家企业做内部知识库问答,员工可以问制度、产品文档和项目资料。你会怎么设计?

🙋‍♂️ 我:我会先把资料入库和在线问答分开:文件上传后解析、切片、索引;员工提问时带着身份检索允许访问的资料,再依据材料回答并给出处。

🧑‍💻 面试官:我昨天还能看 A 项目的报价单,今天被移出项目组。索引更新还没跑,系统会不会把报价答给我?

🙋‍♂️ 我:不能只信索引里旧的权限字段。检索结果进入模型输入前,要按当前有效权限再次核对;如果权限服务不可用,这类敏感资料宁可不答,也不能用旧缓存放行。

🧑‍💻 面试官:文档半夜换了新版,旧版还在向量库里;同时有人说问答准确率下降。你怎么知道问题在哪?

🙋‍♂️ 我:会保留文档版本、索引版本和每次回答用到的片段 ID。先查新版有没有完成索引与发布,再看检索是否选了旧版,最后看模型是不是读到了新版却答错。评测也分这几个阶段,不只算一个总分。

企业知识库最难的不是把 PDF 变成向量,而是让每次回答只使用当前用户有权看到、且对当前问题适用的版本。

面试速答(60 秒版)

企业知识库问答,我会拆成两条链路。离线链路负责文件解析、切片、元数据和索引,尤其保留来源、版本、生效时间、所属空间与权限标识;在线链路负责身份验证、权限过滤、检索、上下文组装、生成和引用。

文档更新不能直接把半成品暴露给用户。新版处理完成并校验后,再切换可检索版本;旧版何时失效,要由业务规则决定。权限变化更敏感:索引可能滞后,所以敏感资料在进入模型输入前,还要依据当前权威权限做检查。查不到权限时应拒绝使用那份材料,而不是默认放行。

评测时,我会分别看:该进索引的资料是否进了;有权用户能否搜到,没权用户是否完全看不到;检索的版本是否适用;回答是否被原文支持。用固定问答集和真实坏例子回放,再看延迟与成本。这样系统出了错,才能知道该修哪一层。

知识点详解:一条回答要过哪几道关?

资料入库:先保留“这是谁的哪一版资料”

假设某公司的《采购审批制度》更新了,旧版要求部门负责人审批,新版新增了财务复核。这是教学案例,不代表真实公司制度。

入库时,不能只抽出一堆纯文本。至少要能追溯文档 ID、版本、生效范围、来源位置,以及它属于哪个部门或项目。解析时要检查表格、附件和扫描页有没有漏;切片要保留条款的条件与例外。否则即使检索命中了“采购审批”,模型也可能拿到缺少财务复核的旧内容。

新版索引最好先作为待发布版本构建,检查片段数、关键条款和检索可见性后,再切换对外服务的版本。这里的“切换”并不是说所有资料都只保留最新版;有些历史问题本来就要查当时生效的制度。索引需要记录版本,在线查询再依据用户问题和业务规则选择适用资料。

在线问答:权限检查要早于模型看见材料

员工发起提问,应用先确认他的身份与所属范围。检索时可以利用文档权限元数据做过滤,减少无关结果,但这不等于权限问题已经解决。若员工刚被移出项目组,而索引尚未同步,旧权限仍可能留在索引里。

因此,对敏感资料,检索候选进入模型输入前还应核对当前权威权限。未通过的片段不能出现在提示词里,更不能事后只把引用隐藏掉——模型已经看见内容了。权限服务不可用时,至少对相关敏感材料采取失败关闭的策略,并记录可排查的原因。

索引保留旧权限快照仍返回候选,但当前权限闸门在模型输入前拦下已撤权的报价片段

这也提醒我们:权限不是单独的一层“UI 可见性”。缓存、检索结果、引用接口和历史会话都可能保存旧内容,需要一并纳入访问控制。具体实现随企业的权限系统而变,但“当前用户是否被允许获取这份材料”这个判断不能交给模型猜。

答案与评测:把故障定位到具体一段

员工问“这个金额的采购需要谁审批”,回答涉及两个判断:资料版本是否适用,审批链是否从条款里完整提取。在线请求最好留有可追踪记录:用户身份范围、文档/片段 ID、文档版本、最终送入模型的证据,以及最终答案。记录要脱敏并按企业保留策略管理。

评测可以准备四组问题:普通制度问答、跨版本问题、无权限问题、资料不足的问题。分别检查入库覆盖、检索命中、越权泄露、版本适用、回答正确与引用一致。假设“有权用户搜不到新版”,先排查入库和版本发布;假设“没权用户看到了报价”,这就是安全缺陷,不能被整体准确率 95% 掩盖。

面试官继续追问

查询时已经按索引中的 ACL 过滤了,还需要再查权限吗?

要看权限元数据是否能及时、可靠地同步。若撤权可能早于索引更新,索引里的 ACL 就是旧快照。对高敏感资料,需要权威权限再核对或等价的强一致策略;不能仅凭“索引里允许”就放行。

新版文档入库以后,可以立刻删除旧版吗?

不一定。要看旧版是否还用于历史订单、合同或审计问题。更重要的是建立“何时适用”的明确规则,避免新旧两版都在却由模型随意挑选。

系统回答错误,怎么判断是检索问题还是模型问题?

对照同一次请求:源文档和版本、检索候选、最终输入、答案及引用。正确条款没进入候选,查解析/索引/召回;候选有而最终输入没了,查过滤与组装;完整证据已进入却答反,查生成与结论校验。

面试速记卡

  • 两条链路:离线入库建索引,在线鉴权、检索、生成与引用。
  • 文档版本:记录来源和生效范围,新版校验后再发布。
  • 权限底线:敏感片段进入模型前核对当前权限,撤权不能等索引慢慢更新。
  • 分层评测:入库、检索、版本、越权、回答和引用分别检查。
  • 故障定位:保留片段 ID、版本、最终证据和答案,能回放一次错答。
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历