diff --git a/memoryscope/core/memoryscope_context.py b/memoryscope/core/memoryscope_context.py index f8be3cd7..12c63d8e 100644 --- a/memoryscope/core/memoryscope_context.py +++ b/memoryscope/core/memoryscope_context.py @@ -33,10 +33,19 @@ class MemoryscopeContext(object): print_workflow_dynamic: bool = False + log_elasticsearch_dynamic: bool = False -def get_ms_context(): + +def get_memoryscope_uuid(): ms_context = MemoryscopeContext() if ms_context.memory_scope_uuid: return ms_context.memory_scope_uuid else: raise RuntimeError("MemoryscopeContext is not initialized yet. Please initialize it first.") + +def get_memoryscope_context(): + ms_context = MemoryscopeContext() + if ms_context.memory_scope_uuid: + return ms_context + else: + raise RuntimeError("MemoryscopeContext is not initialized yet. Please initialize it first.") diff --git a/memoryscope/core/models/base_model.py b/memoryscope/core/models/base_model.py index 8f46871c..fa27da2a 100644 --- a/memoryscope/core/models/base_model.py +++ b/memoryscope/core/models/base_model.py @@ -9,7 +9,7 @@ from memoryscope.core.utils.timer import Timer from memoryscope.enumeration.model_enum import ModelEnum from memoryscope.scheme.model_response import ModelResponse, ModelResponseGen from memoryscope.core.memoryscope_context import MemoryscopeContext -from memoryscope.core.memoryscope_context import get_ms_context +from memoryscope.core.memoryscope_context import get_memoryscope_uuid MODEL_REGISTRY = Registry("models") @@ -34,7 +34,7 @@ class BaseModel(metaclass=ABCMeta): self.retry_interval: float = retry_interval self.kwargs_filter: bool = kwargs_filter self.raise_exception: bool = raise_exception - self.context: MemoryscopeContext = get_ms_context() + self.context: MemoryscopeContext = get_memoryscope_uuid() self.kwargs: dict = kwargs self._model: Any = None diff --git a/memoryscope/core/storage/llama_index_sync_elasticsearch.py b/memoryscope/core/storage/llama_index_sync_elasticsearch.py index ab156d06..a5d835ac 100644 --- a/memoryscope/core/storage/llama_index_sync_elasticsearch.py +++ b/memoryscope/core/storage/llama_index_sync_elasticsearch.py @@ -5,6 +5,8 @@ from typing import Any, Callable, Dict, List, Literal, Optional, Union, cast import nest_asyncio import numpy as np from memoryscope.core.utils.logger import Logger +from memoryscope.core.memoryscope_context import get_memoryscope_context + from elasticsearch import AsyncElasticsearch, Elasticsearch from elasticsearch.helpers.vectorstore import ( AsyncBM25Strategy, @@ -232,6 +234,17 @@ class ESCombinedRetrieveStrategy(AsyncDenseVectorStrategy): return {"knn": knn} + def before_index_creation( + self, *, client: AsyncElasticsearch, text_field: str, vector_field: str + ) -> None: + if self.model_id: + from elasticsearch.helpers.vectorstore._async._utils import model_must_be_deployed + import asyncio + print('before_index_creation') + asyncio.run(model_must_be_deployed(client, self.model_id)) + print('before_index_creation 2') + + def _to_elasticsearch_filter(standard_filters: Dict[str, List[str]]) -> Dict[str, Any]: """ Converts standard Llama-index filters into a format compatible with Elasticsearch. @@ -363,6 +376,7 @@ class SyncElasticsearchStore(BasePydanticVectorStore): distance_strategy: Optional[DISTANCE_STRATEGIES] = "COSINE" retrieval_strategy: AsyncRetrievalStrategy logger: Logger = None + log_elasticsearch_dynamic: bool = False _store = PrivateAttr() @@ -429,6 +443,7 @@ class SyncElasticsearchStore(BasePydanticVectorStore): ) self.logger = Logger.get_logger("elastic_search") + self.log_elasticsearch_dynamic = get_memoryscope_context().log_elasticsearch_dynamic @property def client(self) -> Any: @@ -625,6 +640,8 @@ class SyncElasticsearchStore(BasePydanticVectorStore): return search_res def log_vector_store_brief(self, title="current vector store content"): + if not self.log_elasticsearch_dynamic: + return "Dynamic elasticsearch logging is disabled to enhance performance." search_res = self.sync_search_all() brief = { diff --git a/memoryscope/core/utils/logger.py b/memoryscope/core/utils/logger.py index 4a79e122..6755113a 100644 --- a/memoryscope/core/utils/logger.py +++ b/memoryscope/core/utils/logger.py @@ -19,8 +19,8 @@ def rich2text(rich_table): return '\n' + str(Text.from_ansi(capture.get())) def append_memoryscope_uuid(dir_path): - from memoryscope.core.memoryscope_context import get_ms_context # pylint: disable=import-outside-toplevel - dir_path = os.path.join(dir_path, get_ms_context()) + from memoryscope.core.memoryscope_context import get_memoryscope_uuid # pylint: disable=import-outside-toplevel + dir_path = os.path.join(dir_path, get_memoryscope_uuid()) return dir_path class Logger(logging.Logger): diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index c8617f72..00000000 --- a/requirements.txt +++ /dev/null @@ -1,18 +0,0 @@ -pyfiglet~=1.0.2 -termcolor~=2.4.0 -llama-index==0.10.45 -llama-index-core==0.10.44 -llama-index-embeddings-dashscope==0.1.3 -llama-index-llms-dashscope==0.1.2 -llama-index-postprocessor-dashscope-rerank-custom==0.1.0 -llama-index-vector-stores-elasticsearch==0.2.0 -fire==0.6.0 -questionary==2.0.1 -requests~=2.31.0 -pydantic~=2.7.1 -dashscope~=1.19.1 -elasticsearch~=8.14.0 -pyyaml~=6.0.1 -ray~=2.31.0 -numpy~=1.26.4 -rich \ No newline at end of file