From 10b631bfb4f7f30500b7dfcece7cc35fe74b9004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moura?= Date: Wed, 3 Apr 2024 05:52:35 -0300 Subject: [PATCH] force reseting db in care of change in dimensions --- src/crewai/memory/storage/rag_storage.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/crewai/memory/storage/rag_storage.py b/src/crewai/memory/storage/rag_storage.py index b667f66e5..bab362ebf 100644 --- a/src/crewai/memory/storage/rag_storage.py +++ b/src/crewai/memory/storage/rag_storage.py @@ -5,6 +5,7 @@ from typing import Any, Dict from embedchain import App from embedchain.llm.base import BaseLlm +from embedchain.vectordb.chroma import InvalidDimensionException from crewai.memory.storage.interface import Storage from crewai.utilities.paths import db_storage_path @@ -76,11 +77,15 @@ class RAGStorage(Storage): score_threshold: float = 0.35, ) -> Dict[str, Any]: with suppress_logging(): - results = ( - self.app.search(query, limit, where=filter) - if filter - else self.app.search(query, limit) - ) + try: + results = ( + self.app.search(query, limit, where=filter) + if filter + else self.app.search(query, limit) + ) + except InvalidDimensionException: + self.app.reset() + return [] return [r for r in results if r["metadata"]["score"] >= score_threshold] def _generate_embedding(self, text: str, metadata: Dict[str, Any]) -> Any: