Как работает Prometheus

Prometheus — это не «чат с моделью поверх Obsidian», а локальный RAG: индекс ваших Markdown-заметок, поиск по смыслу и генерация ответа строго по найденному контексту.

Три процесса на вашей машине

  1. Prometheus Plugin — Community Plugin: Chat, Search, Settings, Status, доступ к Vault API и жизненный цикл runtime.
  2. Prometheus Runtime — локальный sidecar: parsing, chunking, embeddings, sqlite-vec, retrieval, grounded prompt.
  3. Ollama — внешний локальный runtime для выбранной вами LLM.
┌─────────────────────────────────────────────────────────────┐
│                     Компьютер пользователя                  │
│                                                             │
│  ┌──────────────────────────────┐                           │
│  │     Prometheus Plugin        │                           │
│  │ Chat / Search / Settings     │                           │
│  └──────────────┬───────────────┘                           │
│                 │ HTTP на 127.0.0.1                         │
│                 ▼                                           │
│  ┌──────────────────────────────┐       localhost           │
│  │      Prometheus Runtime      │────────────────────┐      │
│  │ Parser / Chunker / Retrieval │                    ▼      │
│  │ FastEmbed / sqlite-vec       │           ┌────────────┐  │
│  └──────────────────────────────┘           │   Ollama   │  │
│                                             │ Local LLM  │  │
│                                             └────────────┘  │
└─────────────────────────────────────────────────────────────┘
Важно: HTTP между плагином и Runtime — это IPC на 127.0.0.1, а не публичный сетевой API. Интернет после установки runtime и моделей не нужен.

Что делает плагин

Плагин остаётся тонким. Он:

Плагин не считает embeddings, не хранит vector index и не вызывает LLM напрямую.

Индексация vault

Когда меняется заметка, плагин с debounce читает файл и отправляет документ в Runtime:

  1. проверка Vault ID, Document ID и revision;
  2. пропуск, если content_hash не изменился;
  3. разбор Markdown и heading-aware chunking;
  4. генерация embeddings через FastEmbed;
  5. атомарный upsert в sqlite-vec + обновление SQLite manifest / FTS.

Операция идемпотентна: повтор с тем же hash не пересчитывает embeddings. Rename сохраняет Document ID, delete чистит chunks и vectors.

Query / RAG pipeline

Ответ на вопрос (Chat)

  1. embedding запроса;
  2. dense search (по умолчанию) по sqlite-vec;
  3. опционально hybrid dense + BM25 (FTS5) через weighted RRF;
  4. опциональный reranker (cross-encoder);
  5. отбор контекста под token budget;
  6. grounded prompt → Ollama → стриминг ответа + источники.

Семантический поиск (Search)

Тот же retrieval-компонент, но без вызова LLM: вы получаете список релевантных фрагментов и можете открыть заметки напрямую.

Режим retrieval задаётся окружением Runtime: PROMETHEUS_RETRIEVAL_MODE=dense|hybrid. Reranker включается отдельно через PROMETHEUS_RERANKER_ENABLED.

Grounding policy

Модели явно указывается опираться только на переданный контекст. Если найденных chunks недостаточно, Runtime возвращает состояние insufficient_context — продукт должен сказать об этом пользователю, а не заполнять пробелы «общими знаниями» модели.

Где лежат данные

Дальше

Описание функционала UI →
Пошаговая установка →