MCPcopy Create free account
hub / github.com/DVampire/FinAgent / BasicMemory

Class BasicMemory

finagent/memory/basic_memory.py:17–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15
16
17class BasicMemory(BaseMemory):
18 def __init__(
19 self,
20 memory_path: str,
21 vectorstore: VectorStore,
22 memory: Optional[Dict] = None,
23 ) -> None:
24 if memory is None:
25 self.memory = {}
26 else:
27 self.memory = memory
28 self.memory_path = memory_path
29 self.vectorstore = vectorstore
30
31 def add(
32 self,
33 data: Dict,
34 embedding_key: str,
35 **kwargs,
36 ) -> None:
37 """
38 Add data to memory.
39 """
40 name = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime()) # the unique id of the added unit.
41 self.memory[name] = data
42
43 assert embedding_key in data, f"embedding_key {embedding_key} not in data"
44 embeddings = data[embedding_key]
45
46 self.vectorstore.add_embeddings([name], [embeddings])
47
48 def similarity_search(
49 self,
50 data: Dict,
51 embedding_query: str,
52 top_k: int = 3,
53 **kwargs) -> Tuple[List[Dict[str, Any]], List[float]]:
54 """
55 Retrieve the keys from the vectorstores.
56 """
57 assert embedding_query in data, f"embedding_query {embedding_query} not in data"
58
59 query_embedding = data[embedding_query]
60
61 try:
62 key_and_score = self.vectorstore.similarity_search(query_embedding, top_k)
63 items = [self.memory[k] for k, score in key_and_score]
64 scores = [score for k, score in key_and_score]
65 except:
66 items = []
67 scores = []
68
69 return items, scores
70
71 def query(self,
72 data: Dict,
73 embedding_query: str,
74 top_k: int = 3,

Callers 1

_init_memorysMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected