My-AI-Assistant / semantic_memory.py
Ahmedoooooo's picture
Create semantic_memory.py
fd860bf verified
Raw
History Blame Contribute Delete
1.14 kB
# semantic_memory.py
import chromadb
from sentence_transformers import SentenceTransformer
import numpy as np
# نموذج تضمين مجاني وصغير (حجمه ~80 ميجا)
model = SentenceTransformer('all-MiniLM-L6-v2')
client = chromadb.PersistentClient(path="./chroma_memory")
collection = client.get_or_create_collection("semantic_memory")
def store_memory(text: str, user: str, metadata: dict = None):
"""تخزين الذاكرة مع تضمين دلالي"""
embedding = model.encode(text).tolist()
doc_id = f"{user}_{hash(text)}_{len(collection.get()['ids'])}"
collection.add(
documents=[text],
embeddings=[embedding],
metadatas=[{"user": user, "text": text, **(metadata or {})}],
ids=[doc_id]
)
return doc_id
def recall_memory(query: str, user: str, limit: int = 3) -> list:
"""استرجاع أكثر الذكريات تشابهاً دلالياً"""
embedding = model.encode(query).tolist()
results = collection.query(query_embeddings=[embedding], n_results=limit, where={"user": user})
return results['documents'][0] if results['documents'] else []