尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

GitNexus LadybugDB存储设计:44种节点类型与21种关系类型

GitNexus LadybugDB存储设计:44种节点类型与21种关系类型 GitNexus LadybugDB存储设计44种节点类型与21种关系类型【免费下载链接】GitNexusGitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a git repository (Github, Gitlab, Azure, Local) or ZIP file, and get an interactive knowledge graph with a built in Graph RAG Agent. Perfect for code exploration项目地址: https://gitcode.com/GitHub_Trending/gi/GitNexusGitNexus 是一款零服务器Zero-Server的代码知识图谱引擎把 Git 仓库或 ZIP 包丢给它就能得到一张可交互的代码知识图谱并内置 Graph RAG Agent 用于代码探索。而这一切数据就存放在LadybugDB——GitNexus 内嵌的本地图数据库——之中。这篇文章带你拆解 GitNexus 的存储设计代码符号如何变成节点调用、继承、依赖如何变成关系以及这些设计如何服务 LLM 查询。为什么选 LadybugDB本地图存储的取舍传统方案是把代码图存到 Neo4j 之类的独立图数据库服务器但那意味着 多一个要部署、维护的服务 数据要离开本机隐私敏感 大图同步时网络开销大GitNexus 的思路相反把图数据库直接嵌进进程。LadybugDB 提供原生CLI 侧与 WASM浏览器侧两种实现数据以本地文件形式存在仓库旁边随仓库走。CLI 与 Web 端共享同一份 schema 常量保证两边读出来的图完全兼容——这份单一可信源就定义在常量定义schema-constants.ts完整 DDL 模板schema.ts 这种客户端知识图谱架构是 GitNexus 的招牌没有后端服务器浏览器里就能跑这也是它被称为零服务器代码智能引擎的原因。节点类型全景从文件夹到污点分析块GitNexus 采用混合 SchemaHybrid Schema每种代码元素都有自己独立的节点表而不是把所有东西塞进一张万能表。这样 LLM 写出的 Cypher 查询可以自然表达函数调用函数MATCH (f:Function)-[r:CodeRelation {type: CALLS}]-(g:Function) RETURN f, g按职责所有节点表可以分为六大类完整清单见 NODE_TABLES分类节点类型存什么 文件结构层File、Folder文件内容、目录层级是图的地基 代码符号层Function、Class、Method、Interface、CodeElement、Variable、Property符号名、起止行号、是否导出、描述、源码片段 多语言符号Struct、Enum、Macro、Typedef、Union、Namespace、Trait、Impl、TypeAlias、Const、Static、Record、Delegate、Annotation、Constructor、Template、ModuleC/C/Rust/Go/Java/C#/PHP 等语言的特有构造统一字段名称、文件、行号、内容 分析叠加层Community、ProcessLeiden 算法聚类出的功能社区含内聚度、关键词与执行流程含入口/终点、跨社区标记⚙️ 框架特性Route、Tool、SectionAPI 路由端点HTTP 方法、中间件、响应键、MCP 工具定义、Markdown 标题章节 污点/PDG 底座BasicBlock过程内控制流块为后续污点分析、程序依赖图预留几个值得新手注意的设计细节多语言符号统一走同一个模板Struct、Enum等十几张表由同一个CODE_ELEMENT_BASE模板生成字段完全一致新增语言成本极低。见 schema.ts 多语言节点表定义。Property表带isDetail标记匿名对象字面量的键如message、value虽然要进图但不应该出现在全文搜索结果里这个布尔列就是用来从 FTS 中剔除它们的。Community/Process是只进不出的分析产物永远被别的节点挂到它们身上它们自己不会指向别的定义节点。关系类型代码世界里的 21 种连接方式与节点一符号一表不同GitNexus 的所有关系共用一张CodeRelation表用type属性区分语义。当前定义的关系类型全集见 REL_TYPES按用途分组如下️ 结构与归属7 种类型含义CONTAINS文件夹/文件包含子节点DEFINES文件定义了某个符号HAS_METHOD/HAS_PROPERTY类拥有方法 / 属性MEMBER_OF符号属于某个社区WRAPS包装关系STEP_IN_PROCESS步骤在流程中的位置 调用与依赖7 种类型含义CALLS函数/方法调用影响分析的核心边IMPORTS模块导入USES泛化使用ACCESSES变量/属性访问FETCHES数据获取如 ORM 查询QUERIES数据库查询INJECTS依赖注入如 SpringAutowired置信度可低于 1 继承与框架语义6 种类型含义EXTENDS/INHERITS继承IMPLEMENTS/METHOD_IMPLEMENTS/METHOD_OVERRIDES接口实现与方法重写CONDITIONAL_ONSpring 条件装配依赖的配置项DECLARES/ADVISED_BY元数据声明、AOP 通知关系HANDLES_ROUTE/HANDLES_TOOL/ENTRY_POINT_OF路由/工具/流程入口绑定️ 污点分析与 PDG 预留7 种CFG、REACHING_DEF、TAINTED、SANITIZES、TAINT_PATH、CDG、POST_DOMINATE—— 这一族是为污点优先的程序依赖图PDG预留的边类型控制流边、数据依赖边、污点流边。它们已经写进共享 schema但由后续里程碑按需开启。类型定义与语义注释非常详尽推荐阅读types.ts 关系类型定义。 每条关系还自带confidence置信度、reason判定依据如Spring DI: Autowired List 和可选的step字段——这让 AI 不仅能看到有没有边还能看到这条边有多可信、为什么成立。单表关系设计的三个关键权衡1. 为什么关系只用一张表LadybugDB 的关系表需要预先声明哪些节点类型可以连哪些节点类型。GitNexus 用笛卡尔积规则生成这些端点对而不靠手写范围解析桥可连标签集合的笛卡尔积覆盖所有调用/引用解析可能产生的边挂载规则定义节点 × 分析叠加层Annotation、Community、Process、Route…历史上曾四次因为手写清单漏了一对导致整个analyze在用户的仓库上硬中止改成规则生成 测试兜底后问题从根上消失。相关路由逻辑见 rel-pair-routing.ts规模与查询开销的实测数据在 bench/schema-pairs/。2. 为什么CodeRelation上不加二级索引LadybugDB 不支持关系属性上的二级索引所以像到达定义中的变量名这类信息直接复用现有的reason列存储——这是经过基准测试后的明确结论写在了源码注释里。3. Schema 指纹告别手改版号旧版用人工递增的整数版本号判断磁盘上的库是否与当前构建匹配曾发生 8 次版本冲突其中 2 次是静默失败——两个构建盖了同一个版本号图数据悄悄损坏却不报错。现在改为对 DDL 做 SHA-256 摘要取 12 位 hex碰撞概率约为 1.8×10⁻⁹不匹配时直接强制全量重建宁可慢不可错。见 SCHEMA_FINGERPRINT 定义与注释。CodeEmbedding向量搜索的独立空间语义搜索用的向量不混在节点表里而是单独的CodeEmbedding表CREATE NODE TABLE CodeEmbedding ( id STRING, nodeId STRING, chunkIndex INT32, startLine INT64, endLine INT64, embedding FLOAT[384], contentHash STRING, PRIMARY KEY (id) )配套 HNSW 向量索引余弦相似度支持语义检索。独立成表有两个理由 避免向量写入触发节点表的写时复制开销️ 向量维度由环境变量GITNEXUS_EMBEDDING_DIMS决定因此它被刻意排除在 DDL 指纹之外单独由维度校验门禁把关——同一份代码在不同环境下不该互相打架Schema 定义见 EMBEDDING_SCHEMA。小结GitNexus 的存储设计可以浓缩成三句话节点分表40 余种节点类型各占一表多语言符号用统一模板新增语言零成本关系单表一张CodeRelation装下全部 20 余种关系端点对由规则生成、基准测试控开销可验证的演进DDL 指纹 维度门禁让 schema 升级从赌版本号变成可证明的安全操作这套设计让 LLM 可以自然写出 Cypher 查询代码图也让整张知识图谱完完整整地留在你自己的机器上——这正是 GitNexus 零服务器代码智能承诺的技术底座。【免费下载链接】GitNexusGitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a git repository (Github, Gitlab, Azure, Local) or ZIP file, and get an interactive knowledge graph with a built in Graph RAG Agent. Perfect for code exploration项目地址: https://gitcode.com/GitHub_Trending/gi/GitNexus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表