MCPcopy Create free account
hub / github.com/MemTensor/MemOS / PreferenceTextMemory

Class PreferenceTextMemory

src/memos/memories/textual/preference.py:33–344  ·  view source on GitHub ↗

Preference textual memory implementation for storing and retrieving memories.

Source from the content-addressed store, hash-verified

31
32
33class 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.

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected