首页 › Leiden 社区检测
无需向量嵌入的 Leiden 社区检测
Graphify 将代码、文档、图示放进同一张图后,直接基于图拓扑运行 Leiden 社区检测,不依赖向量嵌入和向量数据库。
为什么不以向量为中心
很多代码 RAG 管线是“切块 → 向量化 → 聚类”。Graphify 想避免三类问题:
- 结构丢失。 调用链和导入关系会被弱化,而这些恰恰决定模块边界。
- 可解释性差。 两段文本被分到一类,往往只能说“向量接近”,无法指明具体结构理由。
- 运维成本高。 向量库意味着额外服务、权限边界和费用。
语义相似边如何参与
语义阶段会补充 semantically_similar_to 边,把“概念接近但结构未直连”的节点连起来,并标记 INFERRED 及置信度。Leiden 在同一张图上同时看到结构边与语义边,社区能同时反映调用结构和概念相似性。
社区结果会如何呈现
聚类后,每个社区都会在 GRAPH_REPORT.md 中形成独立小节(加 --wiki 可生成独立文章)。通常包含:
- god nodes:社区内最高度数核心概念;
- surprising connections:跨社区高价值连接;
- suggested questions:该社区最适合回答的问题清单。
例如 httpx 示例中会得到 6 个社区,核心节点包括 Client、AsyncClient、Response、Request,并暴露 DigestAuth → Response 这类关键连接。
技术实现
Leiden 由 graspologic 实现,图层使用 NetworkX。整个聚类阶段是本地纯 Python 执行,符合 Graphify “无服务端、无遥测”的设计。