三分钟为GraphRAG实现3D知识图谱!从Parquet到3D可视化,用Python打造3D知识图谱:NetworkX与Plotly的完美结合 #graphrag #rag #知识图谱 #ai #3D知识图谱 #GraphRAG #Python可视化 #NetworkX #Plotly
视频中本篇笔记所对应的YouTube视频 https://youtu.be/JkKTUu1g0cc
视频中所用到的代码请访问GitHub项目中graphrag3dknowledge.py文件 https://github.com/win4r/GraphRAG4OpenWebUI
GraphRAG 3D知识图谱实现方式解读
本期视频实现了一个知识图谱的可视化工具,使用了多个Python库来处理数据、创建图形结构、并生成交互式的3D可视化。让我详细解释一下代码的主要部分和功能:
- 库和依赖:
- os:用于文件系统操作
- pandas:用于数据处理和操作
- networkx:用于创建和分析图结构
- plotly:用于创建交互式可视化
- plotly.graph_objects:用于创建低级的plotly图形对象
- plotly.subplots:用于创建子图
- plotly.express:用于快速创建统计图表
- 主要函数:
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知识图谱可视化
- 实现:
- 创建3D布局
- 生成节点和边的轨迹
- 创建子图,包括3D图、度分布图和中心性分布图
- 添加交互式按钮和滑块
- 优化整体布局
i) main():
- 功能:主函数,协调整个程序的执行流程
- 实现:
- 读取Parquet文件
- 清理数据
- 创建知识图谱
- 打印图的统计信息
- 调用可视化函数
- 可视化特点:
- 3D交互式图形:使用Plotly创建可旋转、缩放的3D图形
- 多视图:主3D图、节点度分布图、中心性分布图
- 交互控件:显示/隐藏边标签的按钮,调整节点大小的滑块
- 信息丰富:悬停显示节点信息,边上显示关系标签
- 数据流程: Parquet文件 -> pandas DataFrame -> networkx图 -> Plotly可视化
这个代码展示了如何将复杂的数据处理、图形分析和可视化技术结合起来,创建一个功能丰富的知识图谱可视化工具。它特别适合处理和展示大规模、复杂的关系数据。