Система памяти
PRX предоставляет гибкую систему памяти, позволяющую агентам сохранять и вспоминать контекст между разговорами. Система памяти поддерживает 5 бэкендов хранения, каждый из которых оптимизирован для различных сценариев развёртывания.
Обзор
Система памяти выполняет три основные функции:
- Вспоминание -- извлечение релевантных прошлых взаимодействий и фактов перед каждым вызовом LLM
- Сохранение -- фиксация важной информации, извлечённой из разговоров
- Компактизация -- обобщение и сжатие старых воспоминаний для вписывания в контекстные ограничения
Бэкенды хранения
| Бэкенд | Персистентность | Поиск | Лучше всего для |
|---|---|---|---|
| Markdown | Файловый | Полнотекстовый grep | CLI для одного пользователя, память под контролем версий |
| SQLite | Локальная база данных | Полнотекстовый FTS5 | Локальные развёртывания, небольшие команды |
| PostgreSQL | Удалённая база данных | pg_trgm + FTS | Многопользовательские серверные развёртывания |
| Эмбеддинги | Векторное хранилище | Семантическое сходство | RAG-извлечение, большие базы знаний |
| In-memory | Отсутствует (только сессия) | Линейный перебор | Эфемерные сессии, тестирование |
Конфигурация
Выберите и настройте бэкенд памяти в config.toml:
toml
[memory]
backend = "sqlite" # "markdown" | "sqlite" | "postgres" | "embeddings" | "memory"
max_recall_items = 20
recall_relevance_threshold = 0.3
[memory.sqlite]
path = "~/.local/share/openprx/memory.db"
[memory.postgres]
url = "postgresql://user:pass@localhost/prx"
[memory.embeddings]
provider = "ollama"
model = "nomic-embed-text"
dimension = 768Жизненный цикл памяти
- Извлечение -- после каждого хода разговора система извлекает ключевые факты
- Дедупликация -- новые факты сравниваются с существующими воспоминаниями
- Сохранение -- уникальные факты сохраняются в настроенный бэкенд
- Вспоминание -- перед каждым вызовом LLM извлекаются релевантные воспоминания
- Гигиена -- периодическое обслуживание компактизирует и очищает устаревшие записи