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-режиме (поиск оформлен