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émantiqueGraphe de connaissances
StructureUn ensemble consultable d’entrĂ©es textuellesEntitĂ©s, observations et relations typĂ©es
RappelRecherche par similaritĂ© / mots-clĂ©s dans les entrĂ©esFiche 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 ? »
BackendsInMemory, SQLite, Postgres, Redis, MongoDB, Neo4jGraphMemoryService (SQLite, bitemporel)
PageConcepts · BackendsGraphe 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 MemoryService est le backend de stockage : il stocke des entrĂ©es (ou des nƓuds de graphe) et rĂ©pond aux search.
  • Un MemoryServiceAdapter l'enveloppe comme un adk_core::Memory, limitĂ© Ă  un (app_name, user_id, project_id?), qui est ce que le search_memory d'un agent appelle rĂ©ellement.
  • Le Runner contient le Memory et 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-memorySqliteMemoryService — magasin sĂ©mantique basĂ© sur des fichiers
graph-memoryGraphMemoryService — graphe de connaissances bitemporel (SQLite)
database-memoryPostgresMemoryService avec pgvector
redis-memoryRedisMemoryService
mongodb-memoryMongoMemoryService
neo4j-memoryNeo4jMemoryService

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

  1. Concepts — MemoryEntry, le trait MemoryService, la recherche, le pĂ©rimĂštre du projet et l’effacement conforme au RGPD.
  2. Backends — les six magasins, les indicateurs de fonctionnalitĂ©s et la maniĂšre de choisir.
  3. Graphe de connaissances — GraphMemoryService et pourquoi la temporalitĂ© bitemporelle est importante.
  4. Outils et agents — intĂ©grer la mĂ©moire aux agents ; remember/relate et les outils de mĂ©moire.
Mémoire - Documentation ADK-Rust | ADK-Rust