企业知识不是一堆静态事实,而是一句句带时间戳的断言。这句话听起来抽象,落到生产环境的RAG(检索增强生成)管线上,就是一个几乎人人都会撞上的失效场景。
![]()
员工提问:"我们的一级企业折扣门槛是多少?"检索器扫过50万份内部文档,找到一份2022年的Confluence页面,上面写着"折扣从10万美元起"。BM25得分极高,嵌入余弦相似度0.94,这份文档在上下文里排到第一或第二。大模型读完,信心十足地回答:门槛是10万美元。
文档高度相关,内容完全过时。六个月后,财务副总裁签署了一份更新:"自2023年第三季度起,企业折扣门槛提高至25万美元,取代此前所有指引。"但另外八份内部文档仍在引用旧的10万美元。如果智能体用多数投票,旧文档以8比1获胜;如果检索器用向量相似度,旧文档的措辞比修订备忘录更贴合查询。模型没有幻觉,它只是忠实地总结了被喂给它的证据。
为此,团队构建了Canon——一个由FalkorDB驱动的企业AI时间真相层。它位于检索与生成之间,把文档转成一张时间断言图,在语言模型看到证据之前,先判定哪些证据仍然有效。
核心原语:时间切割
Canon不把企业语料当成无组织的文本块桶,而是把断言结构化为时间图。2022年的文档断言"10万美元",该命题状态被标记为"已被取代";一份带来源、带时间戳的CanonEvent通过取代关系指向它;新命题状态为"有效",值为25万美元。
查询到来时,Canon执行时间切割:先用标准高召回检索(BM25或稠密嵌入)取出候选文档;再在FalkorDB中遍历这些候选所断言的命题;凡是被更晚的有效事件通过取代关系指向的命题,一律标记无效;把失效文档从提示窗口中剔除;最后从原始排序中回填下一份最佳候选,保证模型仍拿到完整的上下文窗口。
这套架构的好处是责任划分清晰:检索器决定什么相关,FalkorDB图决定什么仍然为真。
为什么选FalkorDB当引擎
查询时的时间图遍历不能给LLM管线增加200毫秒延迟,图解析必须在提示序列化之前以个位数毫秒完成。团队给出三个理由:一是遍历速度,一条查询即可判断文档是否被取代;二是实体与别名解析,企业文档里同一个人、团队、产品有几十种叫法,图中存储了1488个节点和1661条关系,其中包括985个Person节点和300个Alias节点,通过解析关系边连接,用户追问某人某次更新前的决定时,所有别名都能被解析并沿历史断言遍历。
基准测试:511958份文档
测试没有用玩具数据集,而是在Enterprise RAG-Bench上评估,包含511958份真实企业文档(4.03GB语料库),配有官方人工标注的冲突问题。每次测试都在严格约束下运行:完全相同的模型、完全相同的提示、完全相同的BM25检索器、完全相同的10文档上下文预算。
为了证明12.5%的正确率提升不是上下文变短带来的假象,团队做了负对照:随机剔除同样数量的文档。结果随机对照组得分恰好70.0%,与基线完全一致。全部性能增益来自精确知道该剔除哪一份文档。
在实时验证方面,自动化测试脚本对FalkorDB执行7项检查,包括连接与模式校验(验证20个断言键、19个已解析转换、1个争议案例)、有效与争议完整性、时间切割验证、对抗性取代(注入冲突断言,确认显式取代语法永远胜过重复次数)、数据库重启持久性——测试在执行中途对FalkorDB容器执行docker restart,重启后重新查询图,所有状态、关系和断言键100%完好。7项检查全部通过,单元测试套件71/71通过。
项目已开源,四条命令即可复现:克隆仓库、用Docker启动FalkorDB、安装依赖并跑测试、运行实时验证套件。完整技术栈还带交互界面,可查看实时仪表盘、探索切割可视化器并实时测试查询。
团队总结了三件事:没有时间图的RAG本质上脆弱,随着企业代码库和文档库增长,最相似的文档恰好过时的概率趋近于确定;图数据库属于推理路径,FalkorDB快到足以在生成过程中充当内联查询闸门;诚实的系统在歧义面前选择弃权,当两份有效文档冲突且没有显式取代条款时,Canon不猜测不幻觉,而是把冲突标记为争议,同时保留历史语境与当下真相。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.