Skip to content

AI 知识库项目:内部系统与客服增强检索篇

主题导航: 返回项目主文档RAG 检索优化对应专项面试题

目录

1. 面试结论与证据边界

1.1 30 秒面试结论

公司内部与客服知识库最难的不是把文档做成向量,而是让系统同时理解业务专有名词、当前对象状态、规则适用条件和用户权限。我的方案会把术语词典、实体别名、状态机、规则表和权威文档构造成可版本化的业务语义层,查询时先识别意图与实体,再做带 ACL 和业务条件的混合召回、重排、规则校验与引用回答;涉及退款、审批、额度等动作时只给建议并调用确定性业务接口确认。效果要用检索质量、客服过程指标和最终业务结果分层验证,不能只看回答是否流畅。

1.2 面试官为什么问

这个主题同时考察:

  • 是否理解企业知识不是一堆静态文档,而是术语、数据、流程、规则和权限的组合;
  • 是否能区分“检索答案”和“执行业务动作”;
  • 是否会沿 Query、ACL、候选、重排、上下文和生成逐层排障;
  • 是否能把 Recall、一次解决率、人工成本和客户风险建立证据关系;
  • 是否能讲出真实业务约束,而不是只说“换更好的 Embedding”。

1.3 证据边界

事实边界: 当前仓库能证明的是结构化知识治理与 RAG 设计能力,不能证明存在某公司的内部系统、客服工单、线上接口或业务收益。本分册中的售后案例是贴近真实流程的业务演练,字段、数字和规则仅用于教学;要升级为真实经历,必须用脱敏需求、规则配置、接口、工单、Trace、实验报表和个人贡献记录替换。

2. 业务问题:为什么普通 RAG 不够

内部员工和客服通常不会按制度原文提问。他们会说:“这单是不是锁单了”“保护期过了还能捞回吗”“用户催得急,能不能先退”“这个客户算沉默还是流失”。这些词可能只存在于产品页面、培训话术或团队口头约定中,而且同一个词会随部门、产品线和版本变化。

普通“文档切块 + 向量 Top-k + LLM”容易在五处失败:

  1. 术语错配:用户说简称、旧称或口语,文档写正式名;
  2. 实体混淆:订单号、合同号、客户 ID、套餐名和错误码形态相近;
  3. 状态缺失:文档说明规则,但当前订单究竟是已支付、已发货还是已签收,需要业务系统实时数据;
  4. 条件遗漏:规则受渠道、地区、商品类型、时间窗口、客户等级和版本影响;
  5. 动作越权:回答“可以退款”不等于系统有权执行退款,也不等于当前对象满足全部条件。

因此,企业增强检索的目标不是“召回更像的问题”,而是:

text
在正确身份、当前状态和有效规则版本下,找到能支持当前业务判断的证据,
并把确定性判断、模型解释和人工审批的边界说清楚。

2.1 业务角色与价值

角色原流程问题希望得到的结果风险护栏
一线客服在多个后台、群公告和培训文档之间切换快速得到带来源的解释与下一步不越权承诺、不泄露内部信息
业务运营新规则发布后口径传播慢规则版本可追踪、问题能回流新旧规则不混用
产品/研发同一问题被重复咨询识别高频疑问和流程缺陷不能把产品缺陷伪装成知识问题
质检/合规人工抽检覆盖有限高风险回答可审计、可复放敏感业务默认人工确认
客户不关心内部术语,只关心问题是否解决清晰、准确、一致的答复不暴露内部策略、个人数据和系统提示词

3. 小白场景、专业映射与类比边界

想象一家大型医院。病人说“我上次那个检查还没出”,导诊员不能只在规章中搜索“检查”两个字。她先确认病人身份和检查单号,知道“那个检查”对应核磁共振,再看当前状态是已预约、已检查还是报告审核中,最后依据当前科室规则告诉病人去哪里查、是否需要人工处理。

映射到企业知识库:病人口语对应原始 Query,检查别名对应业务术语词典,检查单号对应实体解析,报告状态对应内部业务接口,科室规则对应带版本的规则库,导诊权限对应 ACL,最终解释对应 RAG 回答,真正改预约或退款则对应确定性业务服务。

这个类比解释了“术语 + 实体 + 状态 + 规则 + 权限”缺一不可;但它没有覆盖概率检索、多个规则冲突、缓存过期、提示注入、并发和模型幻觉,生产系统仍需 Trace、拒答、审批和回归集。

4. 架构与技术调用流程

4.1 图:架构|内部系统、业务语义层与客服知识库

替代文本: 权威制度、产品文档、客服工单和业务配置进入离线治理链,形成文档索引、术语图谱与规则快照;在线客服请求经身份和意图识别后读取业务对象状态,执行带权限和版本条件的混合检索,再由规则校验与 LLM 生成带引用建议。真正业务动作只通过确定性接口和审批执行,观测系统记录全链证据。

图表加载中…

读图结论: 文档索引只能提供知识证据,当前业务状态来自可信内部接口,真正动作交给确定性系统;LLM 不能同时充当事实源、规则引擎和执行器。

4.2 图:技术调用流程|一次带业务状态的客服问答

替代文本: 客服提交用户问题和订单引用后,编排器先验证身份、解析术语与实体,再读取当前订单状态,并以状态、渠道、地区和规则版本过滤混合检索候选;证据一致且权限允许时生成带引用建议,证据冲突、状态缺失或动作高风险时转人工或调用审批接口。

图表加载中…

读图结论: 一次可靠客服回答必须同时携带身份、实时状态、有效规则和证据版本;任一项不确定时,应降低自动化等级而不是让模型补猜。

5. 专有名词与业务逻辑增强方案

5.1 业务语义层的数据契约

json
{
  "term_id": "TERM_AFTERSALE_LOCKED",
  "canonical_name": "售后锁定",
  "aliases": ["锁单", "冻结单", "售后处理中"],
  "scope": {"product_line": "example", "department": "customer_service"},
  "effective_from": "示例时间",
  "effective_to": null,
  "definition_source": "policy://example/version",
  "related_entities": ["order_id", "after_sale_id"],
  "allowed_audiences": ["internal_cs"],
  "external_wording": "订单正在处理,请勿展示内部状态名"
}

这不是简单同义词表。每个术语还要绑定适用范围、有效期、来源、实体类型、内部可见性和面向客户的安全说法。旧称不能直接删除,否则历史工单无法检索;应保留别名并标记有效期。

5.2 业务规则不能只藏在文档段落里

适合确定性判断的条件应结构化,例如:

yaml
rule_id: RULE_REFUND_EXAMPLE
version: example-v1
applies_when:
  channel: [example-channel]
  order_state: [paid, shipped]
  product_type: [example-type]
requires:
  - current_order_snapshot
  - policy_document_version
decision:
  explain_only: true
  execution_service: after_sale_api
fallback: manual_review

LLM 可解释“为什么”和生成客服话术,但规则是否满足应由规则服务或业务 API 判断。若规则复杂度低且变化少,可先使用版本化配置;跨多系统、有优先级和冲突解析时,再评估规则引擎。

5.3 查询增强链路

text
原始问题
-> 保留订单号、错误码、套餐名等精确 Token
-> 识别意图、实体和内部术语
-> 读取当前业务对象状态
-> 生成受约束的规范化 Query,不覆盖原问题
-> ACL、产品线、渠道、地区、状态、有效期过滤
-> BM25 + Dense 候选召回
-> 业务实体一致性与规则适用性重排
-> k_context 内构造事实、规则、例外和引用
-> 规则校验
-> 回复、澄清、拒答或人工处理

必须分别记录 raw_querynormalized_termsentity_idsbusiness_snapshot_versionfinal_context。否则检索错了时,只能看到模型最终回答,无法判断是术语规范化、实时状态还是规则版本出了问题。

6. 技术点清单与横向选型

本分册沿用主文档 TP-01~TP-03,并补充业务增强层的 TP-04~TP-05

6.1 技术清单

技术点 ID技术点/环节类型采用方案链路职责版本/证据边界
TP-04业务语义层数据模型/规则组件版本化术语、实体、状态机和规则快照把口语问题映射为带适用条件的业务语义设计方案;需由真实术语表、规则配置和历史工单验证
TP-05客服问答与动作边界编排/API/模型组件只读业务 API + RAG 引用回答 + 确定性动作 API/人工审批区分解释、建议、查询和执行,防止模型越权设计方案;接口权限、幂等和审批需实现及故障测试

6.2 横向选型

技术点 ID候选方案优点缺点/代价适用场景不适用场景选择结论与依据
TP-04仅 Prompt 中维护术语说明启动快、改动小难版本化、易超长、不能稳定过滤和审计少量稳定术语的原型多部门、多版本、权限敏感业务只作为 MVP;术语冲突或变更频繁时迁出 Prompt
TP-04版本化术语/实体/规则语义层可审计、可过滤、可与业务状态对齐建模、运营和同步成本较高企业内部与客服生产场景一次性小文档问答生产参考方案;收益由术语集 Recall、规则适用准确率和运营成本共同验证
TP-05LLM 直接回答并调用动作工具交互自然、链路短幻觉、越权、重复执行和错误承诺风险高低风险沙箱、强审批后的草案退款、审批、额度、账户等高风险动作不作为默认生产路径
TP-05RAG 建议 + 确定性 API/人工审批权限、幂等、审计和回滚边界清楚需要更多接口和状态编排企业客服、高风险动作纯公开 FAQ 且无业务动作默认方案;低风险且长期回归稳定后逐步提高自动化等级

7. 具体业务经历演练:售后客服判断

案例类型:业务演练。 以下故事模拟真实客服现场,但不是用户或本仓库已发生的项目经历。示例中的“售后锁定、退款窗口和订单状态”都不代表任何真实公司的制度。

7.1 业务背景与冲突

客户问:“这单已经锁了,用户很急,今天能不能先退?”客服在知识库里能搜到三份材料:旧培训文档写“锁单后转人工”,新制度写“部分渠道可在指定状态发起售后”,产品公告又说明某类商品暂不支持自动退款。订单后台同时显示“已发货”,但客服口语中的“锁了”可能指风控锁定,也可能指售后处理中。

旧方案若只做向量 Top-k,很可能召回包含“锁单”和“退款”的旧培训文档,模型再拼出一个看似合理的“可以退款”。真实难点不是相似度,而是先消除术语歧义,再取得当前订单状态,最后确定哪一版规则对该渠道和商品生效。

7.2 处理过程

  1. 系统识别“这单”为待补充的 order_id,没有 ID 时先向客服请求;
  2. “锁了”映射出多个候选术语,不直接替用户选定;
  3. 只读 API 返回脱敏订单快照、渠道、商品类型、发货和售后状态;
  4. 术语候选与真实状态交叉验证,排除不匹配含义;
  5. 检索时限定当前产品线、渠道、地区、有效时间和客服权限;
  6. 重排优先当前规则及其例外,旧培训文档只作为历史证据,不进入最终回答;
  7. 规则服务返回“解释、允许发起、必须审批或禁止”之一;
  8. LLM 生成内部处理建议和对客安全话术,并附规则版本;
  9. 若要真正退款,客服确认后调用带幂等键的售后 API,不由 LLM 直接修改订单。

7.3 业务问题与技术点映射

业务问题 ID业务问题目标与护栏对应技术点证据来源决策条件
BP-K01内部口语和正式制度不一致术语集 Recall/歧义澄清率;错误自动归一为护栏TP-02、TP-04术语表、脱敏工单、候选 Trace歧义不能由状态消除时必须澄清
BP-K02旧制度与新规则混用当前规则命中率;过期证据进入上下文率TP-03、TP-04Manifest、有效期、final_context无有效版本或冲突未解决时拒答
BP-K03文档答案忽略实时订单状态状态读取成功率;过期快照率TP-05业务 API 响应版本、Trace状态缺失时不做条件判断
BP-K04客服建议被误当成已执行动作动作确认率、幂等冲突、未授权执行为零的护栏TP-05审批与动作审计高风险动作必须确定性执行并可审计
BP-K05回答更快但客户问题没有解决首次解决率、重复咨询率、人工处理时长;投诉率TP-02、TP-04、TP-05工单链、质检和客户反馈技术指标通过但业务结果无改善时回查流程与产品

7.4 业务复盘分支

  • 召回正确、建议错误:检查订单快照、规则适用条件和 LLM 是否遗漏例外;
  • 答案正确、客服不用:检查工作台入口、响应时间、话术可编辑性和责任边界;
  • 处理时间下降、重复咨询上升:检查客服是否过早结束工单、回答是否缺下一步或产品流程未闭环;
  • 一次解决率上升、投诉也上升:检查是否把“快速关闭”误当解决,或自动话术过度承诺;
  • 知识问题反复出现:可能是产品状态文案不清或业务流程缺陷,应转为产品需求,而不是无限补文档。

8. 业务指标、实验与归因

8.1 指标分层

层级指标口径示例能证明什么不能证明什么
技术专有术语 Recall@K标注问题中必要术语证据进入 Top-K 的问题数 / 全部该类问题术语证据召回能力客服一定采纳或客户问题解决
技术规则适用准确率人工确认适用规则正确的样本 / 已自动选规则样本条件与版本匹配能力回复表达质量和执行正确性
过程建议采纳率客服采纳或轻改建议的会话 / 展示建议的会话建议对客服有用客户最终满意或业务增量
过程人工处理时长从客服接入到给出可执行下一步的时间工作流效率不能单独证明没有草率结单
结果首次联系解决率归因窗口内无需因同一问题再次联系的已关闭工单 / 已关闭工单问题解决结果需防止错误关闭和跨渠道漏记
护栏错误承诺/越权动作率质检确认错误承诺或越权动作 / 被审会话业务安全样本抽检不足时不能代表全量

每个指标上线前还要补齐统计窗口、工单去重、跨渠道合并、问题类型、人群、客服熟练度、产品线、规则版本和数据源。上表只是口径示例。

8.2 实验设计

  • 先在脱敏历史工单上离线回放,比较关键词、普通混合检索和业务增强检索;
  • 再做客服可见但不自动发送的 Shadow/辅助模式,记录建议、采纳、修改和拒绝原因;
  • 灰度时按客服或团队随机,避免同一客服同时使用两种流程造成学习污染;
  • 保持规则版本、工单类型和排班结构可比,按新手/熟练客服、简单/复杂问题分层;
  • 护栏包括错误承诺、越权、隐私、客户投诉和高风险转人工漏拦;
  • 只有过程指标与结果指标同时改善且护栏不恶化,才提高自动化等级。

9. 生产问题与排障闭环

9.1 故障演练:新规则上线后仍引用旧口径

现象与影响。 某类售后问题的检索候选包含新制度,但最终回答继续引用旧培训文档,可能导致客服口径错误。

止损。 按规则或产品线停用自动建议,回退到只展示当前权威制度的搜索结果,高风险会话转人工;保留受影响 request_id,不先清空证据。

排查顺序。 固定身份、Query 和业务状态,核对权威规则是否正确;检查术语规范化、ACL/状态/有效期过滤、各通道候选、RRF/Rerank、final_context、Token 截断、Prompt 和缓存版本。若旧文档本应被过滤却进入上下文,换 LLM 无法修复根因。

可能根因。 培训文档没有 effective_to;索引切换后答案缓存未带规则版本;Reranker 更偏好词面相似的旧文档;或 Prompt 没有要求处理规则冲突。

长期修复。 所有业务规则进入版本化 Manifest,过期文档保留历史可查但不进入当前回答;缓存键绑定规则与业务快照版本;冲突候选触发拒答或人工选择;失败样本进入版本冲突回归集。

验证与防复发。 注入新旧规则、延迟切换、缓存未失效和业务状态变化,验证回答只使用单一有效版本;监控过期证据进入上下文率、规则冲突率、缓存版本分布和高风险转人工率。

9.2 最短排障 Runbook

text
确认真实业务答案和当前对象状态
-> 固定身份、原始 Query、实体 ID 与全链版本
-> 检查术语归一和歧义消解
-> 检查 ACL、业务条件、有效期与各路候选
-> 检查 RRF/Rerank、final_context 和 Token 截断
-> 检查规则判断、Prompt、模型与引用
-> 检查客服采纳、动作接口和最终工单结果
-> 回放固定样本并增加失败原因监控

10. 业务经验沉淀

10.1 业务难点卡

这个项目最难的不是“客服问一句,模型答一句”,而是在术语不断演化、业务对象实时变化、规则存在例外和权限敏感的约束下,同时保证回答可用与业务安全。应把问题拆成术语识别、状态取数、规则适用、证据回答和动作执行五层,并为每层留下独立证据。

10.2 业务决策卡

是否让系统自动回复或自动执行,应按风险等级决定,而不是按模型总准确率决定。公开 FAQ 可逐步自动回复;涉及个体订单但只提供解释时要带实时状态和引用;退款、改价、审批、账户和权益变更必须走确定性 API、幂等、权限和人工审批。

10.3 业务问题复盘卡

“回答正确但一次解决率没有提高”时,不应继续只调检索。先查客服是否采纳、话术是否可执行、客户是否需要下一步动作、后台流程是否卡住,再区分知识、产品、流程、权限和培训根因。知识库不能替代坏流程,只会更快地暴露它。

10.4 可复用业务经验卡

可迁移规则是:企业 RAG 的检索单元不只是 Chunk,而是“证据 + 适用条件 + 有效版本 + 权限 + 业务对象状态”。应固化为术语运营台、规则版本表、业务状态契约、客服实验卡、失败原因码、质检样本、冲突 Runbook 和产品问题回流机制。

反例是面向公开、稳定、无个体状态的 FAQ:此时完整语义层可能成本过高,BM25/混合检索加引用已经足够。不要为架构完整而过度建设。

11. 面试表达与递进追问

11.1 两分钟项目回答

我设计的是公司内部与客服知识库,业务问题不是文档找不到,而是员工使用简称和口语,规则又依赖当前订单状态、渠道和版本,普通向量检索容易把相似但不适用的制度送给模型。我把系统拆成业务语义层、实时业务只读接口、带 ACL 与条件的混合检索、规则校验和引用回答;LLM 只负责解释和话术,退款等动作通过确定性 API 和审批执行。验证上,我先看术语 Recall、规则适用和引用,再看客服采纳、处理时长和首次解决率,并用错误承诺、越权和投诉作护栏。代表性故障演练是新规则上线后仍引用旧口径:先停自动建议,再沿有效期过滤、候选、final_context 和缓存版本定位,最后把规则版本、冲突拒答和失败样本固化为门禁。当前这是设计与业务演练,没有真实公司的工单和线上指标,因此不能表述为已上线收益。

11.2 递进追问

  1. 专有名词为什么不能只写在 Prompt 里?
  2. 术语歧义消解应由 LLM、规则还是业务状态完成?
  3. 为什么业务状态不能全部写入向量库?
  4. 规则文档、规则配置和业务 API 冲突时谁是事实源?
  5. 回答准确率提高但首次解决率下降,如何定位?
  6. 哪些客服场景可以自动回复,哪些必须人工审批?
  7. 如何把一次旧规则事故转成可自动验收的发布门禁?

12. 证据升级与实践任务

12.1 从业务演练升级为真实经历所需证据

  • 一组脱敏原始问法、专有名词、正式定义和历史别名;
  • 一条真实业务链的状态枚举、规则版本、例外和接口响应;
  • 旧流程的客服操作步骤、处理时长、重复咨询或质检记录;
  • 至少一条带 request_id 的候选、过滤、重排、上下文和回答 Trace;
  • 离线评测、Shadow、灰度或 A/B 报告,以及护栏指标;
  • 个人负责的需求、设计、代码、配置、测试、排障或复盘记录。

12.2 实践任务

  • [ ] 选 20 个公司专有词,记录正式名、别名、适用部门、有效期和对客说法;
  • [ ] 从一种业务对象开始画状态机,并标出哪些状态来自实时 API;
  • [ ] 制作包含精确编号、口语别名、规则冲突、无答案和越权问题的评测集;
  • [ ] 对比纯 BM25、普通混合检索和业务条件增强检索;
  • [ ] 实现 raw_query -> normalized_terms -> business_snapshot -> final_context Trace;
  • [ ] 演练规则版本切换、缓存未失效、业务 API 超时和越权访问;
  • [ ] 选择一个客服过程指标和一个业务结果指标,写清公式、窗口、分群和归因限制。

13. 总结

一句话记忆: 内部与客服知识库的核心不是“更像地搜索”,而是在正确权限、实时状态和有效规则下,为当前业务问题提供可执行、可引用、可审计且不越权的答案。

  • 专有名词要与实体、状态、规则版本、权限和对客说法一起治理;
  • 文档提供解释证据,实时业务状态来自可信只读 API,动作由确定性接口或人工审批执行;
  • 增强检索沿术语规范化、条件过滤、混合召回、重排、规则校验和引用逐层取证;
  • 技术指标、客服过程指标和最终业务结果必须分层,并用安全护栏约束自动化;
  • 当前案例是业务演练,补齐真实工单、接口、Trace、实验和个人贡献后,才能升级为真实项目经历。