From 1a1e75d78f475acb4e9dd881846de37153ff0e0c Mon Sep 17 00:00:00 2001 From: Justin Cechmanek Date: Wed, 23 Apr 2025 16:01:04 -0700 Subject: [PATCH 1/2] changes default cache embedding model --- redisvl/extensions/cache/llm/semantic.py | 27 +++++++++++++++++++++++- tests/integration/test_llmcache.py | 16 ++++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/redisvl/extensions/cache/llm/semantic.py b/redisvl/extensions/cache/llm/semantic.py index 0232514f..2d27ca36 100644 --- a/redisvl/extensions/cache/llm/semantic.py +++ b/redisvl/extensions/cache/llm/semantic.py @@ -111,8 +111,19 @@ def __init__( if dtype: vectorizer_kwargs.update(dtype=dtype) + # raise a warning to inform users we changed the default model + # remove this warning in future releases + logger.warning( + "The default vectorizer has changed from `sentence-transformers/all-mpnet-base-v2` " + "to `redis/langcache-embed-v1` in version 0.6.0 of RedisVL. " + "For more information about this model, please refer to https://arxiv.org/abs/2504.02268 " + "or visit https://huggingface.co/redis/langcache-embed-v1. " + "To continue using the old vectorizer, please specify it explicitly in the constructor as: " + "vectorizer=HFTextVectorizer(model='sentence-transformers/all-mpnet-base-v2')" + ) + self._vectorizer = HFTextVectorizer( - model="sentence-transformers/all-mpnet-base-v2", + model="redis/langcache-embed-v1", **vectorizer_kwargs, ) @@ -147,6 +158,20 @@ def __init__( # Check for existing cache index and handle schema mismatch self.overwrite = overwrite if not self.overwrite and self._index.exists(): + + if not vectorizer: + # user hasn't specified a vectorizer and an index already exists they're not overwriting + # raise a warning to inform users we changed the default embedding model + # remove this warning in future releases + logger.warning( + "The default vectorizer has changed from `sentence-transformers/all-mpnet-base-v2` " + "to `redis/langcache-embed-v1` in version 0.6.0 of RedisVL. " + "For more information about this model, please refer to https://arxiv.org/abs/2504.02268 " + "or visit https://huggingface.co/redis/langcache-embed-v1. " + "To continue using the old vectorizer, please specify it explicitly in the constructor as: " + "vectorizer=HFTextVectorizer(model='sentence-transformers/all-mpnet-base-v2')" + ) + existing_index = SearchIndex.from_existing( name, redis_client=self._index.client ) diff --git a/tests/integration/test_llmcache.py b/tests/integration/test_llmcache.py index 43bad503..8e95c1a5 100644 --- a/tests/integration/test_llmcache.py +++ b/tests/integration/test_llmcache.py @@ -17,7 +17,7 @@ @pytest.fixture def vectorizer(): - return HFTextVectorizer("sentence-transformers/all-mpnet-base-v2") + return HFTextVectorizer("redis/langcache-embed-v1") @pytest.fixture @@ -720,12 +720,17 @@ def test_cache_filtering(cache_with_filters): # test we can pass a list of tags combined_filter = filter_1 | filter_2 | filter_3 results = cache_with_filters.check( - "test prompt 1", filter_expression=combined_filter, num_results=5 + "test prompt 1", + filter_expression=combined_filter, + num_results=5, + distance_threshold=0.5, ) assert len(results) == 3 # test that default tag param searches full cache - results = cache_with_filters.check("test prompt 1", num_results=5) + results = cache_with_filters.check( + "test prompt 1", num_results=5, distance_threshold=0.6 + ) assert len(results) == 4 # test no results are returned if we pass a nonexistant tag @@ -784,7 +789,10 @@ def test_complex_filters(cache_with_filters): # test we can do range filters on inserted_at and updated_at fields range_filter = Num("inserted_at") < current_timestamp results = cache_with_filters.check( - "prompt 1", filter_expression=range_filter, num_results=5 + "prompt 1", + filter_expression=range_filter, + num_results=5, + distance_threshold=0.5, ) assert len(results) == 2 From f2240a7f2c03392cf937db585c288801598ee31b Mon Sep 17 00:00:00 2001 From: Justin Cechmanek Date: Thu, 24 Apr 2025 10:46:33 -0700 Subject: [PATCH 2/2] widens threshold in notebook for new embedding default model --- docs/user_guide/03_llmcache.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user_guide/03_llmcache.ipynb b/docs/user_guide/03_llmcache.ipynb index a9e4709a..0ddcc30c 100644 --- a/docs/user_guide/03_llmcache.ipynb +++ b/docs/user_guide/03_llmcache.ipynb @@ -271,7 +271,7 @@ "outputs": [], "source": [ "# Widen the semantic distance threshold\n", - "llmcache.set_threshold(0.3)" + "llmcache.set_threshold(0.5)" ] }, {