Release v0.12.0
Changelog
🚀 Features
- fca54fb demo: add semantic router with response classifier and UX improvements
- 48c006e demo: add model selector with API key detection and RAG parameters
- 710b57f demo: add Material UI vertical tabs and improve retrieval
- fba1b14 demo: add collapsible log panel with vertical tab
- 0e2eebd demo: add clickable source references with PDF page navigation
- c807672 demo: add cache toggle with local and cloud cache options
- 93dd2ba demo: add PDF viewer panel with page navigation
- b7ec66a demo: add debug logging for content retrieval
- 53b4e91 messagehistory: implement SemanticMessageHistory with vector search
- 43b2405 langcache: implement URL percent-encoding and per-entry TTL support, closes #442
- b0958b4 query: add runtime parameters support for vector queries, closes #439
- c792593 add AggregateHybridQuery alias and complete notebook tests
- 548f095 add AggregateHybridQuery and complete notebook port
- 84ef410 notebooks: port Python notebook 11_advanced_queries to Java, closes #434 #436 #437 #438
- 7cee96b langcache: add attribute encoding/decoding for special characters, closes #437 #438
- cc09909 schema: add index-level stopwords support, closes #436
- 9c72f57 schema: add field modifier ordering support (PR #434), closes #434
- b3ff611 add multimodal RAG demo with LangChain4J and LangCache integration
- 539b8de add LangCache semantic cache integration, closes #418 #428 #429
- 77aaa15 add LangChain4J integration with EmbeddingStore, ContentRetriever, ChatMemoryStore, and DocumentStore
- 598f7e6 add Redis Sentinel URL support (#213), closes #213 #385
- 12e16df schema: add SVS-VAMANA vector indexing algorithm support (#404), closes #404
- f7faba0 messagehistory: add role filtering to getRecent() method (#349), closes #349 #387
- a341d4b query: add multi-vector query support (#402), closes #402
- 9b4d792 schema: add UNF/NOINDEX field attributes (#374), closes #374 #386
- 1440a12 implement skip_decode parameter for binary fields (port of Python PR #389), closes #252 #389
- 5364afa implement multi-field sorting support
- 1ecd8a5 add text field weights support to TextQuery (#384), closes #384
- 1bc8859 use AbstractPipeline for Redis Cluster compatibility, closes #365
- 8086a17 normalize key separators to prevent double separators, closes #368
- 4a6f286 add multiple prefix support to SearchIndex.fromExisting(), closes #258 #392
- 2c09995 add support for string filter expressions in HybridQuery, closes #375
- 923a68f messagehistory: implement MessageHistory feature
- 76d4001 notebooks: port 04_vectorizers.ipynb
- 9eec04c notebooks: port vectorizers notebook from Python to Java
- 69c6020 semantic_router: first cut of semantic router
- dd934b6 rerank: add VoyageAI reranker and enhance CohereReranker
- c8544c7 rerank: add Cohere reranker implementation
- bf84c84 implement HuggingFace cross-encoder reranking with ONNX
- b8a682e query: add sortBy and inOrder parameters to vector queries
- adb99fd query: add aggregation and hybrid search queries
- c9df926 implement semantic and embeddings cache extensions
- a7b3917 add vectorizer infrastructure for embedding generation
- f8e7cce implement more sofisticated storage backbone
- f57f3af initial implementation of RedisVL4J
🐛 Fixes
- 82d25bf test: use order-independent assertions in testMessagesProperty
- 11ec190 demo: suppress this-escape compiler warnings in JavaFX panels
- 2a8b1b6 test: use order-independent assertions in testGetRaw
- ff1e3d8 demo: improve RAG retrieval to include text content
- 3d1cc9d query: escape special characters in tag filter values
- 10c103d multivector: Implement AggregationQuery interface for proper FT.AGGREGATE execution
- 11f4c16 test: fix AdvancedQueriesNotebookIntegrationTest data loading
- b51fcb5 test: use ONNX-compatible model for SemanticRouterIntegrationTest
- 60e0471 vectorizers: add inputType parameter for Cohere v3 models
- 44e7ce8 notebooks: rewrite 04_vectorizers.ipynb with correct APIs
- ab7faf1 router: remove dead debug code from SemanticRouter
- 0348dbe javadoc: use versioned Jedis URL to prevent redirect warning
- ecc9079 javadoc: add comprehensive Javadoc and suppress Lombok warnings
- 74f9ffb spotbugs: address spotbugs reports
- 769b7b9 test: clean VoyageAI test and rename TokenizationDebugTest -> CrossEncoderTokenizationTest
🔄️ Changes
- f22c40b improve code organization and test coverage
🧪 Tests
- 305aaf8 multivector: Update unit test to expect @ prefix in scoring formula
- c670ddc add integration tests for multi-vector query, UNF/NOINDEX, and multi-field sorting, closes #374 #402
- bf2f286 notebooks: add comprehensive integration test for vectorizers notebook
- 1ab320d add comprehensive vectorizer provider tests
- f136355 add test categorization for better test organization
🧰 Tasks
- 741144e docs: update package-lock.json from npm install
- e6f54ed deps: bump jedis from 6.2.0 up to 7.0.0
- a03e162 notebooks: update all notebooks to use Jedis 6.2.0
- 53148a9 apply spotless formatting
🛠 Build
📝 Documentation
- f56f762 update the docs site tag line
- a0c7556 add comprehensive LangChain4J and LangCache documentation
- 0292e2c #373: verify sortBy already implemented for VectorQuery and VectorRangeQuery, closes #373
- 75f9b0b add multiple prefix and fromExisting() documentation
- ec4946e add comprehensive HybridQuery documentation
- 97c6273 readme: improving SemanticRouter example (#1), closes #1
- ad11ed2 readme: update main README
- f734507 add semantic router documentation
- 2a68ca2 first cut of Antora docs site
- 84621c6 add Jupyter notebooks for cache functionality
Contributors
We'd like to thank the following people for their contributions:
- Brian Sam-Bodden (@bsbodden)
- GitHub ()
- Raphael De Lio ()