# Context > **Context engineering and memory management system for intelligent agents using RAG and Knowledge Graphs.** --- ## 🎯 Overview
- :material-graph:{ .lg .middle } **Context Graph** --- Build dynamic context graphs from conversations and entities - :material-brain:{ .lg .middle } **Agent Memory** --- Persistent memory management with vector storage integration - :material-link-variant:{ .lg .middle } **Entity Linking** --- Link entities across documents and conversations - :material-magnify:{ .lg .middle } **Hybrid Retrieval** --- Retrieve context using Vector + Graph + Keyword search - :material-history:{ .lg .middle } **Conversation History** --- Manage and synthesize conversation history - :material-bullseye-arrow:{ .lg .middle } **Intent Analysis** --- Extract and track user intent and sentiment
!!! tip "When to Use" - **Agent Development**: When building agents that need long-term memory - **RAG Applications**: For advanced Retrieval-Augmented Generation - **Personalization**: To maintain user-specific context and preferences --- ## ⚙️ Algorithms Used ### Context Graph Construction - **Graph Building**: Node/Edge construction from extracted entities - **Graph Traversal**: BFS/DFS for multi-hop context discovery - **Intent Extraction**: NLP-based intent classification - **Sentiment Analysis**: Sentiment scoring and extraction ### Agent Memory - **Vector Embedding**: Dense vector generation for memory items - **Vector Search**: Cosine similarity search (k-NN) - **Retention Policy**: Time-based decay and cleanup - **Memory Indexing**: Deque-based sliding window for short-term memory ### Entity Linking - **URI Generation**: Hash-based deterministic IDs - **Text Similarity**: Jaccard/Levenshtein for name matching - **Graph Lookup**: Entity resolution against Knowledge Graph - **Bidirectional Linking**: Symmetric link creation ### Context Retrieval - **Hybrid Scoring**: `α * VectorScore + β * GraphScore + γ * KeywordScore` - **Graph Expansion**: Retrieving neighbors of retrieved entities - **Deduplication**: Content-based result merging - **Result Ranking**: Weighted aggregation of scores --- ## Main Classes ### ContextGraphBuilder Builds and manages the context graph. **Methods:** | Method | Description | Algorithm | |--------|-------------|-----------| | `build_from_entities(entities)` | Build graph from entities | Node creation | | `add_conversation(conv)` | Add conversation data | Intent/Entity extraction | | `get_subgraph(node_id)` | Get local context | BFS Traversal | **Example:** ```python from semantica.context import ContextGraphBuilder builder = ContextGraphBuilder() graph = builder.build_from_entities_and_relationships( entities=extracted_entities, relationships=extracted_rels ) ``` ### AgentMemory Manages persistent agent memory. **Methods:** | Method | Description | Algorithm | |--------|-------------|-----------| | `store(text, metadata)` | Store memory item | Embedding + Vector Store | | `retrieve(query)` | Retrieve relevant memories | Vector Similarity | | `prune(days)` | Remove old memories | Time-based filtering | **Example:** ```python from semantica.context import AgentMemory memory = AgentMemory(vector_store=vs, knowledge_graph=kg) memory.store("User prefers Python over Java", metadata={"type": "preference"}) relevant = memory.retrieve("What language does the user like?") ``` ### EntityLinker Links entities across different contexts. **Methods:** | Method | Description | Algorithm | |--------|-------------|-----------| | `link_entities(entities)` | Link list of entities | Similarity matching | | `generate_uri(entity)` | Create unique ID | Hashing | | `find_links(entity)` | Find related entities | Graph lookup | ### ContextRetriever Orchestrates hybrid retrieval. **Methods:** | Method | Description | Algorithm | |--------|-------------|-----------| | `retrieve(query)` | Get full context | Hybrid (Vector+Graph) | | `retrieve_from_graph(query)` | Graph-only retrieval | Traversal | | `retrieve_from_memory(query)` | Memory-only retrieval | Vector search | --- ## Convenience Functions ```python from semantica.context import build_context # Build context and memory in one go context = build_context( entities=entities, relationships=relationships, vector_store=vs, knowledge_graph=kg, store_initial_memories=True ) ``` --- ## Configuration ### Environment Variables ```bash export CONTEXT_RETENTION_DAYS=30 export CONTEXT_MAX_HOPS=2 export CONTEXT_EMBEDDING_MODEL=all-MiniLM-L6-v2 ``` ### YAML Configuration ```yaml context: retention_policy: max_days: 30 max_items: 1000 retrieval: hybrid_weights: vector: 0.6 graph: 0.3 keyword: 0.1 graph: max_depth: 2 include_attributes: true ``` --- ## Integration Examples ### Chatbot with Memory ```python from semantica.context import AgentMemory, ContextRetriever from semantica.llm import LLMClient # 1. Initialize memory = AgentMemory(vector_store=vs) retriever = ContextRetriever(memory=memory, graph=kg) llm = LLMClient() def chat(user_input): # 2. Retrieve Context context = retriever.retrieve(user_input) # 3. Generate Response response = llm.generate(user_input, context=context) # 4. Update Memory memory.store(f"User: {user_input}") memory.store(f"Agent: {response}") return response ``` --- ## Best Practices 1. **Prune Regularly**: Use retention policies to keep memory relevant and performant. 2. **Use Hybrid Retrieval**: Relying solely on vector search misses structural relationships; use graph context too. 3. **Enrich Metadata**: Store rich metadata (timestamp, source, type) with memories for better filtering. 4. **Link Entities**: Ensure `EntityLinker` is used to connect mentions of the same entity across conversations. --- ## Troubleshooting **Issue**: Retrieval returns irrelevant old memories. **Solution**: Adjust retention policy or increase vector similarity threshold. ```python memory = AgentMemory( retention_days=7, similarity_threshold=0.8 ) ``` **Issue**: Context graph growing too large. **Solution**: Use `prune_graph` or limit hop depth during retrieval. --- ## See Also - [Vector Store Module](vector_store.md) - Underlying storage for memory - [Knowledge Graph Module](kg.md) - Underlying graph structure - [Embeddings Module](embeddings.md) - Vector generation