← 返回全部文章

Utopia:把企业知识库变成一台能回放的时间机器

Utopia 是一个用 Rust 写的开源企业知识系统。它记录事实何时发生、系统何时知道,并把文档来源、检索和权限放在同一个应用里,适合需要追溯历史版本的内网团队。

企业知识库常见的做法,是把文档切块、做向量,然后接一个聊天窗口。最新版的制度和合同能搜到,旧版本却容易被覆盖。

Utopia 处理的是另一种问题:去年某天,这条信息到底是什么状态?当时系统知道什么?后来是谁改了它?

它是 DeepLethe 开源的企业知识系统,用 Rust 编写。项目把文档解析、知识图谱、全文检索、向量检索、权限和问答放在同一个 Web 应用里。

Utopia 的时间记录分成两条线。一条记录事实在现实中什么时候成立,另一条记录系统什么时候知道,或者相信这条事实。事实更新时,旧记录会被关闭,再写入新的版本,不会直接覆盖。

这就能查两种问题:现在的负责人是谁,以及去年某天的负责人是谁。制度改版前写了什么,也能留下记录。一次决策当时参考了哪些材料,后面发现信息有误时,也能回头看当时的依据。

这个设计对合同、制度、客户交接和项目决策比较有用。普通个人笔记未必需要这么复杂。

另一个我比较看重的地方是出处。

Utopia 可以从 PDF、DOCX、PPTX、XLSX、CSV、Markdown、HTML 和纯文本里提取实体与事实。问答结果支持行内引用,点进去可以回到对应的原始段落。你不需要只相信模型给出的那句话,还能继续查它来自哪份材料、对应哪个版本。

搜索部分同时用了全文检索和向量检索,再用 RRF 合并结果。模型端点支持 OpenAI 兼容接口,README 里列了 DeepSeek、Qwen、GLM、Ollama 和 vLLM。模型服务可以放在内网,资料也可以留在自己的机器上。

部署结构相对简单。一个 Rust 二进制文件,加一个 PostgreSQL 数据库。全文搜索放在程序里,向量使用 pgvector,任务队列直接用数据库表,不强制依赖 Elasticsearch、独立向量数据库或消息队列。

服务少,维护起来会轻松一些,但 PostgreSQL、模型服务、存储、备份、权限和升级还是要自己管。内网部署也不等于自动安全,尤其是数据库备份和访问控制,不能因为服务跑在内网就跳过。

项目 README 给出的快速启动命令是:

git clone https://github.com/deeplethe/utopia.git
cd utopia
docker compose --profile app up -d

启动后访问 http://localhost:1516。第一个注册账号会成为管理员。导入资料前,还要在系统设置里配置聊天模型和嵌入模型端点。

Utopia 目前是 v0.1。数据库结构还会变化,迁移只向前推进,没有回滚。README 里的决策推理、执行门和更多数据连接器,也还在路线图里。

这个版本更适合拿来研究和试运行。要放进真实企业环境,至少要先把权限、备份、模型服务、数据删除和升级策略想清楚。它可以记录知识变化和资料来源,但不会自动替你判断哪条业务规则正确,也不会因为接上聊天模型就变成一个能替公司做决定的系统。

我会把 Utopia 推荐给需要追踪制度、合同、客户负责人或项目决策变化的团队。只想给个人笔记加一个问答入口的人,可以先找轻一点的方案。

项目地址: