muddasser commited on
Commit
3c97a91
·
verified ·
1 Parent(s): d338713

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -15
app.py CHANGED
@@ -41,6 +41,7 @@ def get_groq_api_key():
41
  def rrf_score(rank: int, k: int = RRF_K) -> float:
42
  return 1.0 / (k + rank)
43
 
 
44
  # ========================= MEMORY LAYER =========================
45
  class HybridMemory:
46
  def __init__(self):
@@ -77,32 +78,47 @@ class HybridMemory:
77
  "timestamp": datetime.now().isoformat(),
78
  "type": memory_type,
79
  })
 
 
80
  if self.vector_memory is None:
81
  self.vector_memory = FAISS.from_texts([text], self.embeddings, metadatas=[metadata])
82
  else:
83
  self.vector_memory.add_texts([text], metadatas=[metadata])
 
 
84
  self._add_to_graph(text)
85
  self.save_memory()
86
 
87
  def _add_to_graph(self, text: str):
 
88
  try:
 
89
  nlp = st.session_state.get("nlp")
90
- if nlp:
91
- doc = nlp(text[:30000])
92
- entities = [ent.text.strip().lower() for ent in doc.ents if len(ent.text.strip()) > 1]
93
- for ent in entities:
94
- if not self.graph_memory.has_node(ent):
95
- self.graph_memory.add_node(ent, count=1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  else:
97
- self.graph_memory.nodes[ent]["count"] = self.graph_memory.nodes[ent].get("count", 0) + 1
98
- for i in range(len(entities)):
99
- for j in range(i + 1, len(entities)):
100
- a, b = entities[i], entities[j]
101
- if self.graph_memory.has_edge(a, b):
102
- self.graph_memory[a][b]["weight"] += 1
103
- else:
104
- self.graph_memory.add_edge(a, b, weight=1)
105
- except:
106
  pass
107
 
108
  def retrieve_memory(self, query: str, top_k: int = 6):
 
41
  def rrf_score(rank: int, k: int = RRF_K) -> float:
42
  return 1.0 / (k + rank)
43
 
44
+ # ========================= MEMORY LAYER =========================
45
  # ========================= MEMORY LAYER =========================
46
  class HybridMemory:
47
  def __init__(self):
 
78
  "timestamp": datetime.now().isoformat(),
79
  "type": memory_type,
80
  })
81
+
82
+ # Add to Vector Memory
83
  if self.vector_memory is None:
84
  self.vector_memory = FAISS.from_texts([text], self.embeddings, metadatas=[metadata])
85
  else:
86
  self.vector_memory.add_texts([text], metadatas=[metadata])
87
+
88
+ # Add to Graph Memory
89
  self._add_to_graph(text)
90
  self.save_memory()
91
 
92
  def _add_to_graph(self, text: str):
93
+ """Safely add entities to graph"""
94
  try:
95
+ # Get nlp from session_state or load it directly
96
  nlp = st.session_state.get("nlp")
97
+ if not nlp:
98
+ nlp = load_spacy() # fallback
99
+ st.session_state.nlp = nlp
100
+
101
+ doc = nlp(text[:30000])
102
+ entities = [ent.text.strip().lower() for ent in doc.ents if len(ent.text.strip()) > 1]
103
+
104
+ if not entities:
105
+ return # No entities found
106
+
107
+ for ent in entities:
108
+ if not self.graph_memory.has_node(ent):
109
+ self.graph_memory.add_node(ent, count=1)
110
+ else:
111
+ self.graph_memory.nodes[ent]["count"] = self.graph_memory.nodes[ent].get("count", 0) + 1
112
+
113
+ for i in range(len(entities)):
114
+ for j in range(i + 1, len(entities)):
115
+ a, b = entities[i], entities[j]
116
+ if self.graph_memory.has_edge(a, b):
117
+ self.graph_memory[a][b]["weight"] += 1
118
  else:
119
+ self.graph_memory.add_edge(a, b, weight=1)
120
+ except Exception as e:
121
+ # st.warning(f"Graph memory update skipped: {e}") # uncomment for debug
 
 
 
 
 
 
122
  pass
123
 
124
  def retrieve_memory(self, query: str, top_k: int = 6):