Preference textual memory implementation for storing and retrieving memories.
| 31 | |
| 32 | |
| 33 | class PreferenceTextMemory(BaseTextMemory): |
| 34 | """Preference textual memory implementation for storing and retrieving memories.""" |
| 35 | |
| 36 | def __init__(self, config: PreferenceTextMemoryConfig): |
| 37 | """Initialize memory with the given configuration.""" |
| 38 | self.config: PreferenceTextMemoryConfig = config |
| 39 | self.extractor_llm: OpenAILLM | OllamaLLM | AzureLLM = LLMFactory.from_config( |
| 40 | config.extractor_llm |
| 41 | ) |
| 42 | self.vector_db: MilvusVecDB | QdrantVecDB = VecDBFactory.from_config(config.vector_db) |
| 43 | self.embedder: OllamaEmbedder | ArkEmbedder | SenTranEmbedder | UniversalAPIEmbedder = ( |
| 44 | EmbedderFactory.from_config(config.embedder) |
| 45 | ) |
| 46 | self.reranker = RerankerFactory.from_config(config.reranker) |
| 47 | |
| 48 | self.extractor = ExtractorFactory.from_config( |
| 49 | config.extractor, |
| 50 | llm_provider=self.extractor_llm, |
| 51 | embedder=self.embedder, |
| 52 | vector_db=self.vector_db, |
| 53 | ) |
| 54 | |
| 55 | self.adder = AdderFactory.from_config( |
| 56 | config.adder, |
| 57 | llm_provider=self.extractor_llm, |
| 58 | embedder=self.embedder, |
| 59 | vector_db=self.vector_db, |
| 60 | ) |
| 61 | self.retriever = RetrieverFactory.from_config( |
| 62 | config.retriever, |
| 63 | llm_provider=self.extractor_llm, |
| 64 | embedder=self.embedder, |
| 65 | reranker=self.reranker, |
| 66 | vector_db=self.vector_db, |
| 67 | ) |
| 68 | |
| 69 | def get_memory( |
| 70 | self, messages: list[MessageList], type: str, info: dict[str, Any], **kwargs |
| 71 | ) -> list[TextualMemoryItem]: |
| 72 | """Get memory based on the messages. |
| 73 | Args: |
| 74 | messages (list[MessageList]): The messages to get memory from. |
| 75 | type (str): The type of memory to get. |
| 76 | info (dict[str, Any]): The info to get memory. |
| 77 | **kwargs: Additional keyword arguments to pass to the extractor. |
| 78 | """ |
| 79 | return self.extractor.extract(messages, type, info, **kwargs) |
| 80 | |
| 81 | def search( |
| 82 | self, query: str, top_k: int, info=None, search_filter=None, **kwargs |
| 83 | ) -> list[TextualMemoryItem]: |
| 84 | """Search for memories based on a query. |
| 85 | Args: |
| 86 | query (str): The query to search for. |
| 87 | top_k (int): The number of top results to return. |
| 88 | info (dict): Leave a record of memory consumption. |
| 89 | Returns: |
| 90 | list[TextualMemoryItem]: List of matching memories. |
no outgoing calls
no test coverage detected