Skip to content

Releases: atasoglu/sqlite-vec-client

v2.3.0

01 Nov 12:48
c605cd6

Choose a tag to compare

Added

  • High-level backup() and restore() helpers wrapping JSONL/CSV workflows
  • MkDocs documentation scaffold with API reference, operations playbook, and migration guide
  • Backup/restore coverage in the integration test suite

Fixed

  • Enforced embedding dimension validation across add/update/search operations
  • import_from_json() and import_from_csv() now respect skip_duplicates and emit clear errors when embeddings are missing

Documentation

  • New migration guide outlining v2.3.0 changes
  • Expanded README with backup helper examples and coverage instructions
  • Requirements updated with MkDocs to build the documentation locally

CI

  • Pytest coverage step now generates XML output and uploads coverage.xml as a GitHub Actions artifact

v2.2.0

29 Oct 16:55

Choose a tag to compare

Added

  • Metadata filtering: New filter_by_metadata() method for efficient key-value filtering using SQLite's JSON_EXTRACT
  • Metadata counting: New count_by_metadata() method to count records matching metadata filters
  • Combined search: New similarity_search_with_filter() method combining vector similarity with metadata filtering
  • Support for nested JSON paths in metadata filters (e.g., {"author.name": "Alice"})
  • Pagination support in filter_by_metadata() with limit and offset parameters
  • New validation function validate_metadata_filters() for secure filter validation
  • New utility function build_metadata_where_clause() for safe SQL generation
  • Comprehensive test coverage for metadata filtering (unit, integration, and security tests)
  • New example advanced_metadata_queries.py demonstrating nested paths and complex queries
  • Updated metadata_filtering.py example with new filtering methods
  • Export/import functionality: New methods for data portability
    • export_to_json() - Export records to JSON Lines format
    • import_from_json() - Import records from JSON Lines format
    • export_to_csv() - Export records to CSV format
    • import_from_csv() - Import records from CSV format
  • Support for filtered exports using metadata filters
  • Batch processing for memory-efficient import/export of large datasets
  • Optional embedding inclusion in exports
  • New io module with import/export utilities
  • Comprehensive tests for import/export functionality
  • New example export_import_example.py demonstrating backup/restore workflows

Security

  • SQL injection prevention in metadata filter keys
  • Validation of JSON paths to prevent malicious queries
  • Parameterized queries for all metadata filtering operations

Improved

  • Data migration workflows now much easier
  • Backup and restore capabilities for production use
  • Interoperability with external systems via CSV/JSON

Documentation

  • Added "Metadata Filtering" section to README with examples
  • Added "Export/Import" section to README with examples
  • Updated examples list in README
  • Added comprehensive docstrings for new methods

v2.1.1

29 Oct 12:00

Choose a tag to compare

Changed

  • Moved table name validation from __init__() to create_table() method
  • Table name is now validated when creating the table schema, not during client initialization

Improved

  • More flexible client initialization - validation happens at table creation time

v2.1.0

29 Oct 11:42

Choose a tag to compare

Added

  • Connection pooling support via ConnectionPool class
  • Thread-safe connection reuse for concurrent access scenarios
  • Optional pool parameter in SQLiteVecClient constructor
  • examples/connection_pool_example.py demonstrating pooled connections
  • Comprehensive tests for connection pooling in tests/test_pool.py

Improved

  • Better resource management for multi-threaded applications
  • Connection reuse reduces overhead in high-concurrency scenarios
  • Backward compatible - pooling is optional

v2.0.0

29 Oct 11:16

Choose a tag to compare

Changed

  • BREAKING: Simplified update_many() - removed complex grouping logic (58% code reduction)
  • BREAKING: Renamed get_by_id()get() for cleaner API
  • BREAKING: Renamed delete_by_id()delete() for cleaner API

Removed

  • BREAKING: Removed get_by_text() - use SQL queries or get_all() with filtering
  • BREAKING: Removed get_by_metadata() - use SQL queries or get_all() with filtering
  • BREAKING: Removed list_results() - use get_all() generator instead

Added

  • Kept count() method for convenience (user request)

Improved

  • 28% smaller codebase (650 → 467 lines)
  • 15% fewer methods (20 → 17)
  • Test coverage increased 89% → 92%
  • Cleaner, more intuitive API
  • Better code maintainability
  • All core CRUD and bulk operations preserved

v1.2.0

29 Oct 00:41

Choose a tag to compare

Added

  • Benchmarks module with comprehensive performance testing for CRUD operations
  • Configurable benchmark suite via benchmarks/config.yaml
  • Support for testing with different dataset sizes (100, 1K, 10K, 50K records)
  • Benchmark operations: add, get_many, similarity_search, update_many, get_all, delete_many

Fixed

  • Fixed delete_many() to handle large rowid lists by batching into chunks of 500 to avoid SQLite's "too many SQL variables" error

v1.0.1

28 Oct 20:53

Choose a tag to compare

Changed

  • Patch release

v1.0.0

28 Oct 20:43

Choose a tag to compare

Added

  • SQLiteVecClient class for CRUD and similarity search operations
  • create_table() - Initialize schema with configurable dimensions and distance metrics
  • add() - Insert texts with embeddings
  • update() - Update existing records
  • update_many() - Bulk update multiple records in a single transaction
  • delete() - Remove records by rowid
  • get() - Fetch single record by rowid
  • get_many() - Fetch multiple records
  • get_all() - Memory-efficient generator for iterating over all records
  • get_by_text() - Find records by exact text match
  • get_by_metadata() - Find records by metadata JSON match
  • list_all() - List all records with pagination
  • similarity_search() - Vector similarity search with configurable top_k
  • count() - Get total record count
  • clear() - Remove all records
  • drop_table() - Delete table and index
  • transaction() - Context manager for atomic multi-operation transactions
  • Support for text, metadata (JSON), and float32 embeddings
  • Automatic synchronization between base table and vec0 index via triggers
  • Context manager support for automatic connection cleanup
  • Distance metrics: cosine, L2, L1
  • Python logging module integration with configurable log levels
  • Type hints and dataclasses for typed results
  • Comprehensive test suite with 91%+ coverage
  • Complete CI/CD pipeline with GitHub Actions
  • Enhanced GitHub release workflow with improved changelog extraction
  • Better error handling in CI/CD pipeline
  • Pre-commit hooks and code quality tools (ruff, mypy)
  • CONTRIBUTING.md with contribution guidelines
  • CHANGELOG.md for tracking changes
  • TESTING.md with testing documentation
  • SECURITY_IMPROVEMENTS.md documenting security enhancements
  • Multiple examples in examples/ directory
  • Updated batch_operations.py example with new features
  • Comprehensive README with quick start guide

Security

  • SQL injection prevention with table name validation
  • Input validation for all parameters
  • Custom exception classes for better error handling

Fixed

  • PyPI publishing workflow with tag-based releases
  • Changelog extraction in GitHub releases
  • Changelog parsing in release notes generation