三分钟为GraphRAG实现3D知识图谱!从Parquet到3D可视化,用Python打造3D知识图谱:NetworkX与Plotly的完美结合 #graphrag #rag #知识图谱 #ai #3D知识图谱 #GraphRAG #Python可视化 #NetworkX #Plotly

AI超元域
Jul 18, 2024

--

视频中本篇笔记所对应的YouTube视频 https://youtu.be/JkKTUu1g0cc

视频中所用到的代码请访问GitHub项目中graphrag3dknowledge.py文件 https://github.com/win4r/GraphRAG4OpenWebUI

GraphRAG 3D知识图谱实现方式解读

本期视频实现了一个知识图谱的可视化工具,使用了多个Python库来处理数据、创建图形结构、并生成交互式的3D可视化。让我详细解释一下代码的主要部分和功能:

  1. 库和依赖:
  • os:用于文件系统操作
  • pandas:用于数据处理和操作
  • networkx:用于创建和分析图结构
  • plotly:用于创建交互式可视化
  • plotly.graph_objects:用于创建低级的plotly图形对象
  • plotly.subplots:用于创建子图
  • plotly.express:用于快速创建统计图表
  1. 主要函数:

a) read_parquet_files(directory):

  • 功能:读取指定目录下的所有Parquet文件并合并成一个DataFrame
  • 实现:使用os.listdir遍历目录,pd.read_parquet读取每个文件,然后用pd.concat合并

b) clean_dataframe(df):

  • 功能:清理DataFrame,移除无效的行
  • 实现:删除source和target列中的空值,将这两列转换为字符串类型

c) create_knowledge_graph(df):

  • 功能:从DataFrame创建知识图谱
  • 实现:使用networkx创建有向图,遍历DataFrame的每一行,添加边和属性

d) create_node_link_trace(G, pos):

  • 功能:创建节点和边的3D轨迹
  • 实现:使用networkx的布局信息创建Plotly的Scatter3d对象

e) create_edge_label_trace(G, pos, edge_labels):

  • 功能:创建边标签的3D轨迹
  • 实现:计算边的中点位置,创建Scatter3d对象显示标签

f) create_degree_distribution(G):

  • 功能:创建节点度分布直方图
  • 实现:使用plotly.express创建直方图

g) create_centrality_plot(G):

  • 功能:创建节点中心性分布箱线图
  • 实现:计算度中心性,使用plotly.express创建箱线图

h) visualize_graph_plotly(G):

  • 功能:创建完整的交互式3D知识图谱可视化
  • 实现:
  1. 创建3D布局
  2. 生成节点和边的轨迹
  3. 创建子图,包括3D图、度分布图和中心性分布图
  4. 添加交互式按钮和滑块
  5. 优化整体布局

i) main():

  • 功能:主函数,协调整个程序的执行流程
  • 实现:
  1. 读取Parquet文件
  2. 清理数据
  3. 创建知识图谱
  4. 打印图的统计信息
  5. 调用可视化函数
  6. 可视化特点:
  • 3D交互式图形:使用Plotly创建可旋转、缩放的3D图形
  • 多视图:主3D图、节点度分布图、中心性分布图
  • 交互控件:显示/隐藏边标签的按钮,调整节点大小的滑块
  • 信息丰富:悬停显示节点信息,边上显示关系标签
  1. 数据流程: Parquet文件 -> pandas DataFrame -> networkx图 -> Plotly可视化

这个代码展示了如何将复杂的数据处理、图形分析和可视化技术结合起来,创建一个功能丰富的知识图谱可视化工具。它特别适合处理和展示大规模、复杂的关系数据。

👉👉👉如有问题请联系我的徽信 stoeng

🔥🔥🔥本项目代码由AI超元域频道制作,观看更多大模型微调视频请访问我的频道⬇

👉👉👉我的哔哩哔哩频道

👉👉👉我的YouTube频道

**👉👉👉我的开源项目 https://github.com/win4r/AISuperDomain**

--

--

No responses yet