图数据无处不在,比如社交网络、知识图谱、系统架构图,但图分析的门槛却高得离谱。你需要理解什么是中心性、模块度、最短路径,还要会写代码调用各种算法。更麻烦的是,即便学会了这些,面对具体问题时还是不知道该用哪个算法。
NetworkX 是 Python 生态中最成熟的图论算法库,提供了超过 500 个经过学术验证的图算法实现。从基础的最短路径、PageRank,到复杂的社区发现、图匹配,几乎你能想到的图算法它都有。
import networkx as nx
# 传统 NetworkX 使用方式
G = nx.Graph()
# 添加节点和边...
communities = nx.community.greedy_modularity_communities(G)
centrality = nx.pagerank(G)
# 需要理解算法原理和参数含义
但问题是,NetworkX 的强大也带来了复杂性。面对 500 多个算法,普通用户往往不知道:

GraphQA 的核心理念很简单:保留 NetworkX 的所有能力,但用自然语言接口替代复杂的 API 调用。它把 NetworkX 的 500 多个算法智能地组织成 5 个核心工具,通过 LangChain 理解你的意图并自动选择合适的算法。
from graphqa import GraphQA
# 加载数据到 NetworkX 图结构
agent = GraphQA(dataset_name="amazon")
agent.load_dataset() # 底层是 NetworkX MultiDiGraph
# 直接问问题,GraphQA 自动调用合适的 NetworkX 算法
response = agent.ask("找出购买关系最密集的产品群")
# 自动选择 nx.community.louvain_communities()
response = agent.ask("这些产品的平均价格是多少?")
# 保持上下文,继续分析
GraphQA 最聪明的地方在于它理解了 NetworkX 各种算法的适用场景。你问"找出最重要的节点",它会根据图的规模自动决策:
nx.betweenness_centrality() - 精确但慢nx.pagerank() - 平衡效率nx.degree_centrality() - 快速近似这种智能路由充分利用了 NetworkX 丰富的算法库,同时避免了用户需要了解每个算法细节的负担。
GraphQA 继承了 NetworkX 的核心优势——纯 Python 实现带来的易用性和丰富的算法库,同时解决了它的易用性问题:
# 可以直接访问底层的 NetworkX 图
graph = agent.graph # 这是一个标准的 NetworkX MultiDiGraph
print(f"节点数: {graph.number_of_nodes()}")
# 混合使用:GraphQA 分析 + NetworkX 自定义处理
response = agent.ask("找出所有社区")
# 然后用 NetworkX 做进一步分析
largest_community = max(nx.connected_components(graph), key=len)
另外,GraphQA 提供了灵活的数据加载接口,可以轻松接入各种数据源并转换为 NetworkX 图:
# 自定义数据加载器
class CustomLoader(BaseGraphLoader):
def load_graph(self) -> nx.MultiDiGraph:
graph = nx.MultiDiGraph()
# 从你的数据源构建 NetworkX 图
return graph
性能方面,GraphQA 采用了 NetworkX 的全内存架构。从官方数据来看,对于大多数分析场景已经足够。

该项目提供了很多的用例和实测数据,感兴趣可以进项目查看。
github:https://github.com/catio-tech/graphqa