KnowForge
先进的 Python CLI 智能知识库与知识图谱 Agent 开发平台
KnowForge 是一个纯 Python、CLI 优先、嵌入式零依赖的智能知识库与知识图谱 Agent 平台。它融合了 RAG 检索、知识图谱推理与 LangGraph 多智能体编排,灵感来源于 Yuxi 项目,但在部署形态、技术选型与开发体验上做了深度优化。
核心特性
-
CLI 优先:基于 Typer + Rich 的现代终端体验,流式输出、语法高亮、引用面板
-
零外部依赖:SQLite + ChromaDB + KùzuDB 全嵌入式,
pip install即用 -
混合检索:向量检索 + BM25 + 知识图谱多跳子图,RRF 融合 + Cross-Encoder 重排
-
知识图谱:LLM 驱动的实体/关系抽取,KùzuDB 嵌入式图存储,可视化探索
-
Agent 编排:LangGraph 状态机 + 中间件链 + 子智能体 + 沙箱文件系统
-
Skills 系统:YAML 定义技能,pip entry_points 插件机制,支持远程安装
-
MCP 集成:标准协议接入外部工具服务,统一启停与权限管理
-
多租户:Profile 隔离 + RBAC + 数据沙箱,单机多用户/多项目
-
异步任务:SQLite-backed 任务队列,长任务可取消、流式输出
-
可观测:structlog 结构化日志 + OpenTelemetry-ready + LangSmith 兼容追踪
-
本地优先:可选 Ollama 集成实现完全离线运行
快速开始
# 安装
pip install knowforge
# 初始化
knowforge config init
# 创建知识库并摄入文档
knowforge kb create my-kb
knowforge kb ingest my-kb ./docs/
# 创建 Agent
knowforge agent create research-agent --kb my-kb
# 对话
knowforge chat -a research-agent
文档
许可证
MIT
KnowForge 解决方案文档
先进的 Python CLI 智能知识库与知识图谱 Agent 开发平台
1. 项目背景
1.1 行业现状
随着大语言模型(LLM)的快速演进,企业对"让 AI 真正理解私有知识并完成复杂任务"的需求急剧增长。单纯的对话式 LLM 存在三大短板:知识时效性差、缺乏可溯源引用、无法执行真实任务。检索增强生成(RAG)与知识图谱(KG)成为业界公认的关键补丁,但现有方案普遍存在以下问题:
第一,部署门槛过高。主流方案(如 Dify、FastGPT、Yuxi)依赖 PostgreSQL、Redis、Milvus、Neo4j、MinIO 等多个外部服务,需要 Docker Compose 编排,对个人开发者与中小企业极不友好。冷启动一个完整环境往往需要 5-10 分钟,消耗数 GB 内存。
第二,前后端耦合严重。这些平台均采用 Vue/React 前端 + FastAPI 后端的架构,前端代码量通常占整体 40% 以上,但对于命令行优先的开发者、CI/CD 集成场景、自动化脚本场景而言,前端是纯粹的负担。
第三,知识图谱与 RAG 割裂。多数平台要么只做向量检索(无图谱推理能力),要么把图谱作为独立模块(与 RAG 检索脱节)。Yuxi 率先尝试融合二者,但其图谱构建依赖 Neo4j 外部服务,部署成本依然高昂。
第四,扩展机制封闭。Skills、Tools、Parsers 通常硬编码在主仓库中,第三方难以贡献。缺乏标准的插件协议,导致生态难以繁荣。
1.2 Yuxi 项目分析
Yuxi(语析)是一个值得深入研究的参考实现。它由江南大学博士研究生开发,定位为"结合知识库、知识图谱管理的多租户 Agent Harness 平台",技术栈如下:
| 层 | Yuxi 技术选型 |
|---|---|
| 前端 | Vue 3 + Vite + Pinia |
| 后端 | FastAPI + LangGraph + ARQ |
| 存储 | PostgreSQL + Redis + MinIO + Milvus + Neo4j |
| 文档解析 | MinerU + PaddleX + RapidOCR |
| 部署 | Docker Compose |
Yuxi 的核心亮点包括:Agentic RAG(智能体自主决定检索时机)、沙箱文件系统(每会话独立 workspace)、Skills 系统(图像生成、深度报告等)、MCP 集成、子智能体编排、中间件链(检索注入、附件处理、历史摘要、动态工具注入)、15+ LLM Provider 支持。
但 Yuxi 也存在明显不足:
-
部署重:5 个外部服务(PG/Redis/MinIO/Milvus/Neo4j),冷启动慢
-
前端依赖:Vue 前端对 CLI 场景是冗余
-
图谱外部化:Neo4j 需独立部署,单机用户负担重
-
扩展性弱:Skills/Tools 硬编码,无标准插件协议
-
可观测性不足:缺乏 OpenTelemetry 集成
-
本地优先缺失:无 Ollama 一键离线模式
1.3 KnowForge 的定位
KnowForge 旨在深度优化 Yuxi 的核心理念,以"纯 Python、CLI 优先、嵌入式零依赖"的形态,提供一个开发者友好、部署极简、扩展开放的智能知识库与知识图谱 Agent 平台。它不是 Yuxi 的复刻,而是对其架构的重新思考与进化。
2. 设计目标
2.1 核心目标
| 目标 | 量化指标 |
|---|---|
| 零外部依赖 | pip install knowforge && knowforge config init 即可用,无需 Docker |
| 冷启动快 | < 3 秒(不含模型加载) |
| 内存占用低 | 空载 < 200MB |
| 检索质量高 | 混合检索 + 重排,Top-5 命中率 > 90% |
| 图谱推理 | 支持 2-3 跳子图检索,参与 RAG 增强 |
| 扩展开放 | pip entry_points 插件机制,第三方零侵入 |
| 可观测 | structlog + OpenTelemetry-ready + LangSmith 兼容 |
| 离线优先 | 可选 Ollama 集成,完全离线运行 |
2.2 设计原则
原则一:CLI 优先,终端即界面。 所有交互通过 Typer + Rich 提供的终端体验完成,流式输出、语法高亮、引用面板、进度条一应俱全。这并非退步,而是对开发者工作流的回归——终端是可脚本化、可管道化、可版本控制的界面。
原则二:嵌入式一切。 SQLite 替代 PostgreSQL,ChromaDB 替代 Milvus,KùzuDB 替代 Neo4j,本地文件系统替代 MinIO,diskcache 替代 Redis(缓存场景)。所有存储都是嵌入式进程内组件,零外部服务。
原则三:插件化扩展。 Skills、Tools、Parsers、Embedders、LLM Providers 全部通过 pip entry_points 注册,第三方包只需在 pyproject.toml 声明 entry_points 即可被 KnowForge 自动发现与加载,无需修改主仓库。
原则四:可观测优先。 从第一天起就内置结构化日志(structlog)、分布式追踪(OpenTelemetry)、指标采集(Meter),并与 LangSmith 兼容,方便调试与优化。
原则五:渐进式复杂度。 默认配置极简(单命令初始化),但所有高级特性(多租户、异步任务、MCP、子智能体)都可通过配置开启,不强制用户面对全部复杂度。
3. 与 Yuxi 的深度对比
| 维度 | Yuxi | KnowForge |
|---|---|---|
| 部署形态 | Docker Compose(5+ 外部服务) | pip install(零外部服务) |
| 界面 | Vue 3 前端 + FastAPI 后端 | 纯 CLI(Typer + Rich) |
| 元数据存储 | PostgreSQL | SQLite(嵌入式) |
| 向量库 | Milvus(独立服务) | ChromaDB(嵌入式) |
| 图数据库 | Neo4j(独立服务) | KùzuDB(嵌入式) |
| 对象存储 | MinIO | 本地文件系统 |
| 缓存 | Redis | diskcache(嵌入式) |
| 异步任务 | ARQ + Redis | asyncio + SQLite-backed 队列 |
| Agent 编排 | LangGraph | LangGraph(保留) |
| 文档解析 | MinerU + PaddleX + RapidOCR | PyMuPDF + python-docx/openpyxl/pptx + BeautifulSoup(可选 MinerU) |
| 嵌入模型 | OpenAI/智谱等云端 | 本地 sentence-transformers 优先 + 云端可选 |
| 重排器 | 无明确 | BGE cross-encoder |
| 检索策略 | 向量 + 图谱 | 向量 + BM25 + 图谱(RRF 融合 + 重排) |
| 插件机制 | 硬编码 | pip entry_points |
| 多租户 | 数据库层 | Profile + Tenant 双层 |
| 可观测 | 基础日志 | structlog + OpenTelemetry |
| 离线模式 | 无 | Ollama 集成 |
| 代码量 | 前后端 ~5 万行 | 纯 Python ~7 千行 |
| 学习曲线 | 需懂前后端 | 仅 Python |
4. 技术选型理由
4.1 为什么选 SQLite 而非 PostgreSQL
SQLite 是世界上部署量最大的数据库,单文件持久化、零配置、ACID 事务、WAL 模式支持并发读。对于单机 CLI 场景,SQLite 的性能完全够用(单机写入 > 10K TPS)。PostgreSQL 的优势在于多客户端并发与高级特性(如 JSONB 索引、全文检索),但这些对 CLI 场景并非必需。选择 SQLite 让用户免去数据库运维负担。
4.2 为什么选 ChromaDB 而非 Milvus
ChromaDB 是嵌入式向量数据库,纯 Python 实现,单进程内运行,数据持久化到本地目录。Milvus 是分布式向量数据库,适合大规模生产场景,但部署需要 etcd + MinIO + Milvus 至少三个服务。对于 10 万级以下的向量数据,ChromaDB 的 HNSW 索引性能与 Milvus 差距不大,但部署成本天壤之别。
4.3 为什么选 KùzuDB 而非 Neo4j
Kùzu 是一个嵌入式图数据库(类似 DuckDB 之于关系数据库),由滑铁卢大学开发,单文件持久化,支持 Cypher 查询语言。Neo4j Community 版本虽免费但需独立部署,Enterprise 版本收费。Kùzu 让知识图谱能力成为"开箱即用"的基础设施,而非需要额外运维的组件。
4.4 为什么选 LangGraph 保留
LangGraph 是 LangChain 出品的状态机式 Agent 编排框架,支持循环、条件分支、并行节点、人机协同(human-in-the-loop)。它是目前最成熟的 Agent 编排抽象,社区活跃、文档完善。KnowForge 保留 LangGraph 作为编排核心,避免重复造轮子,同时聚焦于知识引擎与 CLI 体验的创新。
4.5 为什么 CLI 优先
CLI 不是退步,而是对开发者工作流的回归。CLI 的优势:可脚本化(管道、重定向)、可版本控制(配置即代码)、可远程执行(SSH)、可 CI/CD 集成、资源占用低。对于知识库管理、批量摄入、自动化评测等场景,CLI 比 Web 界面高效得多。Rich 库让现代终端 UI 同样美观——流式输出、语法高亮、表格、进度条、面板一应俱全。
5. 适用场景
5.1 个人开发者知识管理
开发者可将技术文档、博客、笔记摄入知识库,通过 CLI 快速检索与问答,构建个人"第二大脑"。所有数据本地存储,隐私可控。
5.2 企业内部知识库
中小企业无需运维复杂基础设施,单机部署即可服务团队。多 Profile 实现项目隔离,RBAC 控制访问权限。异步任务支持批量摄入大型文档集。
5.3 研究与教育
研究人员可摄入论文、数据集、实验记录,利用知识图谱发现实体间隐含关系。学生可基于此平台学习 RAG、KG、Agent 编排的工程实践。
5.4 CI/CD 集成
将 KnowForge 嵌入 CI 流水线,实现:代码文档自动摄入、PR 问答机器人、技术决策报告自动生成。CLI 原生支持 JSON 输出,便于与其他工具链集成。
5.5 离线场景
通过 Ollama 集成本地 LLM,配合本地嵌入模型(sentence-transformers),实现完全离线的智能知识库,适用于内网、保密、无网络环境。
6. 方案优势总结
KnowForge 相比 Yuxi 与同类方案的核心优势可归纳为五点:
部署极简:一条 pip install + 一条 config init,3 秒内可用,无需 Docker、无需外部服务。
体验现代:Rich TUI 提供流式输出、语法高亮、引用面板、进度条,终端体验不输 Web 界面,且可脚本化。
检索先进:向量 + BM25 + 知识图谱三路融合,RRF 排序 + Cross-Encoder 重排,引用可溯源到文档与页码。
扩展开放:pip entry_points 插件机制,Skills/Tools/Parsers/Embedders/LLM Providers 全可第三方扩展,零侵入。
可观测:structlog 结构化日志 + OpenTelemetry 分布式追踪 + LangSmith 兼容,调试与优化有据可依。
7. 风险与缓解
| 风险 | 缓解措施 |
|---|---|
| SQLite 并发写入瓶颈 | WAL 模式 + busy_timeout;写入串行化到单 Worker |
| ChromaDB 大规模性能 | 提供 Qdrant/Milvus 适配器(可选依赖) |
| KùzuDB 生态不如 Neo4j | 保留 Neo4j 适配器接口;Cypher 兼容降低迁移成本 |
| CLI 不适合非技术用户 | 后续可叠加 Web UI 作为可选插件,不污染核心 |
| 本地嵌入模型质量 | 默认 BGE 中文模型,可切换 OpenAI/智谱嵌入 |
| LangGraph 版本变动 | 锁定版本 + 抽象层隔离 |
8. 后续路线图
-
v0.2:Web UI 插件(可选)、Qdrant 适配器、Neo4j 适配器
-
v0.3:多模态文档解析(图片 OCR、表格结构化)、Agent 评测框架
-
v0.4:联邦学习(多 KnowForge 节点知识共享)、知识图谱可视化 TUI
-
v0.5:MCP Server 模式(KnowForge 作为 MCP 服务器被其他 Agent 调用)
