# Memory 및 지식

> PentAGI가 flow 전반에서 명령, 결과 및 관계를 기억하는 방법입니다.

PentAGI는 [agents](https://pentagi.com/ko/docs/glossary/#agent)가 처음부터 다시 시작하지 않고 이전 작업을 기반으로 구축할 수 있도록 세 가지 종류의 [memory](https://pentagi.com/ko/docs/glossary/#memory)를 유지합니다.

| Memory | 저장 위치                             | 보관 내용                                                 |
| ------ | --------------------------------- | ----------------------------------------------------- |
| 장기     | pgvector가 포함된 PostgreSQL          | 결과, 성공적인 접근 방식 및 [tool](https://pentagi.com/ko/docs/glossary/#tool) 지식의 임베딩 |
| 워킹     | [Flow](https://pentagi.com/ko/docs/glossary/#flow) 컨텍스트 | 현재 목표, [task](https://pentagi.com/ko/docs/glossary/#task) 상태 및 사용 가능한 리소스   |
| 에피소딕   | 명령 히스토리                           | 과거 행동, 그 결과 및 효과가 있었던 패턴                              |

모든 명령과 해당 출력은 PostgreSQL에 저장됩니다. Agents는 행동하기 전에 유사한 사례를 찾기 위해 [vector store](https://pentagi.com/ko/docs/glossary/#vector-store)를 쿼리하고 [findings](https://pentagi.com/ko/docs/glossary/#finding)를 다시 기록하며, `memorist` 및 `searcher` agents가 이 조회 작업의 대부분을 수행합니다.

## [Knowledge graph(선택 사항)](https://pentagi.com/ko/docs/concepts/memory/#knowledge-graph-optional)

[knowledge graph](https://pentagi.com/ko/docs/glossary/#knowledge-graph) 스택을 활성화하면 PentAGI는 agent 응답 및 tool 실행을 Neo4j 위의 [Graphiti](https://github.com/getzep/graphiti)로 전송합니다. `.env` template의 수집 규칙에 따라 terminal 및 file 작업에서 엔티티와 관계(호스트, 서비스, 취약점, 기법 및 시간이 지남에 따라 이들이 어떻게 연관되는지)를 추출하고, 다른 이벤트는 추출 없이 검색 가능한 상태로 유지합니다.

```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는 자체 모델을 실행합니다: `GRAPHITI_LLM_CLIENT_TYPE`이 프리셋 — `openai`, `gemini`, `litellm` 또는 `custom` — 을 선택하며, 해당 모델들은 `./graphiti/<preset>.yaml`에 설정되고 일치하는 키는 `.env`(`openai`의 경우 `OPEN_AI_KEY`)에서 가져옵니다. 2.2.0 이전 버전의 `.env`에는 이러한 줄과 `GRAPHITI_INGEST_*` 규칙이 없으므로 현재 `.env.example`에서 복사하십시오.

> [!WARNING]
> Graphiti는 베타 통합 기능이며 기본적으로 비활성화되어 있습니다. 리콜 범위는 활성 flow로 한정되며, 번들된 Graphiti API에는 인증 기능이 없으므로 Neo4j와 함께 프라이빗 네트워크에 배치해야 합니다. 추출 및 임베딩 비용은 flow 자체 모델과 별도로 청구됩니다.

PentAGI는 시작할 때만 몇 초 동안 Graphiti를 확인합니다. 그때까지 Graphiti가 준비되지 않으면 PentAGI는 경고를 로그에 남기고 다음 재시작 때까지 knowledge graph 없이 실행되므로, Graphiti가 정상 상태라고 보고하면 `docker restart pentagi`을 실행하십시오.