开源项目第193期:Semantica — 开源版 Palantir for AI Agent,知识图谱 + 确定性推理 + W3C 溯源,让 AI 决策可追溯、可审计、可合规
弿ºé¡¹ç®ç¬¬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ï¼
ä¸å ¶ä»æ¹æ¡çå®ä½å·®å¼
| 维度 | åéæ°æ®åº + RAG | LangChain Memory | Semantica |
|---|---|---|---|
| å³çåå² | ä¸åå¨ | ä¸åå¨ | ä¸çå ¬æ°ï¼å¯æ¥è¯¢ |
| å ææº¯æº | æ | æ | 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 çå·¥å
·ä½¿ç¨
项ç®å°åä¸èµæº
- 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 䏿è½çå¸åºï¼æ¯ä¸ä¸ªé½ç»è¿çå®ä¼ä¸å·¥ä½æµéªè¯ï¼å»ææµ®å¤¸ï¼çä¸çæ£æç¨çã
欢è¿è®¿é®æç个人主页ï¼åç°æ´å¤æä»·å¼çè§è§£åæè¶£ç产åã
Aitishiku.com