engram

Конфигурация

Файл конфигурации engram.toml и переменные окружения

Конфигурация

Engram ищет конфигурацию в следующем порядке:

  1. ./engram.toml — текущая директория
  2. ~/.engram/engram.toml — домашняя директория
  3. Значения по умолчанию — если файл не найден

Переменные окружения всегда перезаписывают значения из файла.

Структура engram.toml

[database]
path = "~/.engram/memories.db"

[embedding]
provider = "voyage"         # voyage | deterministic
model = "voyage-code-3"
# api_key = "..."          # или через ENGRAM_VOYAGE_API_KEY

[llm]
provider = "openai"         # openai | local
model = "gpt-4o-mini"
# api_key = "..."          # или через ENGRAM_OPENAI_API_KEY

[server]
socket_path = "~/.engram/engram.sock"
reindex_interval_secs = 3600

[hnsw]
max_connections = 16
ef_construction = 200
ef_search = 40
dimension = 1024

[consolidation]
stale_days = 90
min_score = 0.3

[trainer]
trainer_binary = "engram-trainer"
trainer_timeout_secs = 300
models_path = "~/.engram/models"

Секции

database

ПараметрПо умолчаниюОписание
path~/.engram/memories.dbПуть к SQLite базе данных

embedding

ПараметрПо умолчаниюОписание
providervoyageПровайдер эмбеддингов: voyage или deterministic
modelvoyage-code-3Модель эмбеддингов
api_keyAPI-ключ (предпочтительно через переменную окружения)
dimension1024Размерность вектора эмбеддинга

Провайдер deterministic не требует API-ключа и генерирует детерминированные эмбеддинги из текста. Подходит для тестирования.

llm

ПараметрПо умолчаниюОписание
provideropenaiПровайдер LLM: openai или local
modelgpt-4o-miniМодель для генерации текста
api_keyAPI-ключ (предпочтительно через переменную окружения)

Провайдер local использует ONNX-модель из trainer.models_path для локальной генерации без API-вызовов.

server

ПараметрПо умолчаниюОписание
socket_path~/.engram/engram.sockПуть к Unix-сокету сервера
reindex_interval_secs3600Интервал переиндексации (секунды, 0 = выключено)

hnsw

ПараметрПо умолчаниюОписание
max_connections16Максимум соединений в графе HNSW
ef_construction200Точность при построении индекса
ef_search40Точность при поиске
dimension1024Размерность векторов (должна совпадать с embedding.dimension)

consolidation

ПараметрПо умолчаниюОписание
stale_days90Порог устаревания записей (дни)
min_score0.3Минимальный score для кандидатов консолидации

trainer

ПараметрПо умолчаниюОписание
trainer_binaryengram-trainerПуть или имя бинарника trainer
trainer_timeout_secs300Таймаут выполнения trainer (секунды)
models_path~/.engram/modelsДиректория для ONNX-моделей

Переменные окружения

ПеременнаяПерезаписывает
ENGRAM_VOYAGE_API_KEYembedding.api_key (при provider=voyage)
ENGRAM_OPENAI_API_KEYllm.api_key (при provider=openai)
ENGRAM_DB_PATHdatabase.path
ENGRAM_SOCKET_PATHserver.socket_path
ENGRAM_EMBEDDING_MODELembedding.model
ENGRAM_LLM_MODELllm.model
ENGRAM_TRAINER_BINARYtrainer.trainer_binary
ENGRAM_TRAINER_TIMEOUTtrainer.trainer_timeout_secs
ENGRAM_MODELS_PATHtrainer.models_path

Пути по умолчанию

~/.engram/
  engram.toml          # конфигурация
  memories.db          # SQLite база данных
  engram.sock          # Unix-сокет сервера
  models/              # ONNX-модели trainer
  *.hnsw               # сериализованные HNSW-индексы

Инициализация

Команда engram init создает директорию ~/.engram/ с конфигурацией по умолчанию и пустой базой данных. Если директория уже существует, init пропускает создание существующих файлов.