它解决的问题
销售面对客户问”你们怎么处理报价 / 退款 / 集成”时,每个人讲法不一样 —— 老人凭记忆、新人查 wiki、运营写公告……结果客户感到团队不专业。
企业知识库把所有 SOP / FAQ / 案例 / 报价边界统一入库,所有 Agent 出库的话术都从这里取材且带引用,让”销售嘴上说的”和”知识库里写的”严格一致。
入库 · 三种来源
| 来源 | 怎么用 | 失败兜底 |
|---|---|---|
| 文本 | 控制台 → 新建知识,复制粘贴 SOP 文本 | 标题 + 正文必填,立即生效 |
| PDF 上传 | 控制台 → 导入 PDF,支持 ≤ 10 MiB | 扫描件 / 无可抽文本 PDF 进 review queue |
| URL 抓取 | POST 接口 + URL(如内部 wiki) | 内容 < 80 字进 review queue |
所有入库都自动切片成 chunks,给每个 chunk 算向量;后续出库回答只引用 chunk 级别的事实片段,不是整段抄 PDF。
审核 · 三层闸门
[静态闸门]
绝对承诺词 / PII 模式 / internal_pricing 标签
│
▼ flags 但不拒
[LLM 合规自动审核]
decision: approve / manual_review / reject
│
▼
[决策合成]
LLM approve + 静态零 flag + auto_activate=true → active
否则 → draft(等人工)
LLM 任意故障(disable / no_key / timeout / API error)都退化为 manual_review,永不阻塞入库,但状态停在 draft 等运营批准。
出库 · 四道引用忠实护栏
Agent 回答时,答案合成 LLM 负责把”召回的 chunks → 一段流畅文字”:
- JSON Schema 合规:模型输出必须能解析。
- cited_chunk_ids 子集校验:引用的必须是召回 chunks 的子集,不能”瞎编”。
- 非空校验:cited 不能为空(不允许”看起来很对”但无据可查的回答)。
- 数字日期价格穿透:回答里出现的数字 / 日期 / 价格必须能在 cited 的 chunk 原文找到子串。
任何一道违反 → 自动降级到模板拼接,永远不会把不可追溯的内容发给客户。
检索 · 向量 + token 双路
| 模式 | 何时启用 | 召回方式 |
|---|---|---|
| 向量召回 | 配了 AI_SCRM_KNOWLEDGE_EMBEDDING_API_KEY 时 | pgvector 或 SQLite Python-cosine;min_score 0.45 |
| token 召回 | 无 embedding 客户端时 | 子串匹配 + 归一化打分;min_score 0.20 |
| 降级链 | 向量失败 / 维度漂移 / archived item / 老 NULL embedding | 自动退到 token 路径 |
整套机制保证:没向量服务也能跑、有向量服务跑得更好、出问题永远不黑屏。
关键能力一览
- 三种来源入库:text / pdf / url(idempotent on source_ref)
- 三层审核:static gates + LLM auditor + 人工 activate / archive
- 四道引用护栏:JSON / 子集 / 非空 / 数字穿透
- 三模式合成:direct(M11 桥)/ opener(首次触达)/ reply(多轮回复)
- LRU 缓存:相同 query + chunks + ctx 在 30 分钟内不重复调 LLM;缓存命中仍写 usage
- 知识缺口:客户问到没覆盖的问题 → 自动落 gaps → 运营补完知识 → 同问题自动重测命中
与其他模块的关系
- 销售 Agent:调 knowledge.answer() 取首句 / 回复。
- 群运营:候选话术从知识库出库。
- 风控审计:知识库审核的静态 / LLM 闸门复用风控规则。
- 客户卡片:每条 usage 写到客户档案,知道”哪条知识被谁引用了多少次”。
看一眼
控制台 → 企业知识库支持”新建知识 / 导入 PDF / 列表 / 详情 / 审核队列 / 缺口反馈”全流程。