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

Class TreeTextMemory

src/memos/memories/textual/tree.py:39–649  ·  view source on GitHub ↗

General textual memory implementation for storing and retrieving memories.

Source from the content-addressed store, hash-verified

37
38
39class TreeTextMemory(BaseTextMemory):
40 """General textual memory implementation for storing and retrieving memories."""
41
42 def __init__(self, config: TreeTextMemoryConfig):
43 """Initialize memory with the given configuration."""
44 # Set mode from class default or override if needed
45 self.mode = config.mode
46 logger.info(f"Tree mode is {self.mode}")
47
48 self.config: TreeTextMemoryConfig = config
49 self.extractor_llm: OpenAILLM | OllamaLLM | AzureLLM = LLMFactory.from_config(
50 config.extractor_llm
51 )
52 self.dispatcher_llm: OpenAILLM | OllamaLLM | AzureLLM = LLMFactory.from_config(
53 config.dispatcher_llm
54 )
55 self.embedder: OllamaEmbedder = EmbedderFactory.from_config(config.embedder)
56 self.graph_store: Neo4jGraphDB = GraphStoreFactory.from_config(config.graph_db)
57
58 self.search_strategy = config.search_strategy
59 self.bm25_retriever = (
60 EnhancedBM25() if self.search_strategy and self.search_strategy["bm25"] else None
61 )
62
63 if config.reranker is None:
64 default_cfg = RerankerConfigFactory.model_validate(
65 {
66 "backend": "cosine_local",
67 "config": {
68 "level_weights": {"topic": 1.0, "concept": 1.0, "fact": 1.0},
69 "level_field": "background",
70 },
71 }
72 )
73 self.reranker = RerankerFactory.from_config(default_cfg)
74 else:
75 self.reranker = RerankerFactory.from_config(config.reranker)
76 self.is_reorganize = config.reorganize
77 self.memory_manager: MemoryManager = MemoryManager(
78 self.graph_store,
79 self.embedder,
80 self.extractor_llm,
81 memory_size=config.memory_size
82 or {
83 "WorkingMemory": 20,
84 "LongTermMemory": 1500,
85 "UserMemory": 480,
86 },
87 is_reorganize=self.is_reorganize,
88 )
89 # Create internet retriever if configured
90 self.internet_retriever = None
91 if config.internet_retriever is not None:
92 self.internet_retriever = InternetRetrieverFactory.from_config(
93 config.internet_retriever, self.embedder
94 )
95 logger.info(
96 f"Internet retriever initialized with backend: {config.internet_retriever.backend}"

Callers 2

mock_tree_text_memoryFunction · 0.90

Calls

no outgoing calls

Tested by 1

mock_tree_text_memoryFunction · 0.72