如何用 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_KEY | backend/.env | LLM 调用与默认 embedding 的密钥 |
EMBEDDING_MODEL | backend/.env | 嵌入模型,默认 all-MiniLM-L6-v2 可不改 |
VITE_LLM_MODELS | frontend/.env | 前端下拉框里可选的 LLM 模型 |
VITE_REACT_APP_SOURCES | frontend/.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),仅供参考