# 知识库完善方案 · AI 助手支撑 v1

> 编制：刘新元（销售管理）｜2026-09-11｜对象：宝锐销售工作台 AI 助手（`脚本/ai_chat.py`）
> 结论先行：**不是"缺资料"，而是"有资料、AI 取不到"**。先把取用链路修好，再按类目补料。

## 一、体检结论（本机实测）

| 指标 | 实测 |
|---|---|
| 知识库文件（知识库-copilot，不含软链接/系统文件） | **211** 个，另有软链接 29 个 |
| AI 现在能读的格式 | 仅 `.md` + `.pdf` = **83 个（39.3%）** |
| AI 完全读不到的格式 | **128 个（60.7%）**：XMind 脑图 38、Word 28、Excel 22、图片 20、PPT 12、TXT 2、压缩包 2、Word(旧) 2、Excel(旧) 2 |
| 单次问答最多能看到的量 | 关键词命中文件的**前 4 个** × **每个前 1500 字** ≈ 6,000 字 |
| 检索方式 | 文件名 glob（`*关键词*`）——文件名不含问题里的词 = 命中 0 |
| 同名重复 | **21 组 / 42 个文件**（跨目录拷贝；其中 4 组含 `_1`/`_副本` 后缀副本，另 4 组是同一内容 pdf/脑图多格式并存） |
| IMA 知识库 | 同步清单 270 条，OpenAPI 只能搜标题、不能取正文 |
| 结构化数据层 | `数据/*.json` 77 个文件，已支撑订单/回款/KPI/客户等事实类问答 |

**三个硬伤**

1. **格式墙**：60.7% 的资料（Word/Excel/PPT/脑图/图片）AI 一个字也读不到，而产品参数、冻干工艺、话术最值钱的部分恰恰在这些文件里。
2. **文件名墙**：能读的 `.md`/`.pdf` 还要文件名正好含有问题里的关键词才被命中；`产品说明.md` 这种名字等于检索不到。
3. **截断墙**：命中后每个文件只读前 1500 字——《百问百答汇集》《知识百宝书》这类长文档等于只读了封面。

## 二、目标形态：三层知识库

| 层 | 内容 | 载体 | 谁维护 | 更新频率 |
|---|---|---|---|---|
| **L0 事实层** | 货号、价格、交期、参数、KPI、订单 | `数据/*.json`（机器读） | 数据管道（刘新元） | 日更/月更 |
| **L1 卡片层** | 选型、竞品、话术、FAQ、案例、制度 | `知识库-copilot/**/*.md`（一张卡一个问答，YAML 头） | 各分类目 owner | 月更/触发更新 |
| **L2 原件层** | 说明书、年报、报告、脑图、图纸 | `知识库-copilot/**/原件/`（AI 不直接读，索引里给路径） | 各分类目 owner | 按需 |

规则：**能从 L0 查到的事实，L1 里不重复写**（避免版本漂移）；L1 只写"为什么/怎么用/怎么说"。

## 三、分门别类的资料需求（10 大类 / 40 项）

完整清单（含主责、验收标准、现状）见同目录 **《知识库资料需求清单-v1.xlsx》**。

| 大类 | 项数 | P0 项 | 一句话颗粒度 |
|---|---|---|---|
| A 产品事实库 | 4 | 3 | 一行 = 一个货号 |
| B 选型与应用 | 4 | 2 | 一行 = 一个检测项目 × 一个方法 |
| C 冻干工艺服务 | 5 | 4 | 一阶段一行 |
| D 竞品情报 | 4 | 3 | 一张卡 = 一个品牌，≤1500 字 |
| E 客户情报 | 3 | 0 | 一行 = 一个客户 |
| F 话术与打法 | 4 | 2 | 一张卡 = 一个场景，≤300 字 |
| G 制度流程 | 5 | 0 | 一行 = 一环节 |
| H 培训与原理 | 3 | 0 | 一张卡 = 一个技术路线，≤800 字 |
| I 行业市场 | 4 | 0 | 一行 = 一个指标 |
| J 服务支持 | 4 | 0 | 一行 = 一个区域 |

### P0 优先补齐（决定 AI 答得对不对）

- **A1 货号主数据**（场景6 数据查询 / 场景1 选型）—— 一条 = 一行 = 一个货号（货号｜品名｜规格｜包装｜单位｜牌价｜交期｜状态）｜主责：刘新元（数据管道）
- **A2 技术参数卡**（场景1 选型 / 场景2 竞争力）—— 一条 = 一行 = 一个货号 × 一个参数（效期｜储存｜冻融｜酶活｜浓度｜纯度｜批间差），必须"数值+单位+条件+来源"｜主责：各产品线技术支持
- **A4 产品说明卡**（场景1 选型 / 场景2 竞争力）—— 一条 = 一张卡 = 一个产品/体系，≤800 字（是什么｜适合谁｜怎么用｜关键参数｜常见问题）｜主责：产品经理（待指派）
- **B1 项目→体系→货号映射**（场景1 产品选型）—— 一条 = 一行 = 一个检测项目 × 一个方法（项目｜方法｜推荐货号｜角色(主/备)｜依据）｜主责：技术支持
- **B2 场景选型卡**（场景1 / 场景4 客户咨询）—— 一条 = 一张卡 = 一个场景，≤300 字（场景｜痛点｜推荐方案｜替代方案｜禁忌）｜主责：技术支持
- **C1 冻干服务流程**（场景7 打法 / 场景4 客户咨询）—— 一条 = 一阶段一行（阶段｜交付物｜时限｜对接人）｜主责：冻干服务负责人（待指派）
- **C2 保护剂/配方原则**（场景1 / 场景4）—— 一条 = 一行 = 一个体系（体系｜建议配方｜参数范围｜依据）｜主责：冻干工艺工程师
- **C4 客户案例与实测数据**（场景4 / 场景7）—— 一条 = 一条 = 一个案例（行业｜体系｜条件｜结果｜结论｜日期，脱敏）｜主责：冻干服务负责人
- **C5 冻干 FAQ**（场景2 / 场景4）—— 一条 = 一卡 = 一问一答，≤300 字｜主责：技术支持
- **D1 品牌情报卡**（场景3 竞品对比）—— 一条 = 一张卡 = 一个品牌，≤1500 字（定位｜产品线｜价格带｜渠道｜近期动态）｜主责：市场/产品线负责人（待指派）
- **D2 货号级对标表**（场景3 竞品对比）—— 一条 = 一行 = 一个竞品货号（竞品货号｜参数｜我方对标货号｜差异｜证据｜日期）｜主责：技术支持
- **D3 PK 案例（赢单/丢单）**（场景3 / 场景7）—— 一条 = 一条 = 一个案例（客户｜场景｜我方 vs 竞品｜结果｜关键动作｜日期）｜主责：各销售经理
- **F1 场景话术卡**（场景7 销售打法）—— 一条 = 一张卡 = 一个场景，≤300 字（目标｜开场｜挖需 3 问｜价值主张｜收尾动作）｜主责：各销售经理
- **F2 异议应答卡**（场景7）—— 一条 = 一行 = 一个异议（客户原话｜背后顾虑｜应答｜证据）｜主责：各销售经理

## 四、颗粒度标准：8 条铁律（重点）

| # | 铁律 | 反例（现状） | 正例（目标） |
|---|---|---|---|
| G1 | **一卡一问答** 一个 MD 文件只讲一个主题（≤3000 字）；一条问答卡 ≤300 字，含"问题句 + 答案 + 适用条件 + 来源 + 置信度 + 更新日"。 | 《宝锐生物销售人员百问百答汇集》1 个 docx 里 200 问 | 拆成 200 张卡：`qPCR_引物二聚体高_FAQ.md` 等，每条 300 字 |
| G2 | **文件名就是检索键** `品类_主题_类型.md`，必须含品类词与主题词；禁用"最终版/新建/扫描件/副本"。 | `产品说明.md`、`20 宝锐生物冻干服务流程方案--20221127.docx` | `冻干_服务流程_规范.md`、`Taq酶_冻干保护剂选择_FAQ.md` |
| G3 | **头部六字段必填** `title / scene（场景编号）/ line（da|ls|公用）/ owner / updated / confidence（+source）`。缺字段不进检索库。 | 23 个 MD 中绝大部分无 YAML 头 | 头部 6 行，AI 一眼知道该不该采信、该谁维护 |
| G4 | **数值必须三件套** 任何数字都要"数值 + 单位 + 条件"；禁止"较长/较高/行业领先/大概"。 | "有效期较长"、"稳定性好" | "有效期 24 个月（-20℃ 未开封）"；"37℃ 加速 7 天活性保留 ≥90%" |
| G5 | **一条一行、可切表** 竞品/价格/参数/交期一律一行一条（MD 表格或 JSON），禁止整段叙述。结构化事实进 JSON，散文只写"为什么/怎么用"。 | 竞品卡里写一大段"XX 公司也不错……" | `{竞品货号, 参数, 我方货号, 差异, 证据, 日期}` 一行一条 |
| G6 | **单一事实源** 同一事实只在一处维护，其他地方只写引用路径；禁止 `_1` 副本与跨目录拷贝。 | 当前 21 组同名重复（4 组 `_1`/`_副本` 后缀、4 组同名多格式并存、其余跨目录拷贝） | 重复文件合并进 `公用/`，专业线用软链接引用（已有软链接机制） |
| G7 | **每条结论可溯源** 结论末尾标来源（文件｜客户｜实测日期）；无来源必须写"经验值"。 | "我们的冻干工艺更稳定" | "冻干后 37℃ 14 天活性保留 92%（FM-01 实测 2026-03，见 COA-20260312）" |
| G8 | **时效 TTL** 价格/交期/库存 30 天；产品参数 6 个月；方法论/制度 12 个月。过期内容 AI 必须加"以最新为准"。 | 2022 年的报价单被当成现价引用 | JSON 里带 `updated` + `ttl_days`，索引层自动判过期 |

一句话记住：**颗粒度 = "AI 能不能只取这一小块就把问题答对"**。凡是必须读完整篇才能用上的内容，都是颗粒度太粗。

## 五、取用链路改造（不修这里，补再多资料也读不到）

| # | 改造 | 现状位置 | 怎么做 | 验收 |
|---|---|---|---|---|
| R1 | **建卡片索引 `数据/kb_index.json`** | 脚本/ai_chat.py 现无索引层 | 扫描 知识库-copilot/**，产出 {标题, 路径, 关键词, 别名, 摘要, 更新时间, line, owner, confidence} | AI 先读索引再取正文；索引可人工审核 |
| R2 | **检索算法：文件名 glob → 索引匹配 + 全文兜底** | 脚本/ai_chat.py:625-655 | 命中文件从「前 4 个」→ 按相关度 top 8；「每文件前 1500 字」→ 按卡片切块取最相关 2 块（各 600–800 字） | 长文档不再只读开头；单次上下文占用可控 |
| R3 | **扩展可读格式（当前只认 .md/.pdf）** | 脚本/ai_chat.py:636-644 | docx/xlsx/pptx/xmind → 批量转 MD 摘要卡（一次性 + 新增自动转），原件留在 `原件/` | AI 可读文件 83 → 211，覆盖率 39% → 100% |
| R4 | **去重与版本治理** | 21 组同名重复文件 | 同内容合并到 `公用/`，专业线用软链接；`_1`、`-副本`、`--20221127` 类命名批量规整 | 索引里不再出现重复卡片 |
| R5 | **入库质量门** | scripts 无校验 | 入索引前校验：命名规范 + 六字段 YAML + TTL 字段；不合格进 `_待补/` 不参与检索 | 脏数据不进 AI 上下文 |

## 六、治理机制

| 角色/机制 | 内容 | 说明 |
|---|---|---|
| **治理主责** | 刘新元（销售管理负责人） | 定标准、月度体检、裁决口径冲突 |
| **分类目 Owner** | 产品事实：各产品线技术支持（科研线 王凡/蒋嵘）｜冻干：冻干服务负责人｜竞品：市场/产品线负责人｜话术：各销售经理｜制度：对应职能部门 | 一类目一 owner，产出与复核各自负责 |
| **权限线** | 知识卡片必须标 `line: da|ls|公用`，检索时按用户部门过滤 | 与现有 _visible_for_user 一致，防越权泄露 |
| **置信度** | verified（官方文件）/ tested（实测数据）/ experience（一线经验）/ rumor（传闻） | AI 引用时标注；rumor 不进正式结论 |
| **月度体检** | 每月 1 日跑体检脚本（本文件脚本可复用）→ 出「覆盖率/过期率/重复率/空目录」四指标 | 连续两月不达标类目向 owner 亮灯 |
| **沉淀飞轮** | 每次高质量问答结尾由 AI 提议"是否沉淀为卡片"，确认即入库（已有 /api/archive_experience） | 回答越多库越厚，避免重复思考 |

## 七、落地三步（含主责与验收）

**第一步 · 打通取用链路（本周，主责：刘新元）**

1. R1 生成卡片索引 `数据/kb_index.json`（自动扫描 + 人工过一遍）。
2. R3 批量把 docx/xlsx/pptx/xmind 转 MD 摘要卡 —— 预计新增 120+ 张卡，现有 60.7% 的资料一次盘活。
3. R2 改检索：top-8 + 卡片切块，取消"前 4 个文件 / 前 1500 字"限制。
4. R4 合并 21 组重复文件。

**第二步 · 补 P0 资料（2–4 周，主责见清单）**

1. A2 技术参数卡（技术支持 + 研发）：每个主推货号 8–12 个参数，带"数值+单位+条件"。
2. C1–C5 冻干资料转卡（冻干服务负责人）：现有 docx/xlsx 是最好起点。
3. F1/F2 话术与异议卡（各销售经理）：先拿 IMA 4 份模板 + 现有拜访纪要提炼。
4. D2 竞品货号对标表（技术支持 + 产品经理）：先做头部 6 品牌的 TOP20 货号。
5. B1 项目→体系→货号映射（技术支持）：扩 `pcr_lamp_selection.json`。

**第三步 · 建节奏（持续）**

1. 每月 1 日跑体检脚本，出四指标（覆盖率/过期率/重复率/空目录）推送三部门。
2. 每次高质量问答由 AI 提议沉淀为卡片，确认即入库。
3. 季度复核 TTL 到期卡片，未复核的降级为 `experience`。

## 附：可直接执行的体检命令

```bash
# 出四指标（覆盖率/可读率/重复率/空目录）
python3 ~/Desktop/Hermes输出-工作类/脚本/kb_audit.py
```
