Skip to content

v0.2.0

Choose a tag to compare

@jihadkhawaja jihadkhawaja released this 15 Aug 10:20
· 5 commits to main since this release

[v0.2.0] - 2026-08-15

⚠️ Breaking Changes

  • Storage Interface Consolidation: Merged 8 fragmented storage interfaces (IVectorMemoryStore, IBulkMemoryStore, IBatchMemoryStore, IAtomicMemoryStore, IBatchVectorMemoryStore, IMemoryHistoryStore, IResettableMemoryStore) into a single cohesive IMemoryStore.
  • Embedding Generator Consolidation: Merged IBatchEmbeddingGenerator into IEmbeddingGenerator with default interface fallback.
  • Memory Extractor Consolidation: Merged IBehaviorAwareMemoryExtractor into IMemoryExtractor with ExtractAsync(messages, options, ct).
  • Canonical Service Signatures: Standardized IMemoryService and MemoryService around canonical options records (MemoryAddOptions, MemorySearchOptions, MemoryPageOptions, MemoryUpdate).

Added

  • SIMD Hardware Acceleration: Integrated System.Numerics.Tensors across vector cosine similarity (TensorPrimitives.CosineSimilarity), vector normalization (TensorPrimitives.Norm), and vector scaling (TensorPrimitives.Divide).
  • Native Qdrant REST Search: Implemented native REST vector search via POST collections/{name}/points/search and POST collections/{name}/points/search/batch with payload filter translation.
  • SQLite SQL Pushdown: Pushed down user_id, agent_id, run_id, scope, behavior, memory_type, and expires_at filters directly into parameterized SQL WHERE clauses, streaming records via IAsyncEnumerable<Memory>.
  • PostgreSQL Graph Store Query Pushdown: Term pattern matching for graph boost calculations pushed down to database index scans with ILIKE ANY($1) instead of full table scans.
  • Concurrent LLM Reranking: Added bounded concurrent scoring with Parallel.ForEachAsync (MaxDegreeOfParallelism = 8) in LlmReranker.
  • Reverse Index in In-Memory Entity Store: Added reverse lookup index (memoryId -> HashSet<string>) to achieve $O(1)$ memory deletions.
  • Resilient JSON Parsing: Added markdown fence stripping (```json) and JSON array slice extractors in LlmMemoryExtractor and LlmGraphMemoryExtractor.
  • Strongly-Typed API DTOs: Migrated OpenAiCompatibleClient, AnthropicClient, and OllamaClient from generic JsonNode heap allocations to strongly-typed DTO records and safe base URI combining.

Optimized

  • BM25 Hybrid Search Complexity: Precomputed document frequencies reduced BM25 search complexity from $O(D^2 \cdot T)$ to $O(D \cdot T)$ with zero-allocation span tokenization.
  • In-Memory Streaming: Removed unnecessary Task.Yield() state machine overhead in InMemoryStore.GetAllAsync.

Full Changelog: v0.1.7...v0.2.0