# 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 []