Memory
Memory allows Agents to persist information across sessions.
Overview
YosrAI provides a simple Memory interface with multiple backends.
Usage
from yosrai.engine.memory import FileMemory
# Create a memory backed by a JSON file
memory = FileMemory(path="./agent_memory.json")
# Attach to an Agent
agent = Agent(
name="Remembrall",
instructions="You remember everything.",
memory=memory
)
Shared Memory (Team Knowledge)
You can share a single memory instance across multiple agents by injecting it via a Conductor. This creates a collaborative knowledge base.
from yosrai import Conductor, Agent
from yosrai.engine.memory import FileMemory
# Shared memory
team_memory = FileMemory("team_data.json")
# Agents don't need memory explicitly assigned here
researcher = Agent(name="Researcher", ...)
writer = Agent(name="Writer", ...)
conductor = Conductor(
name="Lead",
skills=[researcher, writer],
shared_memory=team_memory # Injects 'team_memory' into both skills
)
Text Chunking
Prepare large documents for ingestion using chunking utilities.
from yosrai.engine.utils import chunk_text, chunk_content
# Split text into segments
chunks = chunk_text("Very long text...", size=500, strategy="sentence")
# Split and attach metadata
dataset = chunk_content(
"Long article...",
metadata={"source": "viking_history.txt"},
strategy="paragraph"
)
API Reference
yosrai.engine.memory.base.Memory
Bases: ABC
Abstract interface for Agent Memory.
aadd(content, metadata=None)
abstractmethod
async
Async store a new memory item.
add(content, metadata=None)
abstractmethod
Store a new memory item.
asearch(query, limit=5)
abstractmethod
async
Async retrieve relevant memories.
clear()
abstractmethod
Clear all memories.
get_recent(limit=10)
abstractmethod
Retrieve the most recent memories.
search(query, limit=5)
abstractmethod
Retrieve relevant memories based on query (semantic search).
yosrai.engine.memory.simple.SimpleMemory
yosrai.engine.memory.simple.FileMemory
yosrai.engine.memory.vector.LocalVectorMemory
Bases: FileMemory
A light-weight Vector Store that runs locally. Uses an Embedder to generating embeddings and pure Python math for cosine similarity. Persists to a single JSON file.
Ideal for: < 1000 items (Agent scratchpad, small context). Not for: Large knowledge bases (Use Chroma/Qdrant).