Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
16 changes: 12 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-режиме (поиск оформлен
Expand Down