ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何用 llm-graph-builder 构建知识图谱

如何用 llm-graph-builder 构建知识图谱

如何用 llm-graph-builder 构建知识图谱

【免费下载链接】llm-graph-builderNeo4j graph construction from unstructured data using LLMs项目地址: https://gitcode.com/GitHub_Trending/ll/llm-graph-builder

你手边压着一份 80 页的行业 PDF,想把它变成可追问的知识图谱。llm-graph-builder 用 LLM 把 PDF、网页、YouTube 视频等非结构化数据抽取成实体与关系,存入 Neo4j,并提供图谱可视化与基于图谱的问答。

它到底能干什么

  • 实体关系抽取:LLM 从文本块中读出节点与边
  • 多源数据接入:本地文件、网页、YouTube、Wikipedia、S3、GCS 六种入口
  • 图谱可视化:实体、社区、文档块三种视图,可跳转 Neo4j Bloom
  • 图谱问答:五种检索模式,答案附来源引用

它不做什么:这不是一个通用 RAG 平台,也没有图谱推理引擎——它聚焦"非结构化数据 → Neo4j 知识图谱"这一段,图谱建好之后怎么用,由你自己接。

⚡ 五分钟跑起来

环境要求不高:Docker Engine 20.10+、Compose v2+,8GB 内存起步;图数据库用 Neo4j Aura 免费层或本地 5.23+ 实例即可。最短路径如下:

git clone https://gitcode.com/GitHub_Trending/ll/llm-graph-builder cd llm-graph-builder cp backend/example.env backend/.env cp frontend/example.env frontend/.env

在两份.env里只动这几个关键项,其余几十项保持默认就行:

OPENAI_API_KEY="your-key" EMBEDDING_MODEL="all-MiniLM-L6-v2" VITE_LLM_MODELS="diffbot,openai_gpt_5.4_mini,gemini_3.5_flash" VITE_REACT_APP_SOURCES="local,youtube,wiki,s3,web"

前两行写入backend/.env,后两行写入frontend/.env。然后一条命令拉起前后端:

docker-compose up --build -d

启动后前端在http://localhost:8080,后端 API 文档在http://localhost:8000/docs。想脱离容器做开发,在两个目录下分别pip install -r requirements.txt和yarn install后跑 uvicorn 与 vite 即可。想接本地模型,在backend/.env加一行LLM_MODEL_CONFIG_OLLAMA_LLAMA3="llama3,http://host.docker.internal:11434",再把模型名追加进VITE_LLM_MODELS。

关键参数速查:

参数文件说明
OPENAI_API_KEYbackend/.envLLM 调用与默认 embedding 的密钥
EMBEDDING_MODELbackend/.env嵌入模型,默认 all-MiniLM-L6-v2 可不改
VITE_LLM_MODELSfrontend/.env前端下拉框里可选的 LLM 模型
VITE_REACT_APP_SOURCESfrontend/.env左侧启用哪些数据源入口

把数据喂进去

左侧面板按来源分区,操作差异很小:

  • 本地文件:拖进Drag & Drop区域,PDF、TXT 直接上传
  • Web 页面:输入 URL 由 Diffbot 抓正文(需DIFFBOT_API_KEY);Wikipedia 入口按词条标题取内容
  • YouTube:提取视频转录文本,需要配置YOUTUBE_TRANSCRIPT_PROXY
  • 云端存储:填 S3 或 GCS 桶名,扫描后批量导入

上传后文件状态是New。勾选文件、在左下角选好 LLM 模型,点Generate Graph,状态会进入处理中,结束后变Completed(失败为Failed,可重试并转为Ready to Reprocess)。

看着图谱长出来

整条链路是这样的:顶部点Connect,填入 Neo4j 或 Aura 凭证,连接信息保存后免重复输入。回到文件表勾选要处理的文件,可选地展开Graph Enhancements上传一份 JSON schema 约束实体类型——没有现成的就跳过,让 LLM 自由发挥。模型选好,点Generate Graph:后端按 backend/src/create_chunks.py 把文本切块,逐块抽取实体与关系,再经 backend/src/graphDB_dataAccess.py 写入图数据库。

完成后点Preview Graph看内嵌预览,或Explore Graph跳转 Neo4j Bloom 深钻。内嵌预览里三种视图各管一件事:

  • 实体视图:全局节点与关系一张图,查抽取质量、找噪声实体
  • 社区视图:按主题聚类,快速看清一份文档讲了哪几块
  • 文档块视图:核对每个 chunk 与源文档的对应关系,定位问题段落

和图谱对话

右上角聊天面板的五种模式,差异一句话讲清:

  • Vector:只对文本块嵌入做相似度检索,链路最短
  • Graph:纯图谱路径查询,沿实体关系取上下文
  • Graph+Vector:图谱连接 + 向量检索合并,推荐默认项——后端默认模式就是它(CHAT_DEFAULT_MODE),语义与关键词两头都不丢
  • Hybrid:混合检索,在语义相似之外再压一层全文匹配
  • Entity Vector:基于实体嵌入检索,需先在Graph Enhancements里开启实体嵌入生成

各模式的检索逻辑集中在 backend/src/QA_integration.py。

进阶旋钮都收在Graph Enhancements弹窗里:

  • 自定义 schema:上传 JSON 定义实体与关系类型,或选内置模板,约束抽取结果
  • 重复实体合并:按文本相似度归并同义节点,阈值由DUPLICATE_SCORE_VALUE控制
  • 孤立节点清理:删掉没有任何关系的节点
  • 实体嵌入生成:为实体建向量索引,解锁 Entity Vector 模式

🔍 踩坑地图

Neo4j 连接

症状:点Connect后长时间转圈 原因:URI 格式不完整,缺端口或协议写错 处方:Aura 实例必须neo4j+s://开头且带:7687,本地实例同样补全端口

症状:连接报认证失败 原因:密码不是实例创建时那份,或本地 Neo4j 未开启认证却填了空密码 处方:回控制台拿创建时生成的初始密码;本地实例确认已启用认证

LLM 调用

症状:文件一直是 New,点生成后卡住 原因:模型名在VITE_LLM_MODELS里,但backend/.env没配对应密钥 处方:按 example.env 里LLM_MODEL_CONFIG_DIFFBOT="diffbot,diffbot_api_key"的格式逐项补齐

症状:embedding 相关报错 原因:EMBEDDING_MODEL设为 openai 却没配OPENAI_API_KEY处方:改回默认all-MiniLM-L6-v2,sentence-transformer 本地推理,不需要 key

性能

症状:大 PDF 处理慢得离谱 原因:VITE_TOKENS_PER_CHUNK太小,LLM 调用次数被拉长 处方:调大单块 token 数或VITE_CHUNK_TO_COMBINE的合并块数,用一点粒度换速度

症状:图谱页面渲染卡顿 原因:单次查询返回节点过多 处方:在 frontend/src/components/Graph/GraphPropertiesPanel.tsx 对应的属性面板里缩小节点与关系数量

接口与配置的完整说明在 docs/backend/backend_docs.adoc 与 docs/frontend/frontend_docs.adoc。跑不通时到仓库 issue 区贴出报错日志与脱敏后的.env配置,附上你的模型与 Neo4j 版本。

【免费下载链接】llm-graph-builderNeo4j graph construction from unstructured data using LLMs项目地址: https://gitcode.com/GitHub_Trending/ll/llm-graph-builder

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进