ParsRAG
Persian Install

Guide

Quality and releases

Every change runs the same checks in the open, and each release is verified before it is published.

On every change

  • Backend: formatting and lint with Ruff, strict type checking with mypy, and pytest with branch coverage of at least 85 percent.
  • Frontend: dependency audit, unit tests, type-checked build, and Playwright browser and app-install tests.
  • Both run on Linux, Windows and macOS.
  • End to end: real parsing, embeddings, Qdrant, reranking and streaming, with a stand-in model. At least 7 of 8 paraphrased Persian questions must cite their own section first.
  • Locally, every backend test runs without skips and without Docker: PARSRAG_E2E=1 runs the end-to-end tests against an in-memory Qdrant unless QDRANT_HOST names a server.
  • Packaging: the Docker image is built and the app imported inside it.

Supply chain

  • Dependency review on pull requests and a Python vulnerability audit.
  • A software bill of materials is generated, and the image is scanned; fixable high or critical findings block the build.
  • Dependabot proposes weekly dependency updates.

Measured improvements in 1.0

  • Keyword plus vector search: mean reciprocal rank 0.748 → 0.823 on 127 keyword-style queries.
  • OCR on Persian pages turned 90 degrees: character error 0.85 → 0.09.
  • OCR overall: mean character error 0.225 → 0.133.

Measured improvements in 1.1

  • Questions with several parts: 5 of the 6 answers that missed a part became complete, with no regressions.
  • Pictures read several at a time: a report with 96 images parsed in 33 s instead of 121 s, with identical text. Indexing the whole report went from about 4.5 minutes to about 3.
  • Screenshot OCR: facts read from 33 to 37 of 40, for about a third more time per image.
  • Thinking models: on a 6 GB GPU with qwen3.5:4b, an empty reply after 59 s became a cited answer in 7 s.

These measurements were made on document sets that aren't published, so they can't be reproduced from the public repository.

Loading…