mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
1138 lines
34 KiB
Markdown
1138 lines
34 KiB
Markdown
# Modules & Architecture
|
|
|
|
Semantica is built with a modular architecture, designed to be flexible, extensible, and scalable. This guide provides a comprehensive overview of all modules, their responsibilities, key features, and components.
|
|
|
|
!!! info "About This Guide"
|
|
This guide covers all 20+ core modules in Semantica, organized by their functional layer. Each module can be used independently or combined into powerful pipelines.
|
|
|
|
---
|
|
|
|
## Module Overview
|
|
|
|
Semantica's modules are organized into six logical layers:
|
|
|
|
| Layer | Modules | Description |
|
|
| :--- | :--- | :--- |
|
|
| **Input Layer** | [Ingest](#ingest-module), [Parse](#parse-module), [Split](#split-module), [Normalize](#normalize-module) | Data ingestion, parsing, chunking, and cleaning |
|
|
| **Core Processing** | [Semantic Extract](#semantic-extract-module), [Knowledge Graph](#knowledge-graph-kg-module), [Ontology](#ontology-module), [Reasoning](#reasoning-module) | Entity extraction, graph construction, inference |
|
|
| **Storage** | [Embeddings](#embeddings-module), [Vector Store](#vector-store-module), [Graph Store](#graph-store-module), [Triplet Store](#triplet-store-module) | Vector, graph, and triplet persistence |
|
|
| **Quality Assurance** | [Deduplication](#deduplication-module), [Conflicts](#conflicts-module) | Data quality and consistency |
|
|
| **Context & Memory** | [Context](#context-module), [Seed](#seed-module) | Agent memory and foundation data |
|
|
| **Output & Orchestration** | [Export](#export-module), [Visualization](#visualization-module), [Pipeline](#pipeline-module) | Export, visualization, and workflow management |
|
|
|
|
---
|
|
|
|
## Input Layer
|
|
|
|
These modules handle data ingestion, parsing, chunking, and preparation.
|
|
|
|
---
|
|
|
|
### Ingest Module
|
|
|
|
!!! abstract "Purpose"
|
|
The entry point for data ingestion. Connects to various data sources including files, web, databases, and MCP servers.
|
|
|
|
**Key Features:**
|
|
|
|
- 50+ file format support (PDF, DOCX, HTML, JSON, CSV, etc.)
|
|
- Web scraping with JavaScript rendering
|
|
- Database integration (SQL, NoSQL)
|
|
- Real-time streaming support
|
|
- MCP (Model Context Protocol) server integration
|
|
- Batch processing capabilities
|
|
- Metadata extraction and preservation
|
|
|
|
**Components:**
|
|
|
|
- `FileIngestor` — Read files (PDF, DOCX, HTML, JSON, CSV, etc.)
|
|
- `WebIngestor` — Scrape and ingest web pages
|
|
- `FeedIngestor` — Process RSS/Atom feeds
|
|
- `StreamIngestor` — Real-time data streaming
|
|
- `DBIngestor` — Database queries and ingestion
|
|
- `EmailIngestor` — Process email messages
|
|
- `RepoIngestor` — Git repository analysis
|
|
- `MCPIngestor` — Connect to MCP servers for resource and tool-based ingestion
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.ingest import FileIngestor, WebIngestor
|
|
|
|
# Ingest local files
|
|
file_ingestor = FileIngestor()
|
|
documents = file_ingestor.ingest("data/", recursive=True)
|
|
|
|
# Ingest web content
|
|
web_ingestor = WebIngestor()
|
|
web_docs = web_ingestor.ingest("https://example.com")
|
|
```
|
|
|
|
**API Reference**: [Ingest Module](reference/ingest.md)
|
|
|
|
---
|
|
|
|
### Parse Module
|
|
|
|
!!! abstract "Purpose"
|
|
Extracts raw text and metadata from ingested documents. Supports OCR, table extraction, and structured data parsing.
|
|
|
|
**Key Features:**
|
|
|
|
- 50+ file format support
|
|
- OCR for images and scanned documents
|
|
- Table extraction from PDFs and spreadsheets
|
|
- Metadata preservation
|
|
- Automatic format detection
|
|
- Structured data parsing (JSON, CSV, XML)
|
|
- Code file parsing with syntax awareness
|
|
|
|
**Components:**
|
|
|
|
- `DocumentParser` — Main parser orchestrator
|
|
- `PDFParser` — Extract text, tables, images from PDFs
|
|
- `DOCXParser` — Parse Word documents
|
|
- `HTMLParser` — Extract content from HTML
|
|
- `JSONParser` — Parse structured JSON data
|
|
- `ExcelParser` — Process spreadsheets
|
|
- `ImageParser` — OCR and image analysis
|
|
- `CodeParser` — Parse source code files
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.parse import DocumentParser
|
|
|
|
parser = DocumentParser(ocr_enabled=True)
|
|
parsed_docs = parser.parse(documents)
|
|
|
|
for doc in parsed_docs:
|
|
print(f"Content: {doc.content[:100]}...")
|
|
print(f"Tables found: {len(doc.tables)}")
|
|
```
|
|
|
|
**API Reference**: [Parse Module](reference/parse.md)
|
|
|
|
---
|
|
|
|
### Split Module
|
|
|
|
!!! abstract "Purpose"
|
|
Comprehensive document chunking and splitting for optimal processing. Provides 15+ splitting methods including KG-aware chunking.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple standard splitting methods (recursive, token, sentence, paragraph)
|
|
- Semantic-based chunking using NLP and embeddings
|
|
- Entity-aware chunking for GraphRAG workflows
|
|
- Relation-aware chunking for KG preservation
|
|
- Graph-based and ontology-aware chunking
|
|
- Hierarchical multi-level chunking
|
|
- Community detection-based splitting
|
|
- Sliding window chunking with overlap
|
|
- Table-specific chunking
|
|
- Chunk validation and quality assessment
|
|
- Provenance tracking for data lineage
|
|
|
|
**Components:**
|
|
|
|
- `TextSplitter` — Unified text splitter with method parameter
|
|
- `SemanticChunker` — Semantic-based chunking coordinator
|
|
- `StructuralChunker` — Structure-aware chunking (headings, lists)
|
|
- `SlidingWindowChunker` — Fixed-size sliding window chunking
|
|
- `TableChunker` — Table-specific chunking
|
|
- `EntityAwareChunker` — Entity boundary-preserving chunker
|
|
- `RelationAwareChunker` — Triplet-preserving chunker
|
|
- `GraphBasedChunker` — Graph structure-based chunker
|
|
- `OntologyAwareChunker` — Ontology concept-based chunker
|
|
- `HierarchicalChunker` — Multi-level hierarchical chunker
|
|
- `ChunkValidator` — Chunk quality validation
|
|
- `ProvenanceTracker` — Chunk provenance tracking
|
|
|
|
**Supported Methods:**
|
|
|
|
| Category | Methods |
|
|
| :--- | :--- |
|
|
| **Standard** | recursive, token, sentence, paragraph, character, word, semantic_transformer, llm |
|
|
| **KG/Ontology** | entity_aware, relation_aware, graph_based, ontology_aware, hierarchical, community_detection, centrality_based |
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.split import TextSplitter
|
|
|
|
# Standard recursive splitting
|
|
splitter = TextSplitter(method="recursive", chunk_size=1000, chunk_overlap=200)
|
|
chunks = splitter.split(text)
|
|
|
|
# Entity-aware for GraphRAG
|
|
splitter = TextSplitter(method="entity_aware", ner_method="llm", chunk_size=1000)
|
|
chunks = splitter.split(text)
|
|
```
|
|
|
|
---
|
|
|
|
### Normalize Module
|
|
|
|
!!! abstract "Purpose"
|
|
Cleans, standardizes, and prepares text for semantic extraction. Handles encoding, entity names, dates, and numbers.
|
|
|
|
**Key Features:**
|
|
|
|
- Text cleaning and noise removal
|
|
- Encoding normalization (Unicode handling)
|
|
- Entity name standardization
|
|
- Date and number formatting
|
|
- Language detection
|
|
- Whitespace normalization
|
|
- Special character handling
|
|
|
|
**Components:**
|
|
|
|
- `TextNormalizer` — Main normalization orchestrator
|
|
- `TextCleaner` — Remove noise, fix encoding
|
|
- `DataCleaner` — Clean structured data
|
|
- `EntityNormalizer` — Normalize entity names
|
|
- `DateNormalizer` — Standardize date formats
|
|
- `NumberNormalizer` — Normalize numeric values
|
|
- `LanguageDetector` — Detect document language
|
|
- `EncodingHandler` — Handle character encoding
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.normalize import TextNormalizer
|
|
|
|
normalizer = TextNormalizer(
|
|
normalize_entities=True,
|
|
normalize_dates=True,
|
|
detect_language=True
|
|
)
|
|
normalized = normalizer.normalize(parsed_docs)
|
|
|
|
for doc in normalized:
|
|
print(f"Language: {doc.language}")
|
|
```
|
|
|
|
**API Reference**: [Normalize Module](reference/normalize.md)
|
|
|
|
---
|
|
|
|
## Core Processing Layer
|
|
|
|
These modules form the intelligence core—extracting meaning, building relationships, and inferring knowledge.
|
|
|
|
---
|
|
|
|
### Semantic Extract Module
|
|
|
|
!!! abstract "Purpose"
|
|
The brain of Semantica. Uses LLMs and NLP to extract entities, relationships, and semantic meaning from text.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple NER methods (rule-based, ML, LLM)
|
|
- Relationship extraction with confidence scoring
|
|
- Event extraction
|
|
- Custom entity type support
|
|
- Multi-language support
|
|
- Semantic network extraction
|
|
- Coreference resolution
|
|
|
|
**Components:**
|
|
|
|
- `NERExtractor` — Named Entity Recognition
|
|
- `RelationExtractor` — Extract relationships between entities
|
|
- `SemanticAnalyzer` — Deep semantic analysis
|
|
- `SemanticNetworkExtractor` — Extract semantic networks
|
|
- `EventExtractor` — Extract events from text
|
|
- `CoreferenceResolver` — Resolve entity coreferences
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.semantic_extract import NERExtractor, RelationExtractor
|
|
|
|
# Extract entities
|
|
extractor = NERExtractor(method="llm", model="gpt-4")
|
|
entities = extractor.extract(normalized_docs)
|
|
|
|
# Extract relationships
|
|
relation_extractor = RelationExtractor()
|
|
relationships = relation_extractor.extract(normalized_docs, entities=entities)
|
|
|
|
for rel in relationships[:5]:
|
|
print(f"{rel.subject.text} --[{rel.predicate}]--> {rel.object.text}")
|
|
```
|
|
|
|
**API Reference**: [Semantic Extract Module](reference/semantic_extract.md)
|
|
|
|
---
|
|
|
|
### Knowledge Graph (KG) Module
|
|
|
|
!!! abstract "Purpose"
|
|
Constructs and manages knowledge graphs from extracted entities and relationships. Supports multiple backends and advanced analytics.
|
|
|
|
**Key Features:**
|
|
|
|
- Graph construction from entities/relationships
|
|
- Multiple backend support (NetworkX, Neo4j)
|
|
- Temporal graph support
|
|
- Graph analytics and metrics
|
|
- Entity resolution and deduplication
|
|
- Community detection
|
|
- Centrality calculations
|
|
- Path finding algorithms
|
|
- Graph validation
|
|
|
|
**Components:**
|
|
|
|
- `GraphBuilder` — Construct knowledge graphs
|
|
- `GraphAnalyzer` — Analyze graph structure and properties
|
|
- `EntityResolver` — Resolve entity conflicts and duplicates
|
|
- `ConflictDetector` — Detect conflicting information
|
|
- `CentralityCalculator` — Calculate node importance metrics
|
|
- `CommunityDetector` — Detect community structure
|
|
- `ConnectivityAnalyzer` — Analyze graph connectivity
|
|
- `SeedManager` — Manage seed data for KG initialization
|
|
- `TemporalQuery` — Query temporal knowledge graphs
|
|
- `Deduplicator` — Remove duplicate entities/relationships
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.kg import GraphBuilder, GraphAnalyzer
|
|
|
|
# Build graph
|
|
builder = GraphBuilder(backend="networkx", temporal=True)
|
|
kg = builder.build(entities, relationships)
|
|
|
|
# Analyze graph
|
|
analyzer = GraphAnalyzer()
|
|
metrics = analyzer.analyze(kg)
|
|
|
|
print(f"Nodes: {metrics['nodes']}, Edges: {metrics['edges']}")
|
|
print(f"Density: {metrics['density']:.3f}")
|
|
```
|
|
|
|
**API Reference**: [Knowledge Graph Module](reference/kg.md)
|
|
|
|
---
|
|
|
|
### Ontology Module
|
|
|
|
!!! abstract "Purpose"
|
|
Defines schema and structure for your knowledge domain. Generates and validates ontologies with OWL/RDF export.
|
|
|
|
**Key Features:**
|
|
|
|
- Automatic ontology generation (6-stage pipeline)
|
|
- OWL/RDF/Turtle export
|
|
- Class and property inference
|
|
- Ontology validation
|
|
- Symbolic reasoning (HermiT, Pellet)
|
|
- Version management
|
|
- SHACL constraint support
|
|
- Ontology merging and alignment
|
|
|
|
**Components:**
|
|
|
|
- `OntologyGenerator` — Generate ontologies from knowledge graphs
|
|
- `OntologyValidator` — Validate ontology structure
|
|
- `OWLGenerator` — Generate OWL format ontologies
|
|
- `PropertyGenerator` — Generate ontology properties
|
|
- `ClassInferrer` — Infer ontology classes
|
|
- `OntologyMerger` — Merge multiple ontologies
|
|
- `ReasonerInterface` — Interface with symbolic reasoners
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.ontology import OntologyGenerator
|
|
|
|
generator = OntologyGenerator(base_uri="https://example.org/ontology/")
|
|
ontology = generator.generate_from_graph(kg)
|
|
|
|
# Export to OWL
|
|
owl_content = generator.export_owl(ontology, format="turtle")
|
|
print(f"Generated {len(owl_content)} lines of OWL")
|
|
```
|
|
|
|
**API Reference**: [Ontology Module](reference/ontology.md)
|
|
|
|
---
|
|
|
|
### Reasoning Module
|
|
|
|
!!! abstract "Purpose"
|
|
Infers new facts and validates existing knowledge using logical rules. Supports forward/backward chaining and explanation generation.
|
|
|
|
**Key Features:**
|
|
|
|
- Forward and backward chaining
|
|
- Rule-based inference
|
|
- Deductive and abductive reasoning
|
|
- Explanation generation
|
|
- RETE algorithm support
|
|
- Custom rule definition
|
|
- Conflict detection in inferences
|
|
- Temporal reasoning
|
|
|
|
**Components:**
|
|
|
|
- `InferenceEngine` — Main inference orchestrator
|
|
- `RuleManager` — Manage inference rules
|
|
- `DeductiveReasoner` — Deductive reasoning
|
|
- `AbductiveReasoner` — Abductive reasoning
|
|
- `ExplanationGenerator` — Generate explanations for inferences
|
|
- `RETEEngine` — RETE algorithm for rule matching
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.reasoning import InferenceEngine, RuleManager
|
|
|
|
inference_engine = InferenceEngine()
|
|
rule_manager = RuleManager()
|
|
|
|
rules = [
|
|
"IF Person worksFor Company AND Company locatedIn City THEN Person livesIn City",
|
|
"IF Person hasFriend Person2 AND Person2 hasFriend Person3 THEN Person knows Person3"
|
|
]
|
|
rule_manager.add_rules(rules)
|
|
|
|
new_facts = inference_engine.forward_chain(kg, rule_manager)
|
|
print(f"Inferred {len(new_facts)} new facts")
|
|
```
|
|
|
|
**API Reference**: [Reasoning Module](reference/reasoning.md)
|
|
|
|
---
|
|
|
|
## Storage Layer
|
|
|
|
These modules handle persistence and retrieval of vectors, graphs, and triplets.
|
|
|
|
---
|
|
|
|
### Embeddings Module
|
|
|
|
!!! abstract "Purpose"
|
|
Generates vector embeddings for text, images, and audio. Supports multiple providers with caching and batch processing.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple provider support (OpenAI, Cohere, HuggingFace, Sentence Transformers)
|
|
- Text, image, and audio embeddings
|
|
- Multimodal embeddings
|
|
- Batch processing
|
|
- Caching support
|
|
- Custom models
|
|
- Similarity calculations
|
|
|
|
**Components:**
|
|
|
|
- `EmbeddingGenerator` — Main embedding orchestrator
|
|
- `TextEmbedder` — Generate text embeddings
|
|
- `ImageEmbedder` — Generate image embeddings
|
|
- `AudioEmbedder` — Generate audio embeddings
|
|
- `MultimodalEmbedder` — Combine multiple modalities
|
|
- `EmbeddingOptimizer` — Optimize embedding quality
|
|
- `ProviderAdapters` — Support for OpenAI, Cohere, etc.
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.embeddings import EmbeddingGenerator
|
|
|
|
generator = EmbeddingGenerator(
|
|
provider="openai",
|
|
model="text-embedding-3-small"
|
|
)
|
|
embeddings = generator.generate(documents)
|
|
|
|
# Calculate similarity
|
|
similarity = generator.similarity(embeddings[0], embeddings[1])
|
|
print(f"Similarity: {similarity:.3f}")
|
|
```
|
|
|
|
**API Reference**: [Embeddings Module](reference/embeddings.md)
|
|
|
|
---
|
|
|
|
### Vector Store Module
|
|
|
|
!!! abstract "Purpose"
|
|
Manages storage and retrieval of high-dimensional vectors. Supports hybrid search combining vector and keyword search.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple backend support (FAISS, Weaviate, Qdrant, Milvus)
|
|
- Hybrid search (vector + keyword)
|
|
- Metadata filtering
|
|
- Batch operations
|
|
- Similarity search with scoring
|
|
- Index management
|
|
- Namespace support
|
|
|
|
**Components:**
|
|
|
|
- `VectorStore` — Main vector store interface
|
|
- `FAISSAdapter` — FAISS integration
|
|
- `WeaviateAdapter` — Weaviate integration
|
|
- `HybridSearch` — Combine vector and keyword search
|
|
- `VectorRetriever` — Retrieve relevant vectors
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.vector_store import VectorStore, HybridSearch
|
|
|
|
vector_store = VectorStore(backend="faiss")
|
|
vector_store.store(embeddings, documents, metadata)
|
|
|
|
# Hybrid search
|
|
hybrid_search = HybridSearch(vector_store)
|
|
results = hybrid_search.search(
|
|
query="machine learning",
|
|
top_k=10,
|
|
filters={"category": "AI"}
|
|
)
|
|
```
|
|
|
|
**API Reference**: [Vector Store Module](reference/vector_store.md)
|
|
|
|
---
|
|
|
|
### Graph Store Module
|
|
|
|
!!! abstract "Purpose"
|
|
Integration with property graph databases for storing and querying knowledge graphs.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple backend support (Neo4j, FalkorDB)
|
|
- Cypher query language
|
|
- Graph algorithms and analytics
|
|
- Transaction support
|
|
- Index management
|
|
- High-performance queries
|
|
- Batch operations
|
|
|
|
**Components:**
|
|
|
|
- `GraphStore` — Main graph store interface
|
|
- `Neo4jAdapter` — Neo4j database integration
|
|
- `FalkorDBAdapter` — FalkorDB (Redis-based) integration
|
|
- `NodeManager` — Node CRUD operations
|
|
- `RelationshipManager` — Relationship CRUD operations
|
|
- `QueryEngine` — Cypher query execution
|
|
- `GraphAnalytics` — Graph algorithms and analytics
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.graph_store import GraphStore
|
|
|
|
store = GraphStore(backend="neo4j", uri="bolt://localhost:7687")
|
|
store.connect()
|
|
|
|
# Create nodes and relationships
|
|
alice = store.create_node(
|
|
labels=["Person"],
|
|
properties={"name": "Alice", "age": 30}
|
|
)
|
|
bob = store.create_node(
|
|
labels=["Person"],
|
|
properties={"name": "Bob", "age": 25}
|
|
)
|
|
store.create_relationship(
|
|
start_node_id=alice["id"],
|
|
end_node_id=bob["id"],
|
|
rel_type="KNOWS",
|
|
properties={"since": 2020}
|
|
)
|
|
|
|
# Query with Cypher
|
|
results = store.execute_query("MATCH (p:Person) RETURN p.name")
|
|
```
|
|
|
|
**API Reference**: [Graph Store Module](reference/graph_store.md)
|
|
|
|
---
|
|
|
|
### Triplet Store Module
|
|
|
|
!!! abstract "Purpose"
|
|
RDF triplet store integration for semantic web applications. Supports SPARQL queries and multiple backends.
|
|
|
|
**Key Features:**
|
|
|
|
- Multi-backend support (Blazegraph, Jena, RDF4J, Virtuoso)
|
|
- CRUD operations for RDF triplets
|
|
- SPARQL query execution and optimization
|
|
- Bulk data loading with progress tracking
|
|
- Query caching and optimization
|
|
- Transaction support
|
|
- Store adapter pattern
|
|
|
|
**Components:**
|
|
|
|
- `TripletManager` — Main triplet store management coordinator
|
|
- `QueryEngine` — SPARQL query execution and optimization
|
|
- `BulkLoader` — High-volume data loading with progress tracking
|
|
- `BlazegraphAdapter` — Blazegraph integration
|
|
- `JenaAdapter` — Apache Jena integration
|
|
- `RDF4JAdapter` — Eclipse RDF4J integration
|
|
- `VirtuosoAdapter` — Virtuoso RDF store integration
|
|
- `QueryPlan` — Query execution plan dataclass
|
|
- `LoadProgress` — Bulk loading progress tracking
|
|
|
|
**Algorithms:**
|
|
|
|
| Category | Algorithms |
|
|
| :--- | :--- |
|
|
| **Query Optimization** | Cost estimation, query rewriting, LIMIT injection |
|
|
| **Caching** | MD5-based cache keys, LRU eviction |
|
|
| **Bulk Loading** | Batch processing, retry with exponential backoff |
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.triplet_store import TripletManager, execute_query
|
|
|
|
manager = TripletManager()
|
|
store = manager.register_store("main", "blazegraph", "http://localhost:9999/blazegraph")
|
|
|
|
# Add triplet
|
|
result = manager.add_triplet({
|
|
"subject": "http://example.org/Alice",
|
|
"predicate": "http://example.org/knows",
|
|
"object": "http://example.org/Bob"
|
|
}, store_id="main")
|
|
|
|
# Execute SPARQL
|
|
query_result = execute_query("SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10", store)
|
|
```
|
|
|
|
**API Reference**: [Triplet Store Module](reference/triplet_store.md)
|
|
|
|
---
|
|
|
|
## Quality Assurance Layer
|
|
|
|
These modules ensure data quality, handle duplicates, and resolve conflicts.
|
|
|
|
---
|
|
|
|
### Deduplication Module
|
|
|
|
!!! abstract "Purpose"
|
|
Comprehensive entity deduplication and merging. Detects duplicates using multiple similarity methods and merges them intelligently.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple similarity methods (exact, Levenshtein, Jaro-Winkler, cosine, embedding)
|
|
- Duplicate detection with confidence scoring
|
|
- Entity merging with configurable strategies
|
|
- Cluster-based batch deduplication
|
|
- Provenance preservation during merges
|
|
- Relationship preservation
|
|
- Incremental processing support
|
|
|
|
**Components:**
|
|
|
|
- `DuplicateDetector` — Detects duplicate entities using similarity metrics
|
|
- `EntityMerger` — Merges duplicate entities using configurable strategies
|
|
- `SimilarityCalculator` — Multi-factor similarity between entities
|
|
- `MergeStrategyManager` — Manages merge strategies and conflict resolution
|
|
- `ClusterBuilder` — Builds clusters for batch deduplication
|
|
|
|
**Merge Strategies:**
|
|
|
|
| Strategy | Description |
|
|
| :--- | :--- |
|
|
| `keep_first` | Preserve first entity, merge others |
|
|
| `keep_last` | Preserve last entity, merge others |
|
|
| `keep_most_complete` | Preserve entity with most properties |
|
|
| `keep_highest_confidence` | Preserve entity with highest confidence |
|
|
| `merge_all` | Combine all properties and relationships |
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.deduplication import DuplicateDetector, EntityMerger, MergeStrategy
|
|
|
|
# Detect duplicates
|
|
detector = DuplicateDetector(similarity_threshold=0.8)
|
|
duplicate_groups = detector.detect_duplicate_groups(entities)
|
|
|
|
# Merge duplicates
|
|
merger = EntityMerger(preserve_provenance=True)
|
|
merge_operations = merger.merge_duplicates(
|
|
entities,
|
|
strategy=MergeStrategy.KEEP_MOST_COMPLETE
|
|
)
|
|
|
|
merged_entities = [op.merged_entity for op in merge_operations]
|
|
print(f"Reduced from {len(entities)} to {len(merged_entities)} entities")
|
|
```
|
|
|
|
---
|
|
|
|
### Conflicts Module
|
|
|
|
!!! abstract "Purpose"
|
|
Detects and resolves conflicts from multiple data sources. Provides investigation guides and source tracking.
|
|
|
|
**Key Features:**
|
|
|
|
- Multi-source conflict detection (value, type, relationship, temporal, logical)
|
|
- Source tracking and provenance management
|
|
- Conflict analysis and pattern identification
|
|
- Multiple resolution strategies (voting, credibility-weighted, recency)
|
|
- Investigation guide generation
|
|
- Source credibility scoring
|
|
- Conflict reporting and statistics
|
|
|
|
**Components:**
|
|
|
|
- `ConflictDetector` — Detects conflicts from multiple sources
|
|
- `ConflictResolver` — Resolves conflicts using various strategies
|
|
- `ConflictAnalyzer` — Analyzes conflict patterns and trends
|
|
- `SourceTracker` — Tracks source information and provenance
|
|
- `InvestigationGuideGenerator` — Generates investigation guides
|
|
|
|
**Resolution Strategies:**
|
|
|
|
| Strategy | Algorithm |
|
|
| :--- | :--- |
|
|
| **Voting** | Majority value selection using frequency counting |
|
|
| **Credibility Weighted** | Weighted average using source credibility scores |
|
|
| **Temporal Selection** | Newest/oldest value based on timestamps |
|
|
| **Confidence Selection** | Maximum confidence value selection |
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.conflicts import detect_and_resolve, ConflictDetector
|
|
|
|
# Using convenience function
|
|
conflicts, results = detect_and_resolve(
|
|
entities,
|
|
property_name="name",
|
|
resolution_strategy="voting"
|
|
)
|
|
|
|
# Using classes directly
|
|
detector = ConflictDetector()
|
|
conflicts = detector.detect_value_conflicts(entities, "name")
|
|
```
|
|
|
|
---
|
|
|
|
### KG Quality Assurance Module
|
|
|
|
!!! abstract "Purpose"
|
|
Comprehensive quality assessment, validation, and automated fixes for knowledge graphs.
|
|
|
|
**Key Features:**
|
|
|
|
- Quality metrics calculation (overall, completeness, consistency)
|
|
- Consistency checking (logical, temporal, hierarchical)
|
|
- Completeness validation (entity, relationship, property)
|
|
- Automated fixes (duplicates, inconsistencies, missing properties)
|
|
- Quality reporting with issue tracking
|
|
- Validation engine with rules and constraints
|
|
- Improvement suggestions
|
|
|
|
**Components:**
|
|
|
|
- `KGQualityAssessor` — Overall quality assessment coordinator
|
|
- `ConsistencyChecker` — Consistency validation engine
|
|
- `CompletenessValidator` — Completeness validation engine
|
|
- `QualityMetrics` — Quality metrics calculator
|
|
- `ValidationEngine` — Rule and constraint validation
|
|
- `RuleValidator` — Rule-based validation
|
|
- `ConstraintValidator` — Constraint-based validation
|
|
- `QualityReporter` — Quality report generation
|
|
- `IssueTracker` — Issue tracking and management
|
|
- `ImprovementSuggestions` — Improvement suggestions generator
|
|
- `AutomatedFixer` — Automated issue fixing
|
|
- `AutoMerger` — Automatic merging of duplicates
|
|
- `AutoResolver` — Automatic conflict resolution
|
|
|
|
Note: The KG quality assessment module has been temporarily removed and will be reintroduced in a future release.
|
|
|
|
---
|
|
|
|
## Context & Memory Layer
|
|
|
|
These modules provide context engineering for agents and foundation data management.
|
|
|
|
---
|
|
|
|
### Context Module
|
|
|
|
!!! abstract "Purpose"
|
|
Context engineering infrastructure for agents. Formalizes context as a graph of connections with RAG-enhanced memory.
|
|
|
|
**Key Features:**
|
|
|
|
- Context graph construction from entities, relationships, and conversations
|
|
- Agent memory management with RAG integration
|
|
- Entity linking across sources with URI assignment
|
|
- Hybrid context retrieval (vector + graph + memory)
|
|
- Conversation history management
|
|
- Context accumulation and synthesis
|
|
- Graph-based context traversal
|
|
|
|
**Components:**
|
|
|
|
- `ContextGraphBuilder` — Builds context graphs from various sources
|
|
- `ContextNode` — Context graph node data structure
|
|
- `ContextEdge` — Context graph edge data structure
|
|
- `AgentMemory` — Manages persistent agent memory with RAG
|
|
- `MemoryItem` — Memory item data structure
|
|
- `EntityLinker` — Links entities across sources with URIs
|
|
- `ContextRetriever` — Retrieves relevant context from multiple sources
|
|
|
|
**Algorithms:**
|
|
|
|
| Category | Algorithms |
|
|
| :--- | :--- |
|
|
| **Graph Construction** | BFS/DFS traversal, type-based indexing |
|
|
| **Memory Management** | Vector embedding, similarity search, retention policies |
|
|
| **Context Retrieval** | Vector similarity, multi-hop graph expansion, hybrid scoring |
|
|
| **Entity Linking** | Hash-based URI generation, text similarity matching |
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.context import build_context, ContextGraphBuilder, AgentMemory
|
|
|
|
# Using convenience function
|
|
result = build_context(
|
|
entities=entities,
|
|
relationships=relationships,
|
|
vector_store=vs,
|
|
knowledge_graph=kg
|
|
)
|
|
|
|
# Using classes directly
|
|
builder = ContextGraphBuilder()
|
|
graph = builder.build_from_entities_and_relationships(entities, relationships)
|
|
|
|
memory = AgentMemory(vector_store=vs, knowledge_graph=kg)
|
|
memory_id = memory.store("User asked about Python", metadata={"type": "conversation"})
|
|
results = memory.retrieve("Python", max_results=5)
|
|
```
|
|
|
|
---
|
|
|
|
### Seed Module
|
|
|
|
!!! abstract "Purpose"
|
|
Seed data management for initial knowledge graph construction. Builds on verified knowledge from multiple sources.
|
|
|
|
**Key Features:**
|
|
|
|
- Multi-source seed data loading (CSV, JSON, Database, API)
|
|
- Foundation graph creation from seed data
|
|
- Seed data quality validation
|
|
- Integration with extracted data using configurable merge strategies
|
|
- Version management for seed sources
|
|
- Export capabilities (JSON, CSV)
|
|
- Schema template validation
|
|
|
|
**Components:**
|
|
|
|
- `SeedDataManager` — Main coordinator for seed data operations
|
|
- `SeedDataSource` — Seed data source definition
|
|
- `SeedData` — Seed data container
|
|
|
|
**Merge Strategies:**
|
|
|
|
| Strategy | Description |
|
|
| :--- | :--- |
|
|
| `seed_first` | Seed data takes precedence, extracted fills gaps |
|
|
| `extracted_first` | Extracted data takes precedence, seed fills gaps |
|
|
| `merge` | Property merging, seed takes precedence for conflicts |
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.seed import SeedDataManager
|
|
|
|
manager = SeedDataManager()
|
|
manager.register_source("entities", "json", "data/entities.json")
|
|
foundation = manager.create_foundation_graph()
|
|
validation = manager.validate_quality(foundation)
|
|
```
|
|
|
|
---
|
|
|
|
## Output & Orchestration Layer
|
|
|
|
These modules handle export, visualization, and workflow management.
|
|
|
|
---
|
|
|
|
### Export Module
|
|
|
|
!!! abstract "Purpose"
|
|
Export knowledge graphs and data to various formats for use in external tools.
|
|
|
|
**Key Features:**
|
|
|
|
- Multiple export formats (JSON, RDF, CSV, OWL, GraphML, GEXF)
|
|
- Custom export formats
|
|
- Batch export
|
|
- Metadata preservation
|
|
- Streaming export for large graphs
|
|
- Vector export support
|
|
|
|
**Components:**
|
|
|
|
- `JSONExporter` — Export to JSON
|
|
- `RDFExporter` — Export to RDF/XML
|
|
- `CSVExporter` — Export to CSV
|
|
- `GraphExporter` — Export to graph formats (GraphML, GEXF)
|
|
- `OWLExporter` — Export to OWL
|
|
- `VectorExporter` — Export vectors
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.export import JSONExporter, RDFExporter, CSVExporter
|
|
|
|
# Export to multiple formats
|
|
JSONExporter().export(kg, "output.json")
|
|
RDFExporter().export(kg, "output.rdf")
|
|
CSVExporter().export(kg, "output.csv")
|
|
```
|
|
|
|
**API Reference**: [Export Module](reference/export.md)
|
|
|
|
---
|
|
|
|
### Visualization Module
|
|
|
|
!!! abstract "Purpose"
|
|
Visual exploration of knowledge graphs, embeddings, and analytics data.
|
|
|
|
**Key Features:**
|
|
|
|
- Interactive graph visualization
|
|
- Embedding visualization (t-SNE, PCA, UMAP)
|
|
- Temporal data visualization
|
|
- Ontology visualization
|
|
- Multiple output formats (HTML, PNG, SVG)
|
|
- Custom styling
|
|
|
|
**Components:**
|
|
|
|
- `KGVisualizer` — Visualize knowledge graphs
|
|
- `EmbeddingVisualizer` — Visualize embeddings (t-SNE, PCA, UMAP)
|
|
- `AnalyticsVisualizer` — Visualize graph analytics
|
|
- `TemporalVisualizer` — Visualize temporal data
|
|
- `OntologyVisualizer` — Visualize ontology structure
|
|
- `SemanticNetworkVisualizer` — Visualize semantic networks
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.visualization import KGVisualizer, EmbeddingVisualizer
|
|
|
|
# Visualize knowledge graph
|
|
KGVisualizer().visualize(kg, output_format="html", output_path="graph.html")
|
|
|
|
# Visualize embeddings
|
|
EmbeddingVisualizer().visualize(embeddings, method="tsne", output_path="embeddings.png")
|
|
```
|
|
|
|
**API Reference**: [Visualization Module](reference/visualization.md)
|
|
|
|
---
|
|
|
|
### Pipeline Module
|
|
|
|
!!! abstract "Purpose"
|
|
Orchestrates workflows, connecting modules into robust, executable pipelines.
|
|
|
|
**Key Features:**
|
|
|
|
- Pipeline construction DSL
|
|
- Parallel execution
|
|
- Error handling and recovery
|
|
- Resource scheduling
|
|
- Pipeline validation
|
|
- Monitoring and logging
|
|
- Checkpoint support
|
|
|
|
**Components:**
|
|
|
|
- `PipelineBuilder` — Build complex pipelines
|
|
- `ExecutionEngine` — Execute pipelines
|
|
- `FailureHandler` — Handle pipeline failures
|
|
- `ParallelismManager` — Enable parallel processing
|
|
- `ResourceScheduler` — Schedule resources
|
|
- `PipelineValidator` — Validate pipeline configuration
|
|
|
|
**Quick Example:**
|
|
|
|
```python
|
|
from semantica.pipeline import PipelineBuilder
|
|
from semantica.ingest import FileIngestor
|
|
from semantica.parse import DocumentParser
|
|
from semantica.semantic_extract import NERExtractor
|
|
|
|
builder = PipelineBuilder()
|
|
pipeline = builder \
|
|
.add_step("ingest", FileIngestor()) \
|
|
.add_step("parse", DocumentParser()) \
|
|
.add_step("extract", NERExtractor()) \
|
|
.build()
|
|
|
|
result = pipeline.execute(sources=["data/"], parallel=True)
|
|
```
|
|
|
|
**API Reference**: [Pipeline Module](reference/pipeline.md)
|
|
|
|
---
|
|
|
|
## Integration Patterns
|
|
|
|
### Pattern 1: Complete Knowledge Graph Pipeline
|
|
|
|
```python
|
|
from semantica.core import Semantica
|
|
|
|
semantica = Semantica()
|
|
result = semantica.build_knowledge_base(
|
|
sources=["documents/"],
|
|
embeddings=True,
|
|
graph=True,
|
|
normalize=True
|
|
)
|
|
```
|
|
|
|
### Pattern 2: Custom Pipeline with Module Selection
|
|
|
|
```python
|
|
from semantica.ingest import FileIngestor
|
|
from semantica.parse import DocumentParser
|
|
from semantica.split import TextSplitter
|
|
from semantica.normalize import TextNormalizer
|
|
from semantica.semantic_extract import NERExtractor, RelationExtractor
|
|
from semantica.kg import GraphBuilder
|
|
from semantica.deduplication import DuplicateDetector, EntityMerger, MergeStrategy
|
|
|
|
# Ingest and parse
|
|
documents = FileIngestor().ingest("data/")
|
|
parsed = DocumentParser().parse(documents)
|
|
|
|
# Split and normalize
|
|
chunks = TextSplitter(method="entity_aware").split(parsed)
|
|
normalized = TextNormalizer().normalize(chunks)
|
|
|
|
# Extract and build
|
|
entities = NERExtractor().extract(normalized)
|
|
relationships = RelationExtractor().extract(normalized, entities)
|
|
kg = GraphBuilder().build(entities, relationships)
|
|
|
|
# Quality assurance - deduplicate entities
|
|
detector = DuplicateDetector(similarity_threshold=0.8)
|
|
duplicate_groups = detector.detect_duplicate_groups(entities)
|
|
merger = EntityMerger()
|
|
merge_operations = merger.merge_duplicates(entities, strategy=MergeStrategy.KEEP_MOST_COMPLETE)
|
|
deduplicated = [op.merged_entity for op in merge_operations]
|
|
```
|
|
|
|
### Pattern 3: GraphRAG with Hybrid Search
|
|
|
|
```python
|
|
from semantica.core import Semantica
|
|
from semantica.vector_store import VectorStore, HybridSearch
|
|
from semantica.context import AgentMemory
|
|
|
|
semantica = Semantica()
|
|
result = semantica.build_knowledge_base(["documents/"])
|
|
|
|
vector_store = VectorStore()
|
|
vector_store.store(result["embeddings"], result["documents"])
|
|
|
|
# Agent memory with RAG
|
|
memory = AgentMemory(vector_store=vector_store, knowledge_graph=result["knowledge_graph"])
|
|
memory.store("User query about AI", metadata={"type": "query"})
|
|
|
|
# Hybrid search
|
|
hybrid_search = HybridSearch(vector_store)
|
|
results = hybrid_search.search(
|
|
query="What is the relationship between X and Y?",
|
|
graph=result["knowledge_graph"],
|
|
top_k=10
|
|
)
|
|
```
|
|
|
|
### Pattern 4: Temporal Graph with Reasoning
|
|
|
|
```python
|
|
from semantica.kg import GraphBuilder
|
|
from semantica.reasoning import InferenceEngine, RuleManager
|
|
|
|
# Build temporal graph
|
|
builder = GraphBuilder(temporal=True)
|
|
kg = builder.build(entities, relationships)
|
|
|
|
# Add reasoning
|
|
inference_engine = InferenceEngine()
|
|
rule_manager = RuleManager()
|
|
rule_manager.add_rules(["IF A THEN B"])
|
|
|
|
new_facts = inference_engine.forward_chain(kg, rule_manager)
|
|
```
|
|
|
|
---
|
|
|
|
## Quick Reference: All Modules
|
|
|
|
| Module | Import | Main Class | Purpose |
|
|
| :--- | :--- | :--- | :--- |
|
|
| **Ingest** | `semantica.ingest` | `FileIngestor` | Data ingestion |
|
|
| **Parse** | `semantica.parse` | `DocumentParser` | Document parsing |
|
|
| **Split** | `semantica.split` | `TextSplitter` | Text chunking |
|
|
| **Normalize** | `semantica.normalize` | `TextNormalizer` | Data cleaning |
|
|
| **Semantic Extract** | `semantica.semantic_extract` | `NERExtractor` | Entity extraction |
|
|
| **KG** | `semantica.kg` | `GraphBuilder` | Graph construction |
|
|
| **Ontology** | `semantica.ontology` | `OntologyGenerator` | Ontology generation |
|
|
| **Reasoning** | `semantica.reasoning` | `InferenceEngine` | Logical inference |
|
|
| **Embeddings** | `semantica.embeddings` | `EmbeddingGenerator` | Vector generation |
|
|
| **Vector Store** | `semantica.vector_store` | `VectorStore` | Vector storage |
|
|
| **Graph Store** | `semantica.graph_store` | `GraphStore` | Graph database |
|
|
| **Triplet Store** | `semantica.triplet_store` | `TripletManager` | RDF storage |
|
|
| **Deduplication** | `semantica.deduplication` | `DuplicateDetector` | Duplicate removal |
|
|
| **Conflicts** | `semantica.conflicts` | `ConflictDetector` | Conflict resolution |
|
|
| **Context** | `semantica.context` | `AgentMemory` | Agent context |
|
|
| **Seed** | `semantica.seed` | `SeedDataManager` | Foundation data |
|
|
| **Export** | `semantica.export` | `JSONExporter` | Data export |
|
|
| **Visualization** | `semantica.visualization` | `KGVisualizer` | Visualization |
|
|
| **Pipeline** | `semantica.pipeline` | `PipelineBuilder` | Workflow orchestration |
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
- **[Core Concepts](concepts.md)** — Understand the fundamental concepts
|
|
- **[Use Cases](use-cases.md)** — See real-world applications
|
|
- **[Examples](examples.md)** — Practical code examples
|
|
- **[API Reference](reference/core.md)** — Detailed API documentation
|
|
|
|
---
|
|
|
|
!!! info "Contribute"
|
|
Found an issue or want to improve this guide? [Contribute on GitHub](https://github.com/Hawksight-AI/semantica)
|
|
|
|
**Last Updated**: 2024
|