# Memory et connaissances

> Comment PentAGI mémorise les commandes, les résultats et les relations tout au long d'un flow.

PentAGI conserve trois types de [memory](https://pentagi.com/fr/docs/glossary/#memory) afin que les [agents](https://pentagi.com/fr/docs/glossary/#agent) puissent s'appuyer sur les travaux précédents au lieu de repartir de zéro.

| Memory              | Emplacement                              | Contenu                                                                                                     |
| ------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Memory à long terme | PostgreSQL avec pgvector                 | Embeddings des résultats, des approches réussies et des connaissances sur les [tools](https://pentagi.com/fr/docs/glossary/#tool) |
| Memory de travail   | Contexte du [flow](https://pentagi.com/fr/docs/glossary/#flow) | L'objectif actuel, l'état de la [task](https://pentagi.com/fr/docs/glossary/#task) et les ressources disponibles                  |
| Memory épisodique   | Historique des commandes                 | Actions passées, leurs résultats et les schémas ayant fonctionné                                            |

Chaque commande et sa sortie sont stockées dans PostgreSQL. Les agents interrogent le [vector store](https://pentagi.com/fr/docs/glossary/#vector-store) pour trouver des cas similaires avant d'agir, et y inscrivent leurs [findings](https://pentagi.com/fr/docs/glossary/#finding) — les agents `memorist` et `searcher` effectuent l'essentiel de ce travail de recherche.

## [Knowledge graph (optionnel)](https://pentagi.com/fr/docs/concepts/memory/#knowledge-graph-optional)

Lorsque la pile du [knowledge graph](https://pentagi.com/fr/docs/glossary/#knowledge-graph) est activée, PentAGI envoie les réponses des agents et les exécutions de tool à [Graphiti](https://github.com/getzep/graphiti) sur Neo4j. Avec les règles d’ingestion du template `.env`, il extrait les entités et les relations — hôtes, services, vulnérabilités, techniques et leur évolution dans le temps — à partir des opérations de terminal et de fichier, et conserve les autres événements consultables sans extraction.

```bash
GRAPHITI_ENABLED=true
GRAPHITI_URL=http://graphiti:8000
GRAPHITI_CONFIG_DIR=llm_configs
GRAPHITI_LLM_CLIENT_TYPE=openai
NEO4J_URI=bolt://neo4j:7687
NEO4J_PASSWORD=replace_with_a_strong_password
```

```bash
git clone --depth 1 https://github.com/vxcontrol/pentagi.git pentagi-src
cp -r pentagi-src/examples/graphiti ./graphiti
cp -r pentagi-src/examples/neo4j ./neo4j
rm -rf pentagi-src
curl -O https://raw.githubusercontent.com/vxcontrol/pentagi/main/docker-compose-graphiti.yml
docker compose -f docker-compose.yml -f docker-compose-graphiti.yml up -d
```

Graphiti exécute son propre modèle : `GRAPHITI_LLM_CLIENT_TYPE` choisit le préréglage — `openai`, `gemini`, `litellm` ou `custom` — dont les modèles sont définis dans `./graphiti/<preset>.yaml`, et la clé correspondante provient de `.env` (`OPEN_AI_KEY` pour `openai`). Un `.env` antérieur à la version 2.2.0 ne contient pas ces lignes ni les règles `GRAPHITI_INGEST_*` : copiez-les depuis le `.env.example` actuel.

> [!WARNING]
> Graphiti est une intégration bêta et est désactivée par défaut. Le rappel est limité au flow actif ; l'API Graphiti incluse ne comporte aucune authentification, veillez donc à la placer ainsi que Neo4j sur un réseau privé. L’extraction et les embeddings sont facturés séparément du modèle utilisé par le flow.

PentAGI vérifie Graphiti uniquement au démarrage, pendant quelques secondes. Si Graphiti n’est pas prêt à ce moment-là, PentAGI journalise un avertissement et s’exécute sans le knowledge graph jusqu’à son prochain redémarrage ; ainsi, dès que Graphiti signale qu’il est sain, exécutez `docker restart pentagi`.