mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
- Implemented 'Bring Your Own Model' (BYOM) support for NER, Relation, and Triplet extraction - Added NER aggregation strategies (simple, max, average) - Implemented Relation Extraction via Sequence Classification with entity markers - Enhanced Triplet Extraction with REBEL post-processing and lazy loading - Updated all extractors to prioritize runtime options over config defaults - Added extensive tests and examples (huggingface_demo.py) - Updated documentation and CHANGELOG
23 KiB
23 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Bring Your Own Model (BYOM) Support:
- Enabled full support for custom Hugging Face models in
NERExtractor,RelationExtractor, andTripletExtractor. - Added support for custom tokenizers in
HuggingFaceModelLoaderto handle models with non-standard tokenization requirements. - Implemented robust fallback logic for model selection: runtime options (
extract(model=...)) now correctly override configuration defaults.
- Enabled full support for custom Hugging Face models in
- Enhanced NER Implementation:
- Added configurable aggregation strategies (
simple,first,average,max) toextract_entities_huggingfacefor better sub-word token handling. - Implemented robust IOB/BILOU parsing to reconstruct entities from raw model outputs when structured output is unavailable.
- Added confidence scoring for aggregated entities.
- Added configurable aggregation strategies (
- Relation Extraction Improvements:
- Implemented standard entity marker technique (wrapping subject/object with
<subj>,<obj>tags) inextract_relations_huggingfacefor compatibility with sequence classification models. - Added structured output parsing to convert raw model predictions into validated
Relationobjects.
- Implemented standard entity marker technique (wrapping subject/object with
- Triplet Extraction Completion:
- Added specialized parsing for Seq2Seq models (e.g., REBEL) in
extract_triplets_huggingfaceto generate structured triplets directly from text. - Implemented post-processing logic to clean and validate generated triplets.
- Added specialized parsing for Seq2Seq models (e.g., REBEL) in
Fixed
- Model Parameter Precedence:
- Fixed issue where configuration defaults took precedence over runtime arguments in Hugging Face extractors. Runtime options now correctly override config values.
- Import Handling:
- Fixed circular import issues in test suites by implementing robust mocking strategies.
[0.2.4] - 2026-01-22
Added
- Ontology Ingestion Module:
- Implemented
OntologyIngestorinsemantica.ingestfor parsing RDF/OWL files (Turtle, RDF/XML, JSON-LD, N3) into standardizedOntologyDataobjects. - Added
ingest_ontologyconvenience function and integrated it into the unifiedingest(source_type="ontology")interface. - Added recursive directory scanning support for batch ontology ingestion.
- Exposed ingestion tools in
semantica.ontologyfor better discoverability. - Added
OntologyDatadataclass for consistent metadata handling (source path, format, timestamps).
- Implemented
- Documentation:
- Ontology Usage Guide: Updated
ontology_usage.mdwith comprehensive examples for single-file and directory ingestion. - API Reference: Updated
ontology.mdwithOntologyIngestorclass documentation and method details.
- Ontology Usage Guide: Updated
- Tests:
- Comprehensive Test Suite: Added
tests/ingest/test_ontology_ingestor.pycovering all supported formats, error handling, and unified interface integration. - Demo Script: Added
examples/demo_ontology_ingest.pyfor end-to-end usage demonstration.
- Comprehensive Test Suite: Added
[0.2.3] - 2026-01-20
Fixed
- LLM Relation Extraction Parsing:
- Fixed relation extraction returning zero relations despite successful API calls to Groq and other providers
- Normalized typed responses from instructor/OpenAI/Groq to consistent dict format before parsing
- Added structured JSON fallback when typed generation yields zero relations to avoid silent empty outputs
- Removed acceptance of extra kwargs (
max_tokens,max_entities_prompt) from relation extraction internals - Filtered kwargs passed to provider LLM calls to only
temperatureandverbose
- API Parameter Handling:
- Limited kwargs forwarded in chunked extraction helper to prevent parameter leakage
- Ensured minimal, safe parameters are passed to provider calls
- Pipeline Circular Import (Issues #192, #193):
- Fixed circular import between
pipeline_builderandpipeline_validatortriggered duringsemantica.pipelineimport - Lazy-loaded
PipelineValidatorinsidePipelineBuilder.__init__and guarded type hints withTYPE_CHECKING - Ensured
from semantica.deduplication import DuplicateDetectorno longer fails even when pipeline module is imported
- Fixed circular import between
- JupyterLab Progress Output (Issue #181):
- Added
SEMANTICA_DISABLE_JUPYTER_PROGRESSenvironment variable to disable rich Jupyter/Colab progress tables - When enabled, progress falls back to console-style output, preventing infinite scrolling and JupyterLab out-of-memory errors
- Added
Added
- Comprehensive Test Suite:
-
- Added unit tests (
tests/test_relations_llm.py) with mocked LLM provider covering both typed and structured response paths
- Added unit tests (
-
- Added integration tests (
tests/integration/test_relations_groq.py) for real Groq API calls with environment variable API key
- Added integration tests (
-
- Tests validate relation extraction completion and result parsing across different response formats
- Amazon Neptune Dev Environment:
-
- Added CloudFormation template (
cookbook/introduction/neptune-setup.yaml) to provision a dev Neptune cluster with public endpoint and IAM auth enabled
- Added CloudFormation template (
-
- Documented deployment, cost estimates, and IAM User vs IAM Role best practices in
cookbook/introduction/21_Amazon_Neptune_Store.ipynb
- Documented deployment, cost estimates, and IAM User vs IAM Role best practices in
-
- Added
cfn-lintto.pre-commit-config.yamlfor validating CloudFormation templates while excludingneptune-setup.yamlfrom generic YAML linters
- Added
- Vector Store High-Performance Ingestion:
-
- Added
VectorStore.add_documentsfor high-throughput ingestion with automatic embedding generation, batching, and parallel processing
- Added
-
- Added
VectorStore.embed_batchhelper for generating embeddings for lists of texts without immediately storing them
- Added
-
- Enabled default parallel ingestion in
VectorStorewithmax_workers=6for common workloads
- Enabled default parallel ingestion in
-
- Added dedicated documentation page
docs/vector_store_usage.mddescribing high-performance vector store usage and configuration
- Added dedicated documentation page
-
- Added
tests/vector_store/test_vector_store_parallel.pycovering parallel vs sequential performance, error handling, and edge cases foradd_documentsandembed_batch
- Added
Changed
- Relation Extraction API:
-
- Simplified parameter interface by removing unused kwargs that were previously ignored
-
- Improved error handling and verbose logging for debugging relation extraction issues
-
- Enhanced robustness of post-response parsing across different LLM providers
- Vector Store Defaults and Examples:
-
- Standardized
VectorStoredefault concurrency tomax_workers=6for parallel ingestion
- Standardized
-
- Updated vector store reference documentation and usage guides to rely on implicit defaults instead of requiring manual
max_workersconfiguration in examples
- Updated vector store reference documentation and usage guides to rely on implicit defaults instead of requiring manual
[0.2.2] - 2026-01-15
Added
- Parallel Extraction Engine:
- Implemented high-throughput parallel batch processing across all core extractors (
NERExtractor,RelationExtractor,TripletExtractor,EventDetector,SemanticNetworkExtractor) usingconcurrent.futures.ThreadPoolExecutor. - Added
max_workersconfiguration parameter (default: 1) to all extractorextract()methods, allowing users to tune concurrency based on available CPU cores or API rate limits. - Parallel Chunking: Implemented parallel processing for large document chunking in
_extract_entities_chunkedand_extract_relations_chunked, significantly reducing latency for long-form text analysis. - Thread-Safe Progress Tracking: Enhanced
ProgressTrackerto handle concurrent updates from multiple threads without race conditions during batch processing.
- Implemented high-throughput parallel batch processing across all core extractors (
- Semantic Extract Performance & Regression:
- Added edge-case regression suite covering max worker defaults, LLM prompt entity filtering, and extractor reuse.
- Added a runnable real-use-case benchmark script for batch latency across
NERExtractor,RelationExtractor,TripletExtractor,EventDetector,SemanticAnalyzer, andSemanticNetworkExtractor. - Added Groq LLM smoke tests that exercise LLM-based entities/relations/triplets when
GROQ_API_KEYis available via environment configuration.
Security
- Credential Sanitization:
- Removed hardcoded API keys from 8 cookbook notebooks to prevent secret leakage.
- Enforced environment variable usage for
GROQ_API_KEYacross all examples.
- Secure Caching:
- Updated
ExtractionCacheto exclude sensitive parameters (e.g.,api_key,token,password) from cache key generation, preventing secret leakage and enabling safe cache sharing. - Upgraded cache key hashing algorithm from MD5 to SHA-256 for enhanced collision resistance and security.
- Updated
Changed
- Gemini SDK Migration:
- Migrated
GeminiProviderto use the newgoogle-genaiSDK (v0.1.0+) to address deprecation warnings. - Implemented graceful fallback to
google.generativeaifor backward compatibility.
- Migrated
- Dependency Resolution:
- Pinned
opentelemetry-apiandopentelemetry-sdkto1.37.0to resolve pip conflicts. - Updated
protobufandgrpcioconstraints for better stability.
- Pinned
- Entity Filtering Scope:
- Removed entity filtering from non-LLM extraction flows to avoid accuracy regressions.
- Applied entity downselection only to LLM relation prompt construction, while matching returned entities against the full original entity list.
- Batch Concurrency Defaults:
- Standardized
max_workersdefaulting acrosssemantic_extractand tuned for low-latency: ML-backed methods default to single-worker, while pattern/regex/rules/LLM/huggingface methods use a higher parallelism default capped by CPU. - Raised the global
optimization.max_workersdefault to 8 for better throughput on batch workloads.
- Standardized
Performance
- Bottleneck Optimization (GitHub Issue #186):
- Resolved Bottleneck #1 (Sequential Processing): Replaced sequential
forloops with parallel execution for both document-level batches and intra-document chunks. - Performance Gains: Achieved ~1.89x speedup in real-world extraction scenarios (tested with Groq
llama-3.3-70b-versatileon standard datasets). - Initialization Optimization: Refactored test suite to use class-level
setUpClassfor LLM provider initialization, eliminating redundant API client creation overhead.
- Resolved Bottleneck #1 (Sequential Processing): Replaced sequential
- Low-Latency Entity Matching:
- Avoided heavyweight embedding stack imports on common matches by improving fast matching heuristics and short-circuiting before embedding similarity.
- Optimized entity matching to prioritize exact/substring/word-boundary matches and only fall back to embedding similarity when needed, reducing CPU overhead in LLM relation/triplet mapping.
[0.2.1] - 2026-01-12
Fixed
- LLM Output Stability (Bug #176):
- Fixed incomplete JSON output issues by correctly propagating
max_tokensparameter inextract_relations_llm. - Implemented automatic error handling that halves chunk sizes and retries when LLM context or output limits are exceeded.
- Fixed
AttributeErrorin provider integration by ensuring consistent parameter passing via**kwargs.
- Fixed incomplete JSON output issues by correctly propagating
- Constraint Relaxations:
- Removed hardcoded
max_lengthconstraints fromEntity,Relation, andTripletclasses to support long-form semantic extraction (e.g., long descriptions or names).
- Removed hardcoded
- Fixed orchestrator lazy property initialization and configuration normalization logic in
Orchestrator. - Resolved
AssertionErrorin orchestrator tests by aligning test mocks with production component usage. - Fixed dependency compatibility issues by pinning
protobuf>=5.29.1,<7.0andgrpcio>=1.71.2. - Added missing dependencies
GitPythonandchardettopyproject.toml. - Verified and aligned
FileObject.textproperty usage in GraphRAG notebooks for consistent content decoding.
Changed
- Chunking Defaults:
- Increased default
max_text_lengthfor auto-chunking to 64,000 characters (from 32k/16k) for OpenAI, Anthropic, Gemini, Groq, and DeepSeek providers. - Unified chunking logic across
extract_entities_llm,extract_relations_llm, andextract_triplets_llm.
- Increased default
- Groq Support:
- Standardized Groq provider defaults to use
llama-3.3-70b-versatilewith a 64k context window. - Added native support for
max_tokensandmax_completion_tokensto prevent output truncation.
- Standardized Groq provider defaults to use
Added
- Testing:
- Added
tests/reproduce_issue_176.pyto validatemax_tokenspropagation and chunking behavior across all extractors.
- Added
[0.2.0] - 2026-01-10
Added
- Amazon Neptune Support:
- Added
AmazonNeptuneStoreproviding Amazon Neptune graph database integration via Bolt protocol and OpenCypher. - Implemented
NeptuneAuthTokenManagerextending Neo4j AuthManager for AWS IAM SigV4 signing with automatic token refresh. - Added robust connection handling: retry logic with backoff for transient errors (signature expired, connection closed) and driver recreation.
- Added
graph-amazon-neptuneoptional dependency group (boto3, neo4j). - Comprehensive test suite covering all GraphStore interface methods.
- Added
- Docling Integration:
- Added
DoclingParserinsemantica.parsefor high-fidelity document parsing using the Docling library. - Supports multi-format parsing (PDF, DOCX, PPTX, XLSX, HTML, images) with superior table extraction and structure understanding.
- Implemented as a standalone parser supporting local execution, OCR, and multiple export formats (Markdown, HTML, JSON).
- Added
- Robust Extraction Fallbacks:
- Implemented comprehensive fallback chains ("ML/LLM" -> "Pattern" -> "Last Resort") across
NERExtractor,RelationExtractor, andTripletExtractorto prevent empty result lists. - Added "Last Resort" pattern matching in
NERExtractorto identify capitalized words as generic entities when all other methods fail. - Added "Last Resort" adjacency-based relation extraction in
RelationExtractorto create weak connections between adjacent entities if no relations are found. - Added fallback logic in
TripletExtractorto convert relations to triplets or use rule-based extraction if standard methods fail.
- Implemented comprehensive fallback chains ("ML/LLM" -> "Pattern" -> "Last Resort") across
- Provenance & Tracking:
- Added count tracking to batch processing logs in
NERExtractor,RelationExtractor, andTripletExtractor. - Added
batch_indexanddocument_idto the metadata of all extracted entities, relations, triplets, semantic roles, and clusters for better traceability.
- Added count tracking to batch processing logs in
- Semantic Extract Improvements:
- Introduced
auto-chunkingfor long text processing in LLM extraction methods (extract_entities_llm,extract_relations_llm,extract_triplets_llm). - Added
silent_failparameter to LLM extraction methods for configurable error handling. - Implemented robust JSON parsing and automatic retry logic (3 attempts with exponential backoff) in
BaseProviderfor all LLM providers. - Enhanced
GroqProviderwith better diagnostics and connectivity testing. - Added comprehensive entity, relation, and triplet deduplication for chunked extraction.
- Added
semantica/semantic_extract/schemas.pywith canonical Pydantic models for consistent structured output.
- Introduced
- Testing:
- Added comprehensive robustness test suite
tests/semantic_extract/test_robustness_fallback.pyfor validating extraction fallbacks and metadata propagation. - Added comprehensive unit test suite
tests/embeddings/test_model_switching.pyfor verifying dynamic model transitions and dimension updates. - Added end-to-end integration test suite for Knowledge Graph pipeline validation (GraphBuilder -> EntityResolver -> GraphAnalyzer).
- Added comprehensive robustness test suite
- Other:
- Added missing dependencies
GitPythonandchardettopyproject.toml. - Robustified ID extraction across
CentralityCalculator,CommunityDetector, andConnectivityAnalyzerto handle various entity formats. - Improved
Entityclass hashability and equality logic inutils/types.py.
- Added missing dependencies
Changed
- Deduplication & Conflict Logic:
- Removed internal deduplication logic from
NERExtractor,RelationExtractor, andTripletExtractor. - Removed consistency/conflict checking from
ExtractionValidatorto defer to dedicatedsemantica/conflictsmodule. - Removed
_deduplicate_*methods fromsemantica/semantic_extract/methods.py.
- Removed internal deduplication logic from
- Batch Processing & Consistency:
- Standardized batch processing across all extractors (
NERExtractor,RelationExtractor,TripletExtractor,SemanticNetworkExtractor,EventDetector,SemanticAnalyzer,CoreferenceResolver) using a unifiedextract/analyze/resolvemethod pattern with progress tracking. - Added provenance metadata (
batch_index,document_id) toSemanticNetworknodes/edges,Eventobjects,SemanticRoleresults,CoreferenceChainmentions, andSemanticCluster(tracking sourcedocument_ids). - Updated
SemanticClusterer.clusterandSemanticAnalyzer.cluster_semanticallyto accept list of dictionaries (withcontentandidkeys) for better document tracking during clustering. - Removed legacy
check_triplet_consistencyfromTripletExtractor. - Removed
validate_consistencyand_check_consistencyfromExtractionValidator.
- Standardized batch processing across all extractors (
- Weighted Scoring:
- Clarified weighted confidence scoring (50% Method Confidence + 50% Type Similarity) in comments.
- Explicitly labeled "Type Similarity" as "user-provided" in code comments to remove ambiguity.
- Refactoring:
- Fixed orchestrator lazy property initialization and configuration normalization logic in
Orchestrator. - Verified and aligned
FileObject.textproperty usage in GraphRAG notebooks for consistent content decoding.
- Fixed orchestrator lazy property initialization and configuration normalization logic in
Fixed
- Critical Fixes:
- Resolved
NameErrorinextraction_validator.pyby adding missingUnionimport. - Resolved issues where extractors would return empty lists for valid input text when primary extraction methods failed.
- Fixed metadata initialization issue in batch processing where
batch_indexanddocument_idwere occasionally missing from extracted items. - Ensured
LLMExtractionmethods (enhance_entities,enhance_relations) return original input instead of failing or returning empty results when LLM providers are unavailable.
- Resolved
- Component Fixes:
- Fixed model switching bug in
TextEmbedderwhere internal state was not cleared, preventing dynamic updates betweenfastembedandsentence_transformers(#160). - Implemented model-intrinsic embedding dimension detection in
TextEmbedderto ensure consistency between models and vector databases. - Updated
set_modelto properly refresh configuration and dimensions during model switches. - Fixed
TypeError: unhashable type: 'Entity'inGraphAnalyzerwhen processing graphs with rawEntityobjects or dictionaries in relationships (#159). - Resolved
AssertionErrorin orchestrator tests by aligning test mocks with production component usage. - Fixed dependency compatibility issues by pinning
protobuf==4.25.3andgrpcio==1.67.1. - Fixed a bug in
TripletExtractorwhere thevalidate_tripletsmethod was shadowed by an internal attribute. - Fixed incorrect
TextSplitterimport path in thesemantic_extract.methodsmodule.
- Fixed model switching bug in
[0.1.1] - 2026-01-05
Added
- Exported
DoclingParserandDoclingMetadatafromsemantica.parsefor easier access. - Added comprehensive
DoclingParserusage examples to README and documentation. - Added Windows-specific troubleshooting note for PyTorch DLL issues.
Fixed
- Fixed
DoclingParserimport/export issues across platforms (Windows, Linux, Google Colab). - Improved error messaging when optional
doclingdependency is missing. - Fixed versioning inconsistencies across the framework.
[0.1.0] - 2025-12-31
Added
- New command-line interface (
semanticaCLI) with support for knowledge base building and info commands. - Integrated FastAPI-based REST API server for remote access to framework functionality.
- Dedicated background worker component for scalable task processing and pipeline execution.
- Framework-level versioning configuration for PyPI distribution.
- Automated release workflow with Trusted Publishing support.
Changed
- Updated versioning across the framework to 0.1.0.
- Refined entry point configurations in
pyproject.toml. - Improved lazy module loading for core framework components.
[0.0.5] - 2025-11-26
Changed
- Configured Trusted Publishing for secure automated PyPI deployments
[0.0.4] - 2025-11-26
Changed
- Fixed PyPI deployment issues from v0.0.3
[0.0.3] - 2025-11-25
Changed
- Simplified CI/CD workflows - removed failing tests and strict linting
- Combined release and PyPI publishing into single workflow
- Simplified security scanning to weekly pip-audit only
- Streamlined GitHub Actions configuration
Added
- Comprehensive issue templates (Bug, Feature, Documentation, Support, Grant/Partnership)
- Updated pull request template with clear guidelines
- Community support documentation (SUPPORT.md)
- Funding and sponsorship configuration (FUNDING.yml)
- GitHub configuration README for maintainers
- 10+ new domain-specific cookbook examples (Finance, Healthcare, Cybersecurity, etc.)
Removed
- Redundant scripts folder (8 shell/PowerShell scripts)
- Unnecessary automation workflows (label-issues, mark-answered)
- Excessive issue templates
[0.0.2] - 2025-11-25
Changed
- Updated README with streamlined content and better examples
- Added more notebooks to cookbook
- Improved documentation structure
[0.0.1] - 2024-01-XX
Added
- Core framework architecture
- Universal data ingestion (multiple file formats)
- Semantic intelligence engine (NER, relation extraction, event detection)
- Knowledge graph construction with entity resolution
- 6-stage ontology generation pipeline
- GraphRAG engine for hybrid retrieval
- Multi-agent system infrastructure
- Production-ready quality assurance modules
- Comprehensive documentation with MkDocs
- Cookbook with interactive tutorials
- Support for multiple vector stores (Weaviate, Qdrant, FAISS)
- Support for multiple graph databases (Neo4j, NetworkX, RDFLib)
- Temporal knowledge graph support
- Conflict detection and resolution
- Deduplication and entity merging
- Schema template enforcement
- Seed data management
- Multi-format export (RDF, JSON-LD, CSV, GraphML)
- Visualization tools
- Pipeline orchestration
- Streaming support (Kafka, RabbitMQ, Kinesis)
- Context engineering for AI agents
- Reasoning and inference engine
Documentation
- Getting started guide
- API reference for all modules
- Concepts and architecture documentation
- Use case examples
- Cookbook tutorials
- Community projects showcase
Types of Changes
- Added for new features
- Changed for changes in existing functionality
- Deprecated for soon-to-be removed features
- Removed for now removed features
- Fixed for any bug fixes
- Security for vulnerability fixes
Migration Guides
When breaking changes are introduced, migration guides will be provided in the release notes and documentation.
For detailed release notes, see GitHub Releases.