先说结论
企业 AI 知识库通常用 RAG 把内部资料检索结果提供给大模型,再基于这些资料回答。落地重点是资料权威性、权限、切分与检索、引用和持续评测,而不是只把文件上传到平台。
读完你会得到
- 理解 RAG 知识库的完整链路。
- 用资料、检索、生成三层定位错误。
- 获得上线和维护检查清单。
同样上传一份制度文件,为什么有人能找到依据,有人却拿到旧答案?本文从一份可核对的资料台账开始,演示如何区分版本、检索和权限问题,再给出能本地运行的微型检索实验。技术原理参考 Google Cloud 等公开文档;教学数据全部虚构,不是客户制度或模型效果报告。
配套练习与模板
无需留联系方式即可下载。先用示例熟悉方法,再填入脱敏后的业务资料;示例不是客户成果或效果承诺。
- 企业知识库资料与验收模板(下载)
包含资料台账、问题集、失败定位、更新流程和教学实验复现说明。
- 可复现检索规则教学脚本(下载)
下载后用 Node.js 18+ 运行:node knowledge-base-lab.mjs。零依赖、无网络,不调用大模型。
RAG 知识库不是“训练一个懂公司资料的模型”
- 资料进入
采集文档、网页、表格或业务记录,并保留来源与权限。
- 解析与切分
把内容转成可检索片段,同时保留标题、版本和上下文。
- 检索与排序
根据用户问题找到并排序相关事实。
- 基于证据生成
把检索结果交给模型,要求在证据范围内回答。
- 引用与反馈
展示来源,让用户核对并反馈缺失或错误。
本节依据: [1] Google Cloud
先治理资料:权威、版本、权限、维护人
| 问题 | 合格状态 | 风险 |
|---|---|---|
| 谁是权威来源 | 有明确发布部门或系统 | 多个文档互相冲突 |
| 哪个版本有效 | 保留生效时间和状态 | 旧制度与新制度混用 |
| 谁可以看 | 权限随用户身份过滤 | 先检索后隐藏造成泄露 |
| 谁负责更新 | 每类资料有维护人和周期 | 上传后无人管理 |
| 是否适合回答 | 说明可引用范围和限制 | 把草稿或个人意见当政策 |
本节依据: [2] NIST [3] OWASP Foundation
回答错误时,分三层定位原因
| 层 | 典型问题 | 修复方向 |
|---|---|---|
| 资料层 | 原文缺失、过期、冲突 | 补资料、版本治理、确定权威来源 |
| 检索层 | 没找到、找错、上下文不足 | 调整切分、查询、混合检索与排序 |
| 生成层 | 证据正确但回答遗漏或发挥 | 收紧指令、结构化输出、引用与拒答 |
本节依据: [1] Google Cloud
先做一张资料卡,避免新旧制度混在一起
从一个资料负责人能确认的范围开始,例如内部销售使用的产品规格,或员工可见的常见制度。先问“谁有权确认这段内容仍然有效”,再问“需要哪个向量数据库”。无法确定权威版本的文件先放待整理区,不要默认全部可用。
| 字段 | 示例 | 为什么需要 |
|---|---|---|
| doc_id / version | travel-v2 / v2 | 回答、检索记录和原文能对应到同一版本 |
| 标题 / 状态 | 差旅报销规则 / active | 旧版 travel-v1 标记 retired,不进入默认现行查询 |
| 原文片段 | 虚构现行标准 300 元;旧版为 200 元 | 必须一起保留适用对象和限制,不能只截金额 |
| 访问角色 | employee、admin | 身份由业务系统提供;不能接受用户在提问中自称管理员 |
| 资料维护人 / 生效与复核时间 | 由真实项目填写 | 没有维护责任和有效时间时进入待确认状态 |
| 引用位置 | 文档路径+章节或页码 | 用户要能核对;不要只展示无法定位的文件名 |
本节依据: [1] Google Cloud
动手复现:不用大模型,也能看见三种检索错误
- 下载脚本
在本页配套资料下载 knowledge-base-lab.mjs。它将全部虚构文档和测试题放在同一文件,便于逐项核对。
产出:一个可读的 .mjs 文本文件 - 在本地执行
安装 Node.js 18 或以上版本后,在文件所在目录运行 node knowledge-base-lab.mjs。无需安装包、填写密钥或连接网络。
产出:逐题对比表和断言结果 - 比较两种规则
基线只按关键词返回第一条命中的文档;规则版先按 active 状态和角色过滤,再将“出差”映射为“报销”,最后匹配关键词。
产出:版本、权限、同义表达各自影响的证据 - 改一道没见过的题
例如把“出差能报多少”换成“外地参会住宿限额”。脚本未实现语义理解或澄清,可能找不到。把新失败保留下来,而不是只把题改成容易命中的关键词。
产出:暴露规则局限的新增测试
| 问题 / 身份 | 预期 | 基线实际 | 规则版实际 |
|---|---|---|---|
| 报销标准 / employee | travel-v2 | travel-v1(旧版) | travel-v2 |
| 出差能报多少 / employee | travel-v2 | 无结果 | travel-v2 |
| 运维轮换流程 / employee | 无结果(无权限) | ops-admin(越权) | 无结果 |
| 运维轮换流程 / admin | ops-admin | ops-admin | ops-admin |
| 宠物托管规则 / employee | 无结果(资料缺失) | 无结果 | 无结果 |
| 餐补怎么申请 / employee | meal-v1 | meal-v1 | meal-v1 |
本次固定题集中,基线有 3/6 项与预期一致,规则版有 6/6 项一致。这只是脚本回归结果,不是统计意义上的准确率提升。它说明:在这组数据里,改版本过滤、角色过滤和一个同义映射就改变了检索结果,问题不需要先归咎于模型。
脚本的“无结果”把资料缺失和无权限都表示为 null;真实系统应在内部日志区分原因,但不能向无权限用户泄露受限文档是否存在。脚本也不覆盖多租户、缓存隔离、提示注入、身份伪造和全文生成,不能直接当作生产权限实现。
接上大模型以后,如何把测试扩展成上线验收?
| 检查层 | 记录什么 | 失败之后先做什么 |
|---|---|---|
| 问题与身份 | 问题原文、真实角色、查询时点、预期来源 | 身份或时间不明确时先澄清 |
| 检索 | 返回 doc_id、版本、排名和片段;正确依据是否进入上下文 | 修资料、过滤、切分或检索,不先改文风 |
| 回答 | 结论、适用条件、引用是否真的支持结论 | 证据够但回答错,再调整生成与校验 |
| 拒答与恢复 | 缺依据、冲突或越权时是否停止并给合理下一步 | 补充拒答与人工转接测试,不能强迫每题都有答案 |
| 成本与速度 | 端到端时间、调用成本、人工复核与维护投入 | 与原流程同口径比较,不只量模型响应时间 |
从获授权的真实问法中收集题目,并让资料负责人先给预期依据。将一部分问题留作未参与调试的保留集;同时覆盖无答案、同义问法、跨段条件、旧版冲突和权限差异。测试报告应展示逐题失败及样本范围,而不是只展示一个平均分。
更新资料后先核对新版本是否入库、旧版本是否退出默认检索、引用能否打开,再运行受影响的问题集。删除或撤权还要检查缓存和历史副本;只在网页隐藏旧来源,不能证明后端不再使用旧数据。
用真实问题评测,不用几道演示题
- 正确答案题
业务专家给出预期答案与权威来源。
- 找不到答案题
系统应说明缺少依据,而不是补全想象。
- 权限题
不同身份只能检索和引用允许内容。
- 冲突版本题
优先有效版本,并能显示来源。
- 模糊与追问题
信息不足时先澄清,而不是武断回答。
- 对抗题
外部文档或用户输入不能改变系统边界。
常见问题
企业知识库一定要用向量数据库吗?
不一定。数据量、查询方式和平台能力不同,关键词检索、语义检索、混合检索或长上下文都可能适用。应以真实问题的检索质量、权限和成本评测决定。
上传的文档越多,知识库效果越好吗?
不是。重复、过期、冲突和无权限标记的资料会降低可用性并增加风险。优先建设小而权威、可维护、可评测的资料集。
资料来源与核对说明
文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。
- What is Retrieval-Augmented Generation (RAG)?Google Cloud
用于解释 RAG 的检索、预处理、基于检索事实生成,以及知识库质量对结果的影响。
- Generative Artificial Intelligence ProfileNIST
用于识别生成式 AI 全生命周期的特有风险,并把风险管理纳入设计与运营。
- OWASP Top 10 for Large Language Model ApplicationsOWASP Foundation
用于核对提示注入、输出处理、敏感信息泄露和过度代理等常见安全风险。
- Evaluation best practicesOpenAI Developers
用于建立任务级评测:定义目标、收集数据、设置指标、运行比较并持续评估。
带上流程、样例和目标,添加企业微信沟通。首次沟通先判断是否值得做,不承诺没有数据依据的结果。