引言
"向量数据库告诉你'相关内容是什么',知识图谱告诉你'为什么相关',溯源层告诉你'这个结论从哪里来'。"
这是「每日一个开源项目」系列的第 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 决策建模为完整的图节点,具备:
python
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 图的标准查询语言
- 前向链推理:从已知事实逐步推导新结论
python
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 标准:
python
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
)
之后你可以查:
python
# 这个信用分数从哪来的?
provenance = tracker.get_provenance("Alice", "credit_score")
# → {source: "TransUnion API", retrieved_at: ..., agent: ..., confidence: ...}
在合规场景里,这是"证明你的 AI 决策依据是可信数据"的技术基础。
冲突检测,不静默覆写
两个数据源对同一个事实有不同的值时,普通 RAG 会静默覆写(用新数据替换旧数据)或随机选一个。Semantica 把这当作一个需要处理的问题:
python
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)
python
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)
python
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)
python
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)
与其他方案的定位差异
| 维度 | 向量数据库 + RAG | LangChain Memory | Semantica |
|---|---|---|---|
| 决策历史 | 不存储 | 不存储 | 一等公民,可查询 |
| 因果溯源 | 无 | 无 | W3C PROV-O,完整来源链 |
| 推理 | 相似度检索 | 无 | 确定性推理(不依赖 LLM) |
| 冲突处理 | 静默覆写 | 静默覆写 | 检测、标记、解决 |
| 时间旅行 | 无 | 无 | 时间点图快照 |
| 合规导出 | 无 | 无 | PROV-O / SHACL / OWL / RDF |
| 多 Agent 上下文 | 各自隔离 | 各自隔离 | 共享智能层 |
| LLM 依赖 | 需要(生成向量/回答) | 需要 | 推理层不需要 LLM |
Semantica 不是替代向量数据库或 RAG,而是在它们之下加一层确定性推理和可审计性。
主要使用场景
金融合规:贷款审批时记录每个决策的数据来源、推理步骤、应用的信用政策,满足监管审计要求。
医疗决策支持:临床建议的药物相互作用图谱,每个诊断建议附带证据溯源链,支持 HIPAA 合规导出。
法律合同分析:合同条款的判例推理,每个法律结论追溯到具体判例和法条。
网络安全:威胁事件的 IOC(入侵指标)关联图,攻击归因链,事件响应时间线。
AI/ML 平台团队:为多个 Agent 构建共享的结构化上下文层,Agent 间不孤立运行。
安装和快速上手
bash
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,无需外部数据库):
bash
pip install semantica[tripletstore-oxigraph]
Docker 部署:
bash
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 服务器:
json
{
"mcpServers": {
"semantica": {
"command": "python",
"args": ["-m", "semantica.mcp.server"]
}
}
}
CrewAI 原生集成:
python
from semantica.integrations.crewai import SemanticalKGTool
tool = SemanticalKGTool(kg=my_knowledge_graph)
# 直接作为 CrewAI Agent 的工具使用
项目地址与资源
- GitHub : semantica-agi/semantica
- 官网 : getsemantica.ai
- 文档 : docs.getsemantica.ai
- Discord : discord.gg/sV34vps5hH
- Twitter/X : @BuildSemantica
总结
Semantica 处理的是 AI 落地企业场景时最难解决的问题之一:可问责性。
向量数据库解决了"找到相关内容",RAG 解决了"用相关内容回答问题",但"这个回答是怎么得出的、依据了哪些数据、有没有矛盾、如果出了问题能不能追责"------这一整层在现有技术栈里是空白的。
Semantica 填的是这个空白。它不和 RAG 竞争,而是坐在 RAG 之下,给每个 AI 决策加上确定性推理链和溯源标签。在金融、医疗、法律这类监管严格的行业,这层能力是 AI 从"内部试验"到"监管可接受的生产部署"的关键。
"开源版 Palantir for AI Agents"这个定位很准确:Palantir 做的是把数据、分析和决策过程关联起来,让政府和金融机构的操作员能解释自己的决策。Semantica 的目标是把这件事开源化,让 AI Agent 也能做到同样的可问责性。
探索 PrimeSkills ------ 精选 AI Agent 与技能的市场,每一个都经过真实企业工作流验证,去掉浮夸,留下真正有用的。
欢迎访问我的个人主页,发现更多有价值的见解和有趣的产品。