MarCognity-AI / src /memory /semantic_retrieval.py
elly99's picture
Create semantic_retrieval.py
64dfc65 verified
# © 2025 Elena Marziali — Code released under Apache 2.0 license.
# See LICENSE in the repository for details.
# Removal of this copyright is prohibited.
# Function to retrieve similar responses
def retrieve_context(question, top_k=2):
""" Searches for similar responses in FAISS memory. """
emb_question = embedding_model.encode([question])
_, indices = index.search(np.array(emb_question, dtype=np.float32), top_k)
return [f"Previous response {i+1}" for i in indices[0]] if indices[0][0] != -1 else []
# **Usage example**
add_to_memory("What is general relativity?", "General relativity is Einstein's theory of gravity.")
similar_responses = retrieve_context("Can you explain relativity?")
print("Related responses:", similar_responses)
# Retrieve multi-turn context
def retrieve_multiturn_context(question, top_k=5):
""" Searches for related previous responses to build a broader context. """
emb_question = embedding_model.encode([question])
_, indices = index.search(np.array(emb_question, dtype=np.float32), top_k)
context = [f"Previous turn {i+1}" for i in indices[0] if i != -1]
return " ".join(context) if context else ""