企业知识库用不起来,部分项目可能在内容维护、关系治理和业务衔接等环节遇到困难。知识库的账要按调用次数算,按容量算会失真。它得可辅助内容处理、关系抽取和流程触发,关键内容与动作应由规则或人员审核。
"知识库"最初是为检索造出来的
最早的库是图书馆的卡片目录,一册书对应一张卡片,按分类号排进抽屉。计算机进来后,卡片变成数据库里的一行记录,分类号变成字段,查找靠布尔表达式,用 AND、OR、NOT 把命中的集合做交并补。布尔检索的毛病是没有排序,命中三千条和命中三条一样难用。
于是有了排序。情报检索领域提出的向量空间模型,把文档和提问都转成词频向量,用夹角余弦算相关度;后来演化出 BM25 这类概率模型,加入词频饱和与文档长度归一,至今仍是全文检索的默认打分方式。到这一步,库的重心从"怎么存"移到了"怎么找"。
企业知识库接过了这一棒。Wiki 把页面之间的链接交给写作者,Confluence 一类工具补上权限、版本与评论,检索框后面接的是倒排索引。倒排索引按词建表,记录每个词出现在哪些文档的第几个位置,查询时做集合运算,速度极快。
它认字形,不认意思。传统关键词检索对词汇差异较大的查询可能召回不足。工程上称这类情况为词汇不匹配,也是关键词检索绕不过去的那堵墙。
词向量的思路是把词投进高维空间,让含义相近的词落在相邻位置;句子和段落沿用同一套办法,得到整段的向量,检索时算向量距离,不再依赖字面重合。
这里有一笔很容易被忽略的账。1024 维 float32 的向量,单条占用 4KB,一百万个文本片段约 4GB 常驻内存。近似近邻索引的选择也直接连着成本:具体取决于数据规模、参数、硬件和召回目标,图结构常驻内存,吃内存;IVF_FLAT 先聚类再在小范围内精算,内存省,召回靠调 nprobe 换。容量规划要先算这笔,再谈算法调优。
录入靠人力,建库即终点
多数知识库的上线路径是发通知、定目录、要求各部门上传。部分项目在初期集中上传后,可能出现后续更新不足。原因在成本结构:整理文档的时间由员工个人承担,收益归团队,没有谁有动力持续维护。
可自动化的那一段其实很长。文档格式分两类,PDF 记录的是绘图指令流,段落与表格要重新识别,双栏排版和跨页表格是出错高发区;Word、HTML、Markdown 带着结构标记,解析相对直接。扫描件和图片要先过 OCR,把像素还原成文字。
拿到纯文本之后是切分。切得太碎,一段话被拦腰截断,向量里的语义不完整;切得太长,一段里塞进好几个主题,检索时被平均掉。工程上常取几百个字作为一个片段,在标题层级处断开,相邻片段之间留一部分重叠。切完过 embedding 模型转向量,写进向量库,同时在全文检索引擎里留一份关键词索引。
embedding 模型一旦更换,全量向量必须重算重灌,上线前的模型选型比事后反复调参更省钱。
经验带不走
知识管理领域很早就区分过两类知识。一类能写成文档、公式、流程图;另一类只存在于做过这件事的人身上,比如某条产线的参数为什么这么调,某个客户为什么对交付周期格外敏感。
要让后一部分留下来,存档不够,得把关系写出来。关系型数据用表,表与表之间靠外键关联;知识图谱用的是图,基本单元是三元组,形如"实体—关系—实体",例如"A 部件—包含—B 芯片"。三元组的写法来自语义网那套标准,主谓宾结构让机器可以直接做推理。图数据库在存储层做了取舍,用邻接表把关系固化在磁盘上,遍历一跳邻居不受全表规模影响,代价是写入比关系库重,schema 改动也更麻烦。查询语言 Cypher 的位置相当于 SQL,写法是描述一个图形状,让引擎去找匹配的子图。
落到企业里,从文档中抽出人名、机构、产品型号这些实体,再抽出"任职于"“供应商是”"总部位于"这类关系,堆起来就是一张网。骨干离职后交付的文件能转化成可查询的关系:某个客户的历次交付异常,指向同一家供应商的同一批料。图上还能做路径推理,两个没有直接关系的实体,通过中间节点连出一条链。
检索给出答案,动作还得人去做
大模型的知识压在参数里,训练结束就固定,补知识要重新训练或微调。检索增强生成(RAG)可为回答提供资料片段与引用线索,但不能保证答案完全准确。
把检索结果变成动作,靠的是编排。编排的前身是工作流引擎,BPEL、BPMN 那套规范用 XML 描述流程,跑的是预先画好的有向无环图;数据平台后来用 DAG 调度器管理任务依赖,同样不允许循环。大模型 Agent 的需求不一样,模型可能判断"材料不够,再搜一次",需要回到上一个节点重来,图里必须有环。
LangGraph 一类引擎把节点写成有状态的函数,边可以带条件,每走一步把状态写进检查点,在启用检查点、持久化和恢复策略时,部分任务可从保存状态恢复。
工程上最容易翻车的地方是条件分支写得过松,流程在两个节点之间反复横跳,跑满迭代上限才停。生产环境里,节点级超时、最大迭代次数、失败重试策略要在配置阶段定死。
把三段接成闭环
小艾智能体的做法,是把这三段做成一条贯通的流程,配置用 JSON 或 YAML 完成。
文档处理引擎负责入口这一段,自动识别格式后解析、语义切分、转向量,Milvus 存向量、Elasticsearch 管关键词、Neo4j 存三元组关系。检索侧做混合召回,余弦相似度落在 [-1,1] 区间,BM25 是无界分数,两者量纲不可比,直接加权相加会被量级大的一路主导,这里用 reciprocal rank fusion 按排名融合,必要时再加一层 cross-encoder 重排。
编排层内置二十余类节点,覆盖 LLM 推理、条件分支、REST 调用、数据提取、文本摘要、代码审查、会议纪要等,条件路由与并行执行都在配置里声明,状态由检查点持久化。Skills 用 Markdown 声明能力描述、输入参数与输出结构,新增技能启动即注册,Agent 通过 Skill 节点在运行时调用。反馈侧会可形成待审核知识候选条目,并经规则或人工审核后入库。