Semantica 🧠🔗:为 AI 系统打造的图原生上下文与可问责基础设施

试想这样一个场景:你的 AI 智能体刚刚完成了一个复杂的多步推理任务,它查阅了 3 份文档、调用了 2 个外部 API、与用户对话了 5 轮。任务完成后,测试团队问你:“这个结论是怎么得出来的?中间有没有引用过期数据?”你盯着散落在向量数据库、关系表和 JSON 日志里的上下文碎片,后背一阵发凉。

这正是情境化 AI 系统最大的痛点:上下文(context)通常被视为一种被动的数据快照,而不是一张动态、可追溯的关系网。今天登上 GitHub Trending 的 Semanticasemantica-agi/semantica)试图用一套图原生的基础设施,将上下文管理、可问责性与智能体记忆真正工程化。

🌐 不只存上下文,而是“编织”上下文

Semantica 给自己的定位是 “Graph-Native Infrastructure for Context and Accountable AI Systems”——为上下文和可问责 AI 系统打造的图原生基础设施。它不是一个简单的图数据库封装,而是一个专门围绕 AI 应用中“语义上下文”(semantic context)设计的运行时。底层采用自定义的图存储引擎 sem-core,上层提供了一套面向智能体(Agent)的上下文 API。

与传统方案相比,它的核心理念差异在于:

  • 🚫 不把上下文当作扁平文本或文档块,而是建模为带有时序、溯源和置信度的关系图。
  • 🧩 上下文“碎片”自动联接,比如一段对话结论,会自动关联到其依赖的文档片段、API 调用结果和提示词版本。
  • ⚖️ 可审计性是一等公民,所有上下文变更都可追溯、可重放,甚至支持合规性断言。
“We don't store context. We weave it.” — Semantica 文档首页

🏗️ 架构设计:图引擎 + 上下文原语

Semantica 的架构分为三层,每一层都为 AI 场景做了深度定制。

1. sem-core:图原生存储引擎

这是整个系统的心脏。它不是一个通用图数据库(如 Neo4j 或 ArangoDB),而是一个专门为 AI 上下文优化的嵌入式图引擎,使用 Rust 编写,提供 Python 客户端。亮点包括:

  • 语义边(Semantic Edge):除了普通的 RELATES_TO 边,支持 DERIVED_FROMCONTRADICTSSUPPORTS 等具有可解释性的关系类型。
  • 时间旅行查询:任何时间点的上下文快照都可以通过 AS OF TIMESTAMP 语义恢复,这对审计至关重要。
  • 可插拔向量索引:节点内嵌 embedding 字段,允许在图中执行混合搜索(图遍历 + 向量相似度),无需外接向量数据库。

一个简单的上下文写入示例如下:

from semantica import SemanticaClient

client = SemanticaClient()
ctx = client.open_context("customer_support_agent")

# 写入一个事实节点
fact = ctx.add_node(
    type="Claim",
    properties={"text": "用户报告支付失败", "confidence": 0.95}
)

# 关联到推理结果
inference = ctx.add_node(
    type="Inference",
    properties={"text": "可能原因:信用卡过期", "confidence": 0.82}
)
ctx.add_edge(inference, fact, edge_type="DERIVED_FROM")
ctx.commit()

2. 可问责层(Accountability Layer)

这一层自动记录所有上下文变更的因果关系,形成“溯源链”(Provenance Chain)。它不只是简单的日志——当智能体做出一个决策时,Semantica 会构建从输入数据、中间推理到最终输出的有向无环图(DAG)。开发者可以通过 explain() 函数获得一条人类可读的决策解释路径。

# 查询推理的解释
explanation = client.explain(inference.id)
for step in explanation.steps:
    print(f"{step.operation}: {step.node.properties['text']} (置信度: {step.confidence})")

3. 智能体记忆与多模态上下文

Semantica 将“记忆”抽象为可扩展的图结构,支持短期对话记忆、长期知识记忆和情景记忆(episodic memory)的混合存储。通过上下文的语义合并(semantic merge),即使信息来自不同会话或不同智能体实例,也能自动去重和关联。这对于多智能体协作场景非常有价值。

⚡ 性能优化:为什么用图,而不是向量数据库?

在上下文检索场景中,纯向量检索经常面临“相关但无因果”的问题——一段语义相似的文本不一定对你的推理有真实贡献。Semantica 通过原生图结构保证了检索结果的关联性可解释性。性能方面也做了针对性优化:

  • 🌳 上下文子树裁剪:检索时不会拉取整个图,而是从当前焦点节点出发,进行限定深度和过滤边的遍历,延迟极低。
  • 📦 节点属性列式压缩:大量文本属性被压缩存储,内存占用相比通用图数据库下降了 40% 左右(据项目基准测试)。
  • ⚙️ Rust 实现的热路径:图遍历、合并和索引更新均在 Rust 内核中完成,Python 侧没有 GIL 竞争。

🛠️ 开发者体验:像用 ORM 一样管理上下文

Semantica 的 Python API 设计得非常“Pythonic”,如果你用过 SQLAlchemy 或 Django ORM,会感到很亲切。上下文被模型化为一个 Context 对象,支持上下文管理器:

async with client.open_context("agent_123") as ctx:
    # 在上下文内操作,自动开启事务
    node = await ctx.query().find_one(type="Goal", status="active")
    if node:
        await ctx.update(node, {"status": "completed"})

异步支持、事务隔离、自动 schema 推断(从首次写入的节点属性推断类型)都让初期的集成成本很低。文档中还提供了一个与 LangChain/LlamaIndex 的集成示例,几行代码就能将 Semantica 作为其记忆后端。

💡 应用场景与技术启发

Semantica 目前最适合的场景包括:需要高度可解释性的合规 AI 智能体(金融、医疗)、长时间运行的自主智能体任务(需要记忆融合)、以及多智能体协作系统(共享上下文图)。它并不是要替代你的向量数据库,而是补充了“为什么”这一环。

从技术启发角度看,它将数据溯源(data provenance)知识图谱的理念引入 AI 工程栈,用一套清晰的抽象解决了上下文碎片化问题。这种做法可能比继续往 prompt 里塞更长的历史文本要聪明得多。

当然,项目还处于早期阶段,社区生态和运维工具还在完善中。但如果你想为一款“有记忆、能解释”的 AI 系统打下地基,Semantica 值得现在就关注起来。🌟