外观
AI 知识库项目:内部系统与客服增强检索篇
目录
- 1. 面试结论与证据边界
- 2. 业务问题:为什么普通 RAG 不够
- 3. 小白场景、专业映射与类比边界
- 4. 架构与技术调用流程
- 5. 专有名词与业务逻辑增强方案
- 6. 技术点清单与横向选型
- 7. 具体业务经历演练:售后客服判断
- 8. 业务指标、实验与归因
- 9. 生产问题与排障闭环
- 10. 业务经验沉淀
- 11. 面试表达与递进追问
- 12. 证据升级与实践任务
- 13. 总结
1. 面试结论与证据边界
1.1 30 秒面试结论
公司内部与客服知识库最难的不是把文档做成向量,而是让系统同时理解业务专有名词、当前对象状态、规则适用条件和用户权限。我的方案会把术语词典、实体别名、状态机、规则表和权威文档构造成可版本化的业务语义层,查询时先识别意图与实体,再做带 ACL 和业务条件的混合召回、重排、规则校验与引用回答;涉及退款、审批、额度等动作时只给建议并调用确定性业务接口确认。效果要用检索质量、客服过程指标和最终业务结果分层验证,不能只看回答是否流畅。
1.2 面试官为什么问
这个主题同时考察:
- 是否理解企业知识不是一堆静态文档,而是术语、数据、流程、规则和权限的组合;
- 是否能区分“检索答案”和“执行业务动作”;
- 是否会沿 Query、ACL、候选、重排、上下文和生成逐层排障;
- 是否能把 Recall、一次解决率、人工成本和客户风险建立证据关系;
- 是否能讲出真实业务约束,而不是只说“换更好的 Embedding”。
1.3 证据边界
事实边界: 当前仓库能证明的是结构化知识治理与 RAG 设计能力,不能证明存在某公司的内部系统、客服工单、线上接口或业务收益。本分册中的售后案例是贴近真实流程的业务演练,字段、数字和规则仅用于教学;要升级为真实经历,必须用脱敏需求、规则配置、接口、工单、Trace、实验报表和个人贡献记录替换。
2. 业务问题:为什么普通 RAG 不够
内部员工和客服通常不会按制度原文提问。他们会说:“这单是不是锁单了”“保护期过了还能捞回吗”“用户催得急,能不能先退”“这个客户算沉默还是流失”。这些词可能只存在于产品页面、培训话术或团队口头约定中,而且同一个词会随部门、产品线和版本变化。
普通“文档切块 + 向量 Top-k + LLM”容易在五处失败:
- 术语错配:用户说简称、旧称或口语,文档写正式名;
- 实体混淆:订单号、合同号、客户 ID、套餐名和错误码形态相近;
- 状态缺失:文档说明规则,但当前订单究竟是已支付、已发货还是已签收,需要业务系统实时数据;
- 条件遗漏:规则受渠道、地区、商品类型、时间窗口、客户等级和版本影响;
- 动作越权:回答“可以退款”不等于系统有权执行退款,也不等于当前对象满足全部条件。
因此,企业增强检索的目标不是“召回更像的问题”,而是:
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_reviewLLM 可解释“为什么”和生成客服话术,但规则是否满足应由规则服务或业务 API 判断。若规则复杂度低且变化少,可先使用版本化配置;跨多系统、有优先级和冲突解析时,再评估规则引擎。
5.3 查询增强链路
text
原始问题
-> 保留订单号、错误码、套餐名等精确 Token
-> 识别意图、实体和内部术语
-> 读取当前业务对象状态
-> 生成受约束的规范化 Query,不覆盖原问题
-> ACL、产品线、渠道、地区、状态、有效期过滤
-> BM25 + Dense 候选召回
-> 业务实体一致性与规则适用性重排
-> k_context 内构造事实、规则、例外和引用
-> 规则校验
-> 回复、澄清、拒答或人工处理必须分别记录 raw_query、normalized_terms、entity_ids、business_snapshot_version 和 final_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-05 | LLM 直接回答并调用动作工具 | 交互自然、链路短 | 幻觉、越权、重复执行和错误承诺风险高 | 低风险沙箱、强审批后的草案 | 退款、审批、额度、账户等高风险动作 | 不作为默认生产路径 |
| TP-05 | RAG 建议 + 确定性 API/人工审批 | 权限、幂等、审计和回滚边界清楚 | 需要更多接口和状态编排 | 企业客服、高风险动作 | 纯公开 FAQ 且无业务动作 | 默认方案;低风险且长期回归稳定后逐步提高自动化等级 |
7. 具体业务经历演练:售后客服判断
案例类型:业务演练。 以下故事模拟真实客服现场,但不是用户或本仓库已发生的项目经历。示例中的“售后锁定、退款窗口和订单状态”都不代表任何真实公司的制度。
7.1 业务背景与冲突
客户问:“这单已经锁了,用户很急,今天能不能先退?”客服在知识库里能搜到三份材料:旧培训文档写“锁单后转人工”,新制度写“部分渠道可在指定状态发起售后”,产品公告又说明某类商品暂不支持自动退款。订单后台同时显示“已发货”,但客服口语中的“锁了”可能指风控锁定,也可能指售后处理中。
旧方案若只做向量 Top-k,很可能召回包含“锁单”和“退款”的旧培训文档,模型再拼出一个看似合理的“可以退款”。真实难点不是相似度,而是先消除术语歧义,再取得当前订单状态,最后确定哪一版规则对该渠道和商品生效。
7.2 处理过程
- 系统识别“这单”为待补充的
order_id,没有 ID 时先向客服请求; - “锁了”映射出多个候选术语,不直接替用户选定;
- 只读 API 返回脱敏订单快照、渠道、商品类型、发货和售后状态;
- 术语候选与真实状态交叉验证,排除不匹配含义;
- 检索时限定当前产品线、渠道、地区、有效时间和客服权限;
- 重排优先当前规则及其例外,旧培训文档只作为历史证据,不进入最终回答;
- 规则服务返回“解释、允许发起、必须审批或禁止”之一;
- LLM 生成内部处理建议和对客安全话术,并附规则版本;
- 若要真正退款,客服确认后调用带幂等键的售后 API,不由 LLM 直接修改订单。
7.3 业务问题与技术点映射
| 业务问题 ID | 业务问题 | 目标与护栏 | 对应技术点 | 证据来源 | 决策条件 |
|---|---|---|---|---|---|
| BP-K01 | 内部口语和正式制度不一致 | 术语集 Recall/歧义澄清率;错误自动归一为护栏 | TP-02、TP-04 | 术语表、脱敏工单、候选 Trace | 歧义不能由状态消除时必须澄清 |
| BP-K02 | 旧制度与新规则混用 | 当前规则命中率;过期证据进入上下文率 | TP-03、TP-04 | Manifest、有效期、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 递进追问
- 专有名词为什么不能只写在 Prompt 里?
- 术语歧义消解应由 LLM、规则还是业务状态完成?
- 为什么业务状态不能全部写入向量库?
- 规则文档、规则配置和业务 API 冲突时谁是事实源?
- 回答准确率提高但首次解决率下降,如何定位?
- 哪些客服场景可以自动回复,哪些必须人工审批?
- 如何把一次旧规则事故转成可自动验收的发布门禁?
12. 证据升级与实践任务
12.1 从业务演练升级为真实经历所需证据
- 一组脱敏原始问法、专有名词、正式定义和历史别名;
- 一条真实业务链的状态枚举、规则版本、例外和接口响应;
- 旧流程的客服操作步骤、处理时长、重复咨询或质检记录;
- 至少一条带
request_id的候选、过滤、重排、上下文和回答 Trace; - 离线评测、Shadow、灰度或 A/B 报告,以及护栏指标;
- 个人负责的需求、设计、代码、配置、测试、排障或复盘记录。
12.2 实践任务
- [ ] 选 20 个公司专有词,记录正式名、别名、适用部门、有效期和对客说法;
- [ ] 从一种业务对象开始画状态机,并标出哪些状态来自实时 API;
- [ ] 制作包含精确编号、口语别名、规则冲突、无答案和越权问题的评测集;
- [ ] 对比纯 BM25、普通混合检索和业务条件增强检索;
- [ ] 实现
raw_query -> normalized_terms -> business_snapshot -> final_contextTrace; - [ ] 演练规则版本切换、缓存未失效、业务 API 超时和越权访问;
- [ ] 选择一个客服过程指标和一个业务结果指标,写清公式、窗口、分群和归因限制。
13. 总结
一句话记忆: 内部与客服知识库的核心不是“更像地搜索”,而是在正确权限、实时状态和有效规则下,为当前业务问题提供可执行、可引用、可审计且不越权的答案。
- 专有名词要与实体、状态、规则版本、权限和对客说法一起治理;
- 文档提供解释证据,实时业务状态来自可信只读 API,动作由确定性接口或人工审批执行;
- 增强检索沿术语规范化、条件过滤、混合召回、重排、规则校验和引用逐层取证;
- 技术指标、客服过程指标和最终业务结果必须分层,并用安全护栏约束自动化;
- 当前案例是业务演练,补齐真实工单、接口、Trace、实验和个人贡献后,才能升级为真实项目经历。