Semantica架构拆解:4层27个模块如何实现零耦合、随意替换?
【免费下载链接】semanticaGraph-Native Infrastructure for Context and Accountable AI Systems项目地址: https://gitcode.com/GitHub_Trending/sema/semantica
Semantica 是一个开源的图原生(Graph-Native)知识图谱与 AI 基础设施框架,用 4 层 27 个模块实现零耦合设计:数据接入、图谱构建、语义推理到 GraphRAG 应用,每个模块都能独立导入、随意替换。本文带你拆解它的分层架构与替换机制。
为什么"可随意替换"是知识图谱框架的必修课
传统知识图谱方案往往把"抓取 → 解析 → 抽取 → 建图 → 存储"焊死在一套代码里,带来三个典型痛点:
| 痛点 | 典型表现 |
|---|---|
| 🔒 后端锁死 | 想从 FAISS 换到 Milvus,要重写整套向量存取代码 |
| 🧱 模块绑架 | 只想要一个实体抽取器,却被迫安装整个全家桶 |
| 🩹 扩展困难 | 接入自研数据源,只能侵入式修改核心代码 |
Semantica 的解法可以概括为三句话:统一数据契约、注册表扩展点、集中配置管理。三者合力,让 27 个模块各自独立、随时"换人",核心代码一行不动。
4层27个模块总览:一张表看懂架构
| 层 | 职责 | 包含模块 |
|---|---|---|
| Layer 1 · 接入层 | 把任意来源的数据变成统一SourceDocument | ingest、split |
| Layer 2 · 处理层 | 解析、清洗、语义抽取与质检 | parse、normalize、semantic_extract、deduplication、conflicts |
| Layer 3 · 智能层 | 知识图谱 + 三类持久化存储 + 本体建模 | kg、vector_store、graph_store、triplet_store、embeddings、ontology |
| Layer 4 · 应用层 | GraphRAG、Agent 记忆、推理、可视化交付 | context、reasoning、export、visualization、explorer、pipeline |
| 横切支撑 | 贯穿所有层的基础设施 | provenance、change_management、llms、mcp_server、seed、evals、core、utils |
📌 2 + 5 + 6 + 6 + 8 = 27,与仓库
semantica/目录下的模块包一一对应,按需导入、永不强迫装全家桶。
逐层走查:每层到底负责什么
Layer 1 · 接入层:20+ 数据源一个门面
ingest是数据入口,提供 20 多种 Ingestor:文件(PDF / Excel / CSV / JSON)、网页爬取、数据库(PostgreSQL / MySQL / MongoDB)、云仓库(Snowflake / Databricks)、消息流(Kafka)甚至邮件与 Git 仓库。无论来源多杂,出口都是同一种结构化的SourceDocument——这是零耦合的第一块基石:下游模块永远不需要知道数据从哪里来。
split则负责按语义边界切块(实体感知、关系感知、层级式等 6 种策略),为后续向量化做准备。
Layer 2 · 处理层:把文本变成"可信知识"
这是一条纯函数式的加工链,每一步都可以独立调用、跳过或替换:
parse— 从原始文档抽取文本与版面(17 种解析器,含 Docling 高级版)normalize— 统一日期、数字、编码与实体名称semantic_extract— NER、关系抽取、事件检测、三元组生成,支持 pattern / ml / llm 三种方法deduplication— 跨源重复实体检测与合并(v2 策略最快提升 7 倍)conflicts— 检测并裁决事实冲突(取最新、取可信源、多数投票)
💡 关键点:这 5 个模块之间只靠标准字典传递数据。你可以只要 NER 不要冲突检测,也可以整条链路全上。
Layer 3 · 智能层:知识图谱 + 3 类存储随便挑
kg模块负责建图与图分析(中心度、社区发现、路径查找、时序图查询),是整条流水线的"心脏"。围绕它有三种持久化后端,接口完全一致:
vector_store— 向量检索:FAISS / Qdrant / Weaviate / Milvus / Pinecone / PgVectorgraph_store— 图数据库:Neo4j / FalkorDB / Apache AGE / Amazon Neptunetriplet_store— RDF 三元组:Oxigraph / Blazegraph / Jena / RDF4J
embeddings提供统一向量化入口(Sentence-Transformers、OpenAI、BGE 等),ontology提供 OWL / RDFS 建模与 SHACL 校验。官方文档对后端切换的形容很直白:把内存版 NetworkX 换成 Neo4j,API 零改动。
Layer 4 · 应用层:知识的"最后一公里"
context— GraphRAG 检索、Agent 持久记忆、决策记录与因果链追踪(AgentContext)reasoning— 6 种推理引擎:前向链、Rete、Datalog、SPARQL、演绎、溯因,全部可解释export— 10+ 格式导出:RDF、OWL、Parquet、CSV、Arrow、ArangoDB AQLvisualization— 交互式 HTML 图谱、嵌入投影、时序视图explorer— 内置 Web 可视化工作台,11.8 万节点上索引搜索仅 0.004mspipeline— 流水线编排 DSL:并行 worker、重试策略、失败处理
零耦合靠什么实现?3 个关键机制
机制一:统一数据契约
各层之间不传递"具体实现",只传递标准数据结构(SourceDocument、实体字典、三元组列表)。任意两层模块互不感知,天然可以整段替换。
机制二:注册表扩展点(Registry)
每个模块都暴露registry.py,例如semantica/ingest/registry.py与semantica/semantic_extract/registry.py:把自定义实现注册进去,它就能以"一等公民"身份参与整条流水线——溯源追踪、重试、并行执行自动生效,核心代码零改动。
机制三:配置优于约定
semantica/core/config_manager.py提供集中配置 + 环境变量覆盖,没有"魔法默认值"。开发、预发、生产环境可以用不同的后端组合,同一份代码不动。
另外值得一提的是Provenance by default:从图构建的最底层开始,每个节点和边都携带source_id指回原始文档与抽取方法,溯源默认开启、无需额外接线——这正是"可问责 AI"的底座,由横切层provenance模块统一提供。
随意替换实战:5 个高频场景
| 想换的东西 | 可选项 | 代价 |
|---|---|---|
| 向量库后端 | FAISS / Qdrant / Weaviate / Milvus / Pinecone / PgVector | 改一个backend参数 |
| 图数据库 | Neo4j / FalkorDB / Apache AGE / Amazon Neptune | 改连接配置,查询接口不变 |
| 三元组库 | Oxigraph / Blazegraph / Jena / RDF4J | 改backend参数 |
| LLM 提供方 | OpenAI / Groq / Gemini / Ollama / DeepSeek 等 8 家 | llms统一接口,换一行实例化 |
| 任何环节的实现 | 自研组件 | 注册到对应registry,核心不动 |
一句话总结:后端随便挑、模块随便拿、扩展随便加——这就是"零耦合、随意替换"的全部含义。
快速上手:5 分钟跑通最小流水线
pip install semanticafrom semantica.ingest import FileIngestor from semantica.semantic_extract import NERExtractor from semantica.kg import GraphBuilder sources = FileIngestor().ingest("data/") # Layer 1 entities = NERExtractor(method="pattern").extract(sources) # Layer 2 graph = GraphBuilder(merge_entities=True).build( entities=entities, relationships=[]) # Layer 33 个 import、3 行调用,跨 3 层各取一个模块——没有任何模块是被迫捆绑进来的。
延伸阅读
- 架构总览与完整数据流图:
docs/architecture.md、ARCHITECTURE.md - 27 个模块完整清单与常用链路示例:
docs/modules.md - "35+ 开发者目标 → 该选哪个模块"决策指南:
docs/choose-your-module.md - 插件注册机制源码:
semantica/core/plugin_registry.py - 第一个知识图谱实战教程:
cookbook/introduction/08_Your_First_Knowledge_Graph.ipynb - Kubernetes / Helm 等部署方案:
deploy/kubernetes/
🧩 记住这张架构地图:接入层收数据、处理层提知识、智能层存知识、应用层用知识,横切层管账本。27 个模块各就各位,随时可换——这才是模块化该有的样子。
【免费下载链接】semanticaGraph-Native Infrastructure for Context and Accountable AI Systems项目地址: https://gitcode.com/GitHub_Trending/sema/semantica
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考