WeKnora 知识图谱:把文档实体关系和 RAG 检索链路变成看得见的图
【免费下载链接】WeKnoraOpen-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.项目地址: https://gitcode.com/GitHub_Trending/we/WeKnora
你往知识库传了几百页产品手册,模型答得头头是道,但同事追问"这个结论依据哪条条款"时,你只能回翻原文慢慢找。WeKnora 的做法是把两样东西直接画出来:实体之间连成什么网,答案又是怎么一步步检索出来的。
WeKnora 是什么:一个把文档变成可查询知识的开源平台
WeKnora 是一个自托管的 LLM 知识平台,核心思路是把原始文档加工成三层能力:基于 RAG 的快速问答、能自主编排检索与 MCP 工具的 ReAct Agent,以及让 Agent 自动蒸馏文档、自我维护的 Wiki 模式。你上传的每一份文档都会被解析、切分、建索引,后续无论是提问、图谱查询还是 Wiki 页面生成,都建立在这套索引之上。
整体架构分四层:接入层(Web 前端、Go SDK、IM 集成)、REST API 服务、核心服务(文档处理、向量检索、LLM 推理、会话管理),以及底层的 OCR、Embedding、向量存储与 PostgreSQL。
知识图谱:散落文档里的实体是怎么连成网的
你遇到的问题:纯关键词检索只认字面,"退款规则"和"退货政策"字面上完全不同,但讲的都是同一件事。文档里的语义关联靠人脑串,串到第三页就断了。
它的处理:构建逻辑在图谱构建模块里。文档切分成 chunk 后,LLM 从每个 chunk 里抽取实体(带标题、描述、出现频次),再抽取实体间的有向关系并给出强度分。每条边的权重不是拍脑袋给的,而是点互信息(PMI)和关系强度按PMIWeight=0.6、StrengthWeight=0.4的配比归一化后加权得出;实体不直接相连、只隔了一跳的关系,权重再按IndirectRelationWeightDecay=0.5衰减,避免"弱关联"被误当成强关联。
你看到的效果:在知识库的"图谱"标签页,节点大小对应实体出现频次,边的粗细对应关系权重。以电商文档为例,"优惠券"节点会同时连着"订单状态"和"退款规则",点开节点右侧面板直接显示它的描述和涉及的文档片段,不用回原文搜索。
检索链路:答案怎么来的,每一步都有痕迹
你遇到的问题:RAG 系统最容易挨问的一句话是"为什么得到这个答案"。只给结果不给过程,答案的可信度就靠模型自觉。
它的处理:检索走混合策略,BM25 稀疏检索管字面命中,向量检索管语义相近,两路结果合并后再经过重排。检索引擎的详细配置(父子切分、GraphRAG、HNSW 加速的 pgvector 等)见检索引擎文档。
你看到的效果:问答界面会按步骤展示"已完成问题理解 → 检索中知识库 → 找到 N 个结果 → 完成",并在答案上方标注"检索完成、引用了 1 篇文档"。答案里的引用可以直接点开跳到对应文档和分块,审一遍就知道模型有没有读偏。
Wiki 模式:图谱不只看,还能改和回滚
除了即时检索,WeKnora 的 Wiki 模式让 Agent 把原始文档蒸馏成互相链接的 Markdown 页面,自动组织成分层目录。关键点是这个知识图谱产物是"可运维"的:每页都有版本快照,支持行级 diff 和一键回滚,也可以直接在浏览器里手动编辑。Agent 生成错了,改回来即可,不用重新灌库。
从克隆到看见第一张图的最短路径
git clone https://gitcode.com/GitHub_Trending/we/WeKnora拉下仓库,在.env里配好 LLM 和 Embedding 模型(名称、维度、Base URL)。- 启动服务并带上图谱组件:
docker compose pull docker compose --profile neo4j up -d- 打开
http://localhost,进入知识库设置页启用实体和关系提取,上传一份文档,等后台跑完抽取。 - 在知识库的"图谱"标签页查看自动生成的实体关系图,或者登录
http://localhost:7474执行match (n) return (n)从 Neo4j 侧核对。 - 回到对话页提一个跨文档的问题,对照上方展示的检索步骤和引用分块,验证检索链路。
两个容易踩的坑
📌图谱不是默认开启的:Neo4j 是 compose 的独立 profile,不显式带--profile neo4j起服务,.env里NEO4J_ENABLE=true配了也不会生效。启动后记得用NEO4J_URI=bolt://neo4j:7687这个默认地址核对连接。
💡图谱"脏了"先查并发和批处理参数:实体抽取默认MaxConcurrentEntityExtractions=4并发、关系抽取按DefaultRelationBatchSize=5分批,LLM 负载高时抽取质量会波动。如果某条边的权重明显偏低,优先怀疑是 PMI 样本量不足(出现次数少),而不是边本身没连对——衰减系数会再打五折。另外上传后文档一直卡在解析不动,多半是 Embedding 模型没配全,常见问题文档第 3 节有完整排查清单。
下一步想深入的话,建议从 Wiki 模式文档 开始看 Agent 是怎么组织页面链接的,再配合 MCP Server 说明 把这套检索和图谱能力接到你自己的应用里。
【免费下载链接】WeKnoraOpen-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.项目地址: https://gitcode.com/GitHub_Trending/we/WeKnora
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考