基础概念

什么是知识库?

智能体被允许据以作答的那批文档。agent4.io 分开管两种——你公司审定过的材料,和每位客户自己的文件——一起检索,但绝不混为一谈。

也叫KBRAG检索增强生成retrieval augmented generation文档库向量库

知识库是让一个智能体成为「你的」而不是通用的东西。它是「这话哪儿来的」这个问题的答案——而如果答案不在里面,智能体就应该直说没有。

是两套知识库,不是一套

多数平台只给你一堆文档。对一个答 FAQ 的客服机器人够用,对真正的业务差得远,因为客户真正会问的两类问题,性质根本不同:

「你们的条款是什么,我符不符合?」——这是你的材料。费率表、准入规则、现行法规、产品说明。它对所有人都一样,由你审定,具有权威性。

「这是我的学历证明和在职证明——我这情况算什么?」——这是他的材料。只属于某一位客户,往往敏感,对别人毫无意义。

agent4.io 把这两者做成两套独立的系统,故意不共用一套实现:

租户知识库客户知识库
归属你,也就是这家企业某一位终端客户
内容法规、定价、政策、产品条款他的文档、证书、往来函件
隔离在 API 层按租户过滤由数据库强制,按客户和空间隔离
静态存储不加密——本来就是你对外发布的材料用该客户自己的密钥加密
维护你的管理员整理,发布前审核客户随时自行上传

为什么真实的问题两边都要用

拿一个移民咨询举例:「这条通道的薪资门槛我够不够?」

门槛在你的租户知识库里——现行规则,由你们机构审定过。他的薪资在他自己那套里——上周上传的在职证明。任何一半都答不了这个问题。只有你的文档,智能体只能把规则背一遍然后让客户自己去比;只有他的文档,智能体知道他挣多少,却不知道要够到哪条线。

同一个问题会把两边都检索出来,答案就是那个比对结果。

让它们不至于被混淆的那一步

检索到的段落不会被倒进同一个桶里。每一个来源都作为独立的块进来,各自带着自己的框定:

  • 你的材料被标注为权威的、必须遵循的,而且每个知识库都可以携带你自己写给模型的指令。一个法规库可以写:这是审定过的现行规则;只据此作答,不要退回到你自己的先验知识;这里没写的,就说没有。
  • 客户的材料被标注为仅供参考——是他的东西,有用,但不是政策来源。

这个区分,就是「贵公司的费用是 X」和「客户以为费用是 X,因为他上传的某份文件里这么写」之间的差别。分不清这两者的智能体,迟早会把客户自己写错的东西,当成你的政策再念给他听。

一个没有任何相关段落的知识库,什么都不会贡献——连一个标题头都不会有。相关性在模型看到任何东西之前就由向量距离判定了,所以一个不相干的库不会杵在那里消耗它的注意力。

按知识库分别调严格度

每个知识库都有自己的相关性下限,因为该多谨慎,各处并不一样。法规库应该严:低于下限就什么都不返回、老老实实回答「这个我没有」,这是正确做法,比返回一段讲另一条通道的「差不多」的文字要好得多。一个通用 FAQ 库可以松一些,那里一个大致相关的答案仍然有用。

知识库不是训练集。你上传的任何东西都不会改变模型,它改变的是模型在作答那一刻被允许读到什么。这也是为什么改一份文档,之后所有回答立刻就跟着改了——不用重新训练,不用重新发布。

想看它怎么实现?检索与引用出处细节