← 返回AI教程
🌐 其他

开源项目第193期:Semantica — 开源版 Palantir for AI Agent,知识图谱 + 确定性推理 + W3C 溯源,让 AI 决策可追溯、可审计、可合规

来源:掘金 · 发布于 2026-08-21 21:13:47
开源项目第193期:Seman
这是「每日一个开源项目」系列的**第 193 篇**。今天的项目是 Semantica —— semantica-agi 出品的图原生 AI 决策基础设施,自我定位是"开源版 Palantire

开源项目第193期:Semantica — 开源版 Palantir for AI Agent,知识图谱 + 确定性推理 + W3C 溯源,让 AI 决策可追溯、可审计、可合规

冬奇Lab 2026-08-21 0 阅读8分钟

引言

"向量数据库告诉你'相关内容是什么',知识图谱告诉你'为什么相关',溯源层告诉你'这个结论从哪里来'。"

这是「每日一个开源项目」系列的第 193 篇。今天的项目是 Semantica —— semantica-agi 出品的图原生 AI 决策基础设施,自我定位是"开源版 Palantir for AI Agents"。

一句话描述它做什么:让 AI Agent 的每一个决策都可以被解释、追溯和审计。

不是 RAG 框架,不是向量数据库,不是 Agent 框架。它坐落在这些东西之下,提供的是确定性推理层和溯源层——当 Agent 做了一个决策,你能查到这个决策用了哪些上下文数据、经过了哪些推理步骤、应用了哪些策略、结论的依据来自哪里。

8,200 颗 Star,MIT 许可,Python 3.8+。

你会学到什么

  • Semantica 和 RAG / 向量数据库的定位差异
  • 决策作为一等公民:为什么 AI 决策不应该只是日志行
  • 确定性推理引擎:不依赖 LLM 的可解释推理
  • W3C PROV-O 溯源:每个事实的来源链
  • 冲突检测和时间旅行
  • 使用场景:金融合规、医疗、法律、网络安全

前提知识

  • 了解 AI Agent 和 LLM 的基本概念
  • 知道向量数据库是什么
  • 了解知识图谱基础概念(节点、边、三元组)

背景:AI 决策的可问责性问题

当前的 AI Agent 有一个普遍问题:决策过程不透明。

Agent 做了一个推荐,为什么?它用了哪些数据?那些数据从哪来?有没有和其他数据矛盾?这个推荐一个月后还能复现吗?

这在低风险场景里可以接受,但在金融贷款审批、医疗决策支持、法律合同分析、政府政策执行这类场景里,"AI 说这么做"不够——监管机构要求完整的决策日志、数据来源、推理依据、合规证明。

现有的技术栈解决了相关性检索(向量数据库)和对话记忆(各种 memory 方案),但没有解决:

  • 决策历史:每个 Agent 决策有完整结构化记录
  • 因果溯源:这个结论,来自这个数据,经过这步推理
  • 冲突处理:新数据和旧数据矛盾时,静默覆写还是标记出来?
  • è·¨ Agent 共享上下文:多个 Agent 在同一个智能层上工作,而不是各自孤立
  • 时间维度:某个时间点的知识状态是什么(time travel)

Semantica 把这些全部作为一等公民来处理。


核心概念

决策是图节点,不是日志行

传统方案里,AI 的操作记录是日志文件——时间戳 + 字符串,查询困难,关联分析几乎不可能。

Semantica 把每个 AI 决策建模为完整的图节点,具备:

from semantica.context import AgentContext, record_decision

ctx = AgentContext(agent_id="loan-agent-01", session_id="session-xyz")

decision = record_decision(
    context=ctx,
    decision_type="loan_approval",
    inputs={"applicant_id": "A123", "amount": 50000},
    output={"approved": True, "confidence": 0.87},
    reasoning_steps=[...],   # 推理步骤列表
    policies_applied=["credit_policy_v3", "risk_limit_2024"],
    provenance_sources=[...] # 数据来源引用
)

这个决策节点可以:

  • 和其他决策建立因果关联("这个决定影响了那个决定")
  • 检索历史先例("上次类似情况怎么处理的")
  • 做合规导出(生成监管机构要求的审计报告)

确定性推理引擎

Semantica 的推理层不用 LLM,用的是传统 AI 的确定性推理算法:

  • Rete 网络:规则引擎,高效匹配模式
  • Datalog:声明式逻辑查询
  • SPARQL:RDF 图的标准查询语言
  • 前向链推理:从已知事实逐步推导新结论
from semantica.reasoning import ForwardChainReasoner

reasoner = ForwardChainReasoner()

# 定义规则:如果 A 是 B 的客户 且 B 是银行,则 A 有银行账户
reasoner.add_rule(
    condition=["?x customer_of ?y", "?y type Bank"],
    conclusion="?x has_account_at ?y"
)

# 从已知事实推导
results = reasoner.reason(facts=[
    ("Alice", "customer_of", "HSBC"),
    ("HSBC", "type", "Bank")
])
# → [("Alice", "has_account_at", "HSBC")]

每一步推理的中间结果都保存,完整推导链可以输出给审计员。

W3C PROV-O 溯源

每个知识图谱里的事实都附有溯源信息,遵循 W3C PROV-O 标准:

from semantica.provenance import ProvenanceTracker

tracker = ProvenanceTracker()

# 记录这个事实来自哪里
tracker.record(
    entity="Alice",
    attribute="credit_score",
    value=750,
    source="TransUnion API",
    retrieved_at="2026-08-17T10:00:00Z",
    agent="data-ingestion-agent",
    confidence=0.99
)

之后你可以查:

# 这个信用分数从哪来的?
provenance = tracker.get_provenance("Alice", "credit_score")
# → {source: "TransUnion API", retrieved_at: ..., agent: ..., confidence: ...}

在合规场景里,这是"证明你的 AI 决策依据是可信数据"的技术基础。

冲突检测,不静默覆写

两个数据源对同一个事实有不同的值时,普通 RAG 会静默覆写(用新数据替换旧数据)或随机选一个。Semantica 把这当作一个需要处理的问题:

from semantica.conflicts import ConflictResolver

resolver = ConflictResolver()

# 检测冲突
conflicts = resolver.detect(
    entity="Alice",
    attribute="annual_income",
    values=[
        {"value": 80000, "source": "Tax Bureau", "date": "2025-01"},
        {"value": 120000, "source": "Bank Statement", "date": "2025-06"}
    ]
)
# → Conflict detected: value conflict (80000 vs 120000)
# → Resolution strategy: most_recent wins

支持多种解决策略:最新值优先、最高置信度优先、特定来源优先、标记待人工审核。


核心模块概览

知识图谱构建 (semantica.kg)

from semantica.kg import KnowledgeGraph

kg = KnowledgeGraph(backend="neo4j")  # 或 falkordb / oxigraph

# 从文档抽取实体和关系,构建图
kg.ingest_document("contract.pdf")
kg.ingest_web("https://example.com/news")
kg.ingest_database(conn="postgresql://...", table="customers")

# 图分析
centrality = kg.betweenness_centrality()  # 找关键节点
communities = kg.community_detection()   # Leiden 聚类
links = kg.link_prediction(entity="Alice") # 预测可能的关联

语义抽取 (semantica.semantic_extract)

from semantica.semantic_extract import SemanticExtractor

extractor = SemanticExtractor()

# 从文本抽取实体、关系、事件
result = extractor.extract("Apple acquired Beats Electronics for $3 billion in 2014.")
# → entities: [Apple, Beats Electronics]
# → relations: [(Apple, acquired, Beats Electronics)]
# → events: [acquisition, 2014]
# → triples: [(Apple, acquisition_of, Beats Electronics, {amount: 3B, year: 2014})]

多源摄取 (semantica.ingest)

支持的数据源:

  • 文件:PDF、Word、CSV、JSON、XML
  • Web:URL 抓取,支持 JavaScript 渲染
  • 数据库:PostgreSQL、MySQL、MongoDB
  • 数据平台:Databricks、Snowflake
  • 流式:Kafka

GraphRAG 原生分块 (semantica.split)

from semantica.split import GraphRAGSplitter

# 实体感知分块:不在实体中间切割
splitter = GraphRAGSplitter()
chunks = splitter.split("contract.pdf", entity_aware=True)
# → 分块边界尊重实体完整性

知识图谱可视化 (semantica.visualization)

React 19 + Sigma.js 构建的交互式 Knowledge Explorer,支持:

  • 图谱漫游和缩放
  • 节点过滤和搜索
  • 溯源可视化
  • 时间线回放(time travel)

与其他方案的定位差异

维度向量数据库 + RAGLangChain MemorySemantica
决策历史不存储不存储一等公民,可查询
因果溯源无无W3C PROV-O,完整来源链
推理相似度检索无确定性推理(不依赖 LLM)
冲突处理静默覆写静默覆写检测、标记、解决
时间旅行无无时间点图快照
合规导出无无PROV-O / SHACL / OWL / RDF
多 Agent 上下文各自隔离各自隔离共享智能层
LLM 依赖需要(生成向量/回答)需要推理层不需要 LLM

Semantica 不是替代向量数据库或 RAG,而是在它们之下加一层确定性推理和可审计性。


主要使用场景

金融合规:贷款审批时记录每个决策的数据来源、推理步骤、应用的信用政策,满足监管审计要求。

医疗决策支持:临床建议的药物相互作用图谱,每个诊断建议附带证据溯源链,支持 HIPAA 合规导出。

法律合同分析:合同条款的判例推理,每个法律结论追溯到具体判例和法条。

网络安全:威胁事件的 IOC(入侵指标)关联图,攻击归因链,事件响应时间线。

AI/ML 平台团队:为多个 Agent 构建共享的结构化上下文层,Agent 间不孤立运行。


安装和快速上手

pip install semantica           # 核心包
pip install semantica[all]      # 全功能

# 按需安装特定后端
pip install semantica[graph-neo4j]           # Neo4j
pip install semantica[tripletstore-oxigraph] # 内嵌 RDF 存储(无需外部服务)
pip install semantica[vectorstore-qdrant]    # Qdrant 向量存储
pip install semantica[llm-litellm]           # LLM 支持
pip install semantica[crewai]                # CrewAI 集成
pip install semantica[explorer]              # 可视化工作台

最简单的起点(内嵌 Oxigraph,无需外部数据库):

pip install semantica[tripletstore-oxigraph]

Docker 部署:

git clone https://github.com/semantica-agi/semantica
cd semantica
docker-compose up -d
# 访问 Knowledge Explorer: http://localhost:3000
# REST API: http://localhost:8000

与 Agent 框架的集成

Claude Code / Cursor 插件:30 秒配置,直接在编辑器里查询知识图谱。

MCP 服务器:

{
  "mcpServers": {
    "semantica": {
      "command": "python",
      "args": ["-m", "semantica.mcp.server"]
    }
  }
}

CrewAI 原生集成:

from semantica.integrations.crewai import SemanticalKGTool

tool = SemanticalKGTool(kg=my_knowledge_graph)
# 直接作为 CrewAI Agent 的工具使用

项目地址与资源


总结

Semantica 处理的是 AI 落地企业场景时最难解决的问题之一:可问责性。

向量数据库解决了"找到相关内容",RAG 解决了"用相关内容回答问题",但"这个回答是怎么得出的、依据了哪些数据、有没有矛盾、如果出了问题能不能追责"——这一整层在现有技术栈里是空白的。

Semantica 填的是这个空白。它不和 RAG 竞争,而是坐在 RAG 之下,给每个 AI 决策加上确定性推理链和溯源标签。在金融、医疗、法律这类监管严格的行业,这层能力是 AI 从"内部试验"到"监管可接受的生产部署"的关键。

"开源版 Palantir for AI Agents"这个定位很准确:Palantir 做的是把数据、分析和决策过程关联起来,让政府和金融机构的操作员能解释自己的决策。Semantica 的目标是把这件事开源化,让 AI Agent 也能做到同样的可问责性。


探索 PrimeSkills —— 精选 AI Agent 与技能的市场,每一个都经过真实企业工作流验证,去掉浮夸,留下真正有用的。

欢迎访问我的个人主页,发现更多有价值的见解和有趣的产品。