From 316045ff80cd87798181c2257ae0df8878ed7232 Mon Sep 17 00:00:00 2001 From: Hugo Saporetti Junior Date: Fri, 6 Sep 2024 17:32:58 -0300 Subject: [PATCH] Add rag enabled setting --- src/main/askai/core/askai_configs.py | 4 ++++ src/main/askai/core/askai_settings.py | 3 ++- src/main/askai/core/support/rag_provider.py | 21 +++++++++++---------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/askai/core/askai_configs.py b/src/main/askai/core/askai_configs.py index 57a4499f..7174e9e6 100644 --- a/src/main/askai/core/askai_configs.py +++ b/src/main/askai/core/askai_configs.py @@ -110,6 +110,10 @@ def chunk_overlap(self) -> int: def rag_retrival_amount(self) -> int: return settings.get_int("askai.rag.retrival.amount") + @property + def is_rag(self) -> bool: + return settings.get_int("askai.rag.enabled") + @property def language(self) -> Language: """Lookup order: Settings -> Locale -> Environment.""" diff --git a/src/main/askai/core/askai_settings.py b/src/main/askai/core/askai_settings.py index c0b905c4..8d98f5f0 100644 --- a/src/main/askai/core/askai_settings.py +++ b/src/main/askai/core/askai_settings.py @@ -43,7 +43,7 @@ class AskAiSettings(metaclass=Singleton): INSTANCE: "AskAiSettings" # Current settings version. Updating this value will trigger a database recreation using the defaults. - _ACTUAL_VERSION: str = "0.1.9" + _ACTUAL_VERSION: str = "0.1.91" RESOURCE_DIR = str(classpath.resource_path()) @@ -103,6 +103,7 @@ def defaults(self) -> None: self._settings.put("askai.text.splitter.chunk.size", "askai", 1000) self._settings.put("askai.text.splitter.chunk.overlap", "askai", 100) self._settings.put("askai.rag.retrival.amount", "askai", 3) + self._settings.put("askai.rag.enabled", "askai", True) # Router self._settings.put("askai.max.short.memory.size", "askai", 15) self._settings.put("askai.max.router.iteractions", "askai", 30) diff --git a/src/main/askai/core/support/rag_provider.py b/src/main/askai/core/support/rag_provider.py index e4734dda..20a6d48d 100644 --- a/src/main/askai/core/support/rag_provider.py +++ b/src/main/askai/core/support/rag_provider.py @@ -48,13 +48,14 @@ def get_rag_examples(self, query: str, k: int = configs.rag_retrival_amount) -> :param k: The number of examples to retrieve (default is 3). :return: A list of strings representing the retrieved examples. """ - if self._rag_db is None: - self._rag_db = FAISS.from_documents(self._rag_docs, lc_llm.create_embeddings()) - example_docs: list[Document] = self._rag_db.similarity_search(query, k=k) - rag_examples = os.linesep.join([doc.page_content for doc in example_docs]) - return dedent(f""" - **Examples:** - \"\"\" - {rag_examples} - \"\"\" - """).strip() + if configs.is_rag: + if self._rag_db is None: + self._rag_db = FAISS.from_documents(self._rag_docs, lc_llm.create_embeddings()) + example_docs: list[Document] = self._rag_db.similarity_search(query, k=k) + rag_examples = os.linesep.join([doc.page_content for doc in example_docs]) + return dedent(f""" + **Examples:** + \"\"\" + {rag_examples} + \"\"\" + """).strip()