muddasser commited on
Commit
d9bdcf2
·
verified ·
1 Parent(s): 98f0dfa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -8
app.py CHANGED
@@ -1,6 +1,7 @@
1
  # app.py - Hybrid Memory-Augmented Graph RAG with Groq
2
  import hashlib
3
  import os
 
4
  from collections import defaultdict
5
  from datetime import datetime
6
 
@@ -37,7 +38,11 @@ def rrf_score(rank: int, k: int = RRF_K) -> float:
37
  # ========================= MEMORY LAYER =========================
38
  class HybridMemory:
39
  def __init__(self):
40
- self.embeddings = HuggingFaceEmbeddings(model_name=EMBED_MODEL_NAME)
 
 
 
 
41
  self.vector_memory = None
42
  self.graph_memory = nx.Graph()
43
  self.memory_dir = "user_memory"
@@ -46,17 +51,19 @@ class HybridMemory:
46
 
47
  def load_memory(self):
48
  vector_path = os.path.join(self.memory_dir, "vector_memory")
49
- graph_path = os.path.join(self.memory_dir, "memory_graph.gpickle")
50
-
51
  if os.path.exists(vector_path):
52
  self.vector_memory = FAISS.load_local(vector_path, self.embeddings, allow_dangerous_deserialization=True)
53
  if os.path.exists(graph_path):
54
- self.graph_memory = nx.read_gpickle(graph_path)
 
55
 
56
  def save_memory(self):
57
  if self.vector_memory:
58
  self.vector_memory.save_local(os.path.join(self.memory_dir, "vector_memory"))
59
- nx.write_gpickle(self.graph_memory, os.path.join(self.memory_dir, "memory_graph.gpickle"))
 
60
 
61
  def add_memory(self, text: str, memory_type: str = "fact", metadata: dict = None):
62
  if metadata is None:
@@ -110,11 +117,21 @@ class HybridMemory:
110
 
111
  # ========================= ORIGINAL PIPELINE FUNCTIONS =========================
112
  @st.cache_resource
113
- def load_embed_model(): return SentenceTransformer(EMBED_MODEL_NAME)
 
 
114
  @st.cache_resource
115
- def load_reranker(): return CrossEncoder(RERANKER_MODEL)
 
 
116
  @st.cache_resource
117
- def load_lc_embeddings(): return HuggingFaceEmbeddings(model_name=EMBED_MODEL_NAME)
 
 
 
 
 
 
118
  @st.cache_resource
119
  def load_spacy():
120
  try:
 
1
  # app.py - Hybrid Memory-Augmented Graph RAG with Groq
2
  import hashlib
3
  import os
4
+ import pickle
5
  from collections import defaultdict
6
  from datetime import datetime
7
 
 
38
  # ========================= MEMORY LAYER =========================
39
  class HybridMemory:
40
  def __init__(self):
41
+ self.embeddings = HuggingFaceEmbeddings(
42
+ model_name=EMBED_MODEL_NAME,
43
+ cache_folder="/tmp/model_cache",
44
+ model_kwargs={"device": "cpu"},
45
+ )
46
  self.vector_memory = None
47
  self.graph_memory = nx.Graph()
48
  self.memory_dir = "user_memory"
 
51
 
52
  def load_memory(self):
53
  vector_path = os.path.join(self.memory_dir, "vector_memory")
54
+ graph_path = os.path.join(self.memory_dir, "memory_graph.pkl")
55
+
56
  if os.path.exists(vector_path):
57
  self.vector_memory = FAISS.load_local(vector_path, self.embeddings, allow_dangerous_deserialization=True)
58
  if os.path.exists(graph_path):
59
+ with open(graph_path, "rb") as f:
60
+ self.graph_memory = pickle.load(f)
61
 
62
  def save_memory(self):
63
  if self.vector_memory:
64
  self.vector_memory.save_local(os.path.join(self.memory_dir, "vector_memory"))
65
+ with open(os.path.join(self.memory_dir, "memory_graph.pkl"), "wb") as f:
66
+ pickle.dump(self.graph_memory, f)
67
 
68
  def add_memory(self, text: str, memory_type: str = "fact", metadata: dict = None):
69
  if metadata is None:
 
117
 
118
  # ========================= ORIGINAL PIPELINE FUNCTIONS =========================
119
  @st.cache_resource
120
+ def load_embed_model():
121
+ return SentenceTransformer(EMBED_MODEL_NAME, cache_folder="/tmp/model_cache")
122
+
123
  @st.cache_resource
124
+ def load_reranker():
125
+ return CrossEncoder(RERANKER_MODEL)
126
+
127
  @st.cache_resource
128
+ def load_lc_embeddings():
129
+ return HuggingFaceEmbeddings(
130
+ model_name=EMBED_MODEL_NAME,
131
+ cache_folder="/tmp/model_cache",
132
+ model_kwargs={"device": "cpu"},
133
+ )
134
+
135
  @st.cache_resource
136
  def load_spacy():
137
  try: