Mémoire
Donnez Ă vos agents une mĂ©moire qui survit Ă une seule conversation. LâĂ©tat de session contient cette conversation ; la mĂ©moire est le stockage Ă long terme quâun agent consulte au dĂ©but dâun tour et auquel il Ă©crit au fur et Ă mesure quâil apprend â ainsi, la session suivante connaĂźt dĂ©jĂ lâutilisateur.
Cette section vous guide depuis le début : les deux types de mémoire que ADK-Rust propose, les types fondamentaux, les backends, le graphe de connaissances bi-temporel et la maniÚre de tout connecter à un agent.
Vous dĂ©couvrez ADK-Rust ? Lisez dâabord lâIntroduction et Sessions et Ă©tat â la mĂ©moire est le pendant persistant de la session Ă©phĂ©mĂšre.
Deux types de mémoire
ADK-Rust fournit deux modĂšles de mĂ©moire complĂ©mentaires derriĂšre le mĂȘme
trait MemoryService, afin quâun agent puisse utiliser lâun ou lâautre via une seule interface :
| Magasin sémantique | Graphe de connaissances | |
|---|---|---|
| Structure | Un ensemble consultable dâentrĂ©es textuelles | EntitĂ©s, observations et relations typĂ©es |
| Rappel | Recherche par similaritĂ© / mots-clĂ©s dans les entrĂ©es | Fiche de profil + recherche de nĆuds avec score par jetons |
| IdĂ©al pour | « De quoi avons-nous discutĂ© Ă propos de X ? » | « Quâest-ce qui est vrai Ă propos de cet utilisateur maintenant ? » |
| Backends | InMemory, SQLite, Postgres, Redis, MongoDB, Neo4j | GraphMemoryService (SQLite, bitemporel) |
| Page | Concepts · Backends | Graphe de connaissances |
Vous n'avez pas besoin de choisir globalement â choisissez pour chaque agent selon que vous avez besoin d'un rappel de type transcription ou d'un modĂšle propre et interrogeable de l'utilisateur.
ModĂšle mental
Agent turn
â search_memory(query) â recall relevant context at turn start
âŒ
adk_core::Memory â the interface the agent sees
â (MemoryServiceAdapter bridges toâŠ)
âŒ
MemoryService â add_session / search / delete_user âŠ
ââ InMemoryMemoryService (dev)
ââ Sqlite/Postgres/Redis/⊠(semantic store)
ââ GraphMemoryService (bi-temporal knowledge graph)
- Un
MemoryServiceest le backend de stockage : il stocke des entrĂ©es (ou des nĆuds de graphe) et rĂ©pond auxsearch. - Un
MemoryServiceAdapterl'enveloppe comme unadk_core::Memory, limité à un(app_name, user_id, project_id?), qui est ce que lesearch_memoryd'un agent appelle réellement. - Le Runner contient le
Memoryet le met à la disposition de l'agent ; les outils de mémoire permettent à l'agent de rechercher et de gérer délibérément la mémoire.
Installation
# Semantic store â pick the backend you need
adk-memory = { version = "2.1.0", features = ["sqlite-memory"] }
# Bi-temporal knowledge graph
adk-memory = { version = "2.1.0", features = ["graph-memory"] }
| Fonctionnalité | Ajouts |
|---|---|
| (par dĂ©faut) | InMemoryMemoryService â sans configuration, pour le dĂ©veloppement |
sqlite-memory | SqliteMemoryService â magasin sĂ©mantique basĂ© sur des fichiers |
graph-memory | GraphMemoryService â graphe de connaissances bitemporel (SQLite) |
database-memory | PostgresMemoryService avec pgvector |
redis-memory | RedisMemoryService |
mongodb-memory | MongoMemoryService |
neo4j-memory | Neo4jMemoryService |
Démarrage rapide en 60 secondes
Stockez quelques souvenirs et recherchez-les ensuite :
use adk_memory::{InMemoryMemoryService, MemoryService, MemoryEntry, SearchRequest};
use adk_core::Content;
use chrono::Utc;
# async fn run() -> anyhow::Result<()> {
let memory = InMemoryMemoryService::new();
memory.add_session("support", "alice", "s1", vec![
MemoryEntry { content: Content::new("user").with_text("I prefer email over phone"),
author: "user".into(), timestamp: Utc::now() },
]).await?;
let hits = memory.search(SearchRequest {
app_name: "support".into(), user_id: "alice".into(),
query: "how should we contact this customer?".into(),
..Default::default()
}).await?;
for entry in hits.entries { println!("{:?}", entry.content); }
# Ok(()) }
Dans un vĂ©ritable agent, vous nâappelez pas search manuellement â vous rattachez le service au
Runner et laissez lâagent se rappeler et organiser les souvenirs lui-mĂȘme.
OĂč aller ensuite
- Concepts â
MemoryEntry, le traitMemoryService, la recherche, le pĂ©rimĂštre du projet et lâeffacement conforme au RGPD. - Backends â les six magasins, les indicateurs de fonctionnalitĂ©s et la maniĂšre de choisir.
- Graphe de connaissances â
GraphMemoryServiceet pourquoi la temporalitĂ© bitemporelle est importante. - Outils et agents â intĂ©grer la mĂ©moire aux agents ;
remember/relateet les outils de mémoire.