一天一个开源项目(第61篇):knowledge_graph - 把任意文本转成知识图谱

引言

"Convert any text to a graph of knowledge. Graph Retrieval Augmented Generation (GRAG) --- a new and improved version of RAG."

这是「一天一个开源项目」系列的第 61 篇文章。今天介绍的项目是 knowledge_graphGitHub)。

想把文档、PDF 转成可查询、可可视化的知识图谱?knowledge_graphLLM 提取概念 (非实体)、构建节点与边 ,支持 GRAG(图检索增强生成) 、中心性分析、社区发现。采用 no-GPT 方案 :本地 Mistral 7B + Ollama,零 API 成本,Docker 一键运行。

你将学到什么

  • 知识图谱的构建流程
  • 概念 vs 实体的区别
  • W1(语义关系)与 W2(上下文邻近)双权重
  • GRAG 与 RAG 的对比
  • 本地 Ollama + Docker 快速开始

前置知识

  • 对 RAG、知识图谱有基本了解
  • 有 Docker 或本地 Ollama 环境(可选)

项目背景

项目简介

knowledge_graph 是 rahulnyk 开源的文本转知识图谱 项目。从 PDF 等文本语料中,用 LLM 提取概念(concepts)而非实体(entities),例如「班加罗尔」是实体,「班加罗尔宜人天气」是概念;概念在同一文本块中共现则视为相关。构建出的图谱可用于 GRAG、中心性计算、社区聚类等。

作者

  • 作者:rahulnyk
  • 理念:概念比实体更有意义;本地 LLM 零成本;可扩展为图数据库

项目数据


主要功能

核心流程

  1. 分块:将文本语料切分为 chunks,分配 chunk_id
  2. 提取概念与关系:用 LLM 从每个 chunk 提取概念及其语义关系,权重 W1
  3. 上下文邻近:同一 chunk 内共现的概念视为相关,权重 W2
  4. 合并边:对相同概念对合并权重、拼接关系,得到唯一边
  5. 计算度与社区:节点度(用于 sizing)、社区(用于 coloring)

概念 vs 实体

类型 示例 说明
实体 Bangalore、医生 具体对象、人名、地名
概念 Pleasant weather in Bangalore、医生与患者关系 情境、关系、抽象概念
本项目 提取概念 作者经验:概念比实体更有意义的 KG

使用场景

  1. GRAG:用图谱作为检索器,与文档进行更深层对话
  2. 中心性分析:识别文本中最重要的概念
  3. 社区发现:将概念聚类,分析主题结构
  4. 可视化:用 Pyvis 生成可托管到网页的交互图

快速开始

Docker(推荐)

bash 复制代码
git clone https://github.com/rahulnyk/knowledge_graph.git
cd knowledge_graph
docker build -t knowledge-graph .
docker run -p 8888:8888 knowledge-graph

访问 Jupyter(端口 8888)。

本地 Ollama

  1. 安装 Ollama
  2. 运行 ollama run zephyr(或 Mistral 7B OpenOrca)
  3. 修改 extract_graph.ipynb 中的输入文本/PDF 路径,运行 notebook

核心 Notebookextract_graph.ipynb

技术栈

组件 说明
Mistral 7B OpenOrca 提取概念的 LLM,通过 Ollama 本地运行
Ollama 本地托管模型,零 API 成本
Pandas 图 schema 的 dataframe(可后续换图数据库)
NetworkX 图结构与算法
Pyvis 生成可网页托管的 JS 图可视化

项目优势

对比项 knowledge_graph 传统 NER + 关系抽取 纯向量 RAG
提取对象 概念 实体 无显式结构
关系 语义 + 上下文邻近 预定义关系类型
成本 本地 LLM,零 API 视实现而定 向量化有成本
检索方式 图检索(GRAG) 图查询 向量相似度
可解释性 高,可追溯边与 chunk

项目详细剖析

双权重设计

  • W1:LLM 提取的语义关系,同一概念对可有多种关系
  • W2:同一 chunk 内共现的上下文邻近关系
  • 合并:相同概念对合并,权重相加,关系列表拼接

待改进方向(社区建议)

后端

  • 用 embedding 去重语义相似概念(如 "doctor" 与 "doctors")
  • 过滤冗余、离群概念
  • 优化上下文邻近,避免高频概念过重

前端

  • 按兴趣/主题展开子概念
  • 更实用的图谱浏览与导航

目录结构

bash 复制代码
knowledge_graph/
├── extract_graph.ipynb   # 核心提取 notebook
├── ner.ipynb             # NER 相关
├── data_input/           # 输入数据
├── data_output/          # 输出
├── helpers/              # 辅助函数
├── ollama/               # Ollama 相关
├── dockerfile
└── pyproject.toml

项目地址与资源

官方资源

适用人群

  • 需要从文档构建知识图谱的开发者
  • 探索 GRAG、图检索增强的团队
  • 希望零 API 成本、本地运行的 RAG/GRAG 用户
  • 对概念抽取、图可视化感兴趣的研究者

欢迎来我中的个人主页找到更多有用的知识和有趣的产品

相关推荐
wdf80882 小时前
算力随行:UltraLAB便携工作站如何将多卡深度学习带入户外与现场
人工智能·深度学习·大模型推理·无人机影像
Datacarts2 小时前
AI大模型时代:微店商品数据API如何重构反向海淘决策
大数据·人工智能·重构
ws2019072 小时前
技术交流与商贸融合,2026广州汽车测试测量展释放产业协同新动能
大数据·人工智能·科技·汽车
MyBFuture3 小时前
Halcon 金字塔与边缘检测技术解析
人工智能·计算机视觉·halcon
树獭非懒3 小时前
AI大模型小白手册 | RAG进阶:从胡说八道到引经据典
人工智能
攻城狮7号3 小时前
SaaS的末日重构:AI Agent浪潮下的危机与新生
人工智能·ai agent·saas末日·saas升级重构
2601_949925183 小时前
空运舱位突发爆舱?解析 AI Agent 如何在 2 小时内重构物流应急响应底层逻辑
人工智能·重构·物流rpa
FluxMelodySun3 小时前
机器学习(二十八) 特征选择与常见的特征选择方法
人工智能·机器学习
小陈工3 小时前
2026年3月31日技术资讯洞察:AI智能体安全、异步编程突破与Python运行时演进
开发语言·jvm·数据库·人工智能·python·安全·oracle