From efccbc554c8acfe72380a92753055ee7c18b8073 Mon Sep 17 00:00:00 2001 From: Denis Drobyshev Date: Thu, 27 Aug 2026 14:18:31 +0300 Subject: [PATCH] Describe the stack that runs, not the one that is planned Two claims in the stack paragraph name components that are not there. Postgres with pgvector. psycopg and the pgvector package are declared in the api extra and imported nowhere; src/praxis/index/ is a lone schema.sql; and docker-compose starts a db service the app does not depend on and never connects to. Dense retrieval runs on numpy in memory with a disk cache and a pure standard-library fallback, which is what the offline image actually uses. GigaChat and YandexGPT as providers for data-residency scenarios. The llm package contains anthropic_client.py, mock.py and the base contract. Neither Russian provider is implemented, and no environment variable for either exists in the source. The second is the more consequential of the two. Data residency is a compliance argument, and someone evaluating this for a Russian client reads that sentence as a capability they can turn on. Both are now described as designed or next, with the file that proves the state named in each case. The website carried the same Postgres claim in stronger form and was corrected in DrobyshevDev.github.io#14. Context and the options for closing the gap: #26. --- README.en.md | 16 ++++++++++++---- README.md | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/README.en.md b/README.en.md index 3a3326b..c99ccb8 100644 --- a/README.en.md +++ b/README.en.md @@ -184,10 +184,18 @@ How to run it — [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md). ## Stack and ecosystem -Python 3.12, FastAPI, Postgres with pgvector, Docker. Retrieval: BM25 and BGE-M3 dense -embeddings, bge-reranker-v2-m3 as the reranker. Citation checking: NLI on GPU. The LLM is -plugged in through a provider: Claude for synthesis, Russian providers (GigaChat, -YandexGPT) for scenarios with data-residency requirements. +Python 3.12, FastAPI, Docker. Retrieval: BM25 and BGE-M3 dense embeddings, +bge-reranker-v2-m3 as the reranker. Citation checking: NLI on GPU. + +The dense index is held in memory and cached to disk (`PRAXIS_CACHE_DIR`), with a pure +standard-library fallback — which is why the offline image and CI run without numpy at +all. A Postgres index with pgvector is designed and not wired: +`src/praxis/index/schema.sql` is in the repository, a retriever for it is not. + +The LLM is plugged in through a provider. Claude for synthesis and a deterministic mock +for tests are implemented; the provider contract is `src/praxis/llm/base.py`. Russian +providers (GigaChat, YandexGPT) for data-residency scenarios are the next step, not +something that can be switched on today. The project uses two libraries from the same organisation: [glia](https://github.com/DrobyshevDev/glia) for the agent loop in LLM mode (search is diff --git a/README.md b/README.md index 5cdbec8..7c70b8f 100644 --- a/README.md +++ b/README.md @@ -179,10 +179,18 @@ recall@5 0.92, MRR 0.94, hit-rate 1.0, уверенность 0.80. Офлайн ## Стек и экосистема -Python 3.12, FastAPI, Postgres с pgvector, Docker. Поиск: BM25 и плотные эмбеддинги -BGE-M3, реранкер bge-reranker-v2-m3. Проверка цитат: NLI на GPU. LLM подключается через -провайдера: Claude для синтеза, RU-провайдеры (GigaChat, YandexGPT) для сценариев с -требованием резидентности. +Python 3.12, FastAPI, Docker. Поиск: BM25 и плотные эмбеддинги BGE-M3, реранкер +bge-reranker-v2-m3. Проверка цитат: NLI на GPU. + +Плотный индекс держится в памяти и кэшируется на диск (`PRAXIS_CACHE_DIR`), с запасным +путём на чистой стандартной библиотеке — поэтому офлайн-образ и CI работают вообще без +numpy. Индекс на Postgres с pgvector спроектирован, но не подключён: +`src/praxis/index/schema.sql` в репозитории есть, ретривера к нему нет. + +LLM подключается через провайдера. Реализованы Claude для синтеза и детерминированный +mock для тестов; контракт провайдера — в `src/praxis/llm/base.py`. RU-провайдеры +(GigaChat, YandexGPT) для сценариев с требованием резидентности — следующий шаг, а не +то, что можно включить сегодня. Проект использует две библиотеки той же организации: [glia](https://github.com/DrobyshevDev/glia) — агентный цикл в LLM-режиме (поиск оформлен