Skip to content

Releases: FengZhenfei/carrel

Carrel 0.2.0

Choose a tag to compare

@FengZhenfei FengZhenfei released this 04 Oct 15:21

The search service gains read-only endpoints for listing what the knowledge base and its graph hold, the first search now carries graph leads, and the carrel-search skill answers from one search, lists the reference files and offers numbered follow-ups.

v0.1.1: Ops: ordered model start, nightly state backup, dependency lock files

Choose a tag to compare

@FengZhenfei FengZhenfei released this 30 Sep 06:43
Model servers. Started together, the vLLM processes profile the free GPU
memory while the others are still loading or freeing theirs, fail the
memory check and restart until Docker's backoff happens to separate them:
on a unified-memory machine one to eight restarts per server and about a
quarter of an hour until all were up, at every boot. The five local-models
services now start in a queue: each entrypoint waits for the previous
server's /health before it loads its model (embedding, reranker,
vl-embedding, vl-reranker, vlm), with depends_on for `docker compose up`
and the wait inside the container for Docker restoring the containers at
boot. The parser is outside the profile, so it waits through
MINERU_WAIT_FOR_URL, which deploy.sh sets together with the profile. The
explicit entrypoint also runs each service's `vllm serve` command as
written under the vllm/vllm-openai image, whose own entrypoint is
`vllm serve`; the NVIDIA image's entrypoint is kept. The health-check
grace period covers the whole queue. Measured on a DGX Spark with the same
chain: the five servers healthy in order after 2.7, 4.6, 6.5, 8.6 and 12.2
minutes, the parser after 14.5, no restarts.

Backup. The nightly round first copies what cannot be regenerated into
backups/state/<stamp>/: an online snapshot of the state database (library
configuration, model registry, extraction and fact caches), the pipeline
env, deployment/*/.env and the evaluation sets; directory 700, files 600,
newest KB_BACKUP_KEEP (7) kept. Vectors, indexes, graphs and the parse
cache are rebuilt from the mirror and are left out. Needs no service, runs
before the Qdrant wait, and a failure is not a maintenance failure. New
`kb cleanup backup`.

Dependencies. pyproject keeps ranges, with upper bounds for libraries that
have had breaking major releases; app/requirements.lock is the installed
closure of the declared dependencies plus pytest (54 packages) that the
suite was run against, and deploy.sh installs from it. The optional
pdf-images extra (PyMuPDF, AGPL) is pinned separately in
requirements-pdf-images.lock and installed only with --with-pdf-images.
scripts/kb-lock-deps.py regenerates the lock from a tested environment; a
test checks that every declared dependency is pinned inside its range and
that the extra stays out of the main lock.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Carrel 0.1.0

Choose a tag to compare

@FengZhenfei FengZhenfei released this 28 Sep 15:21

First public release, see the README