Skip to content
CAI
Software that uses CAICheck a score

HKUDS/RAG-Anything

68.1

Adequate · 19 September 2026

32.3k

lines of production code

Python

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

RAGAnything is a Python library for building Retrieval-Augmented Generation systems that supports multimodal document processing, including text, images, tables, audio, and video. It provides a modular architecture with batch processing capabilities, event-driven callbacks, and integration with local and cloud LLMs for embedding and generation. The system facilitates document ingestion, knowledge base insertion, and query execution, while offering tools for evaluation, offline tokenization, and media asset management.

Features

Added reproduce directory with RAGAnything integration examples and evaluation tools

The new \reproduce\ directory provides example scripts and configuration files to demonstrate integrating MinerU parsing with RAGAnything. It includes \index.py\ and \query.py\ for processing documents and performing text or multimodal queries, an \env.example\ file for configuring LLM, embedding, and reranking bindings, and \llm\_answer\_evaluator.py\ for assessing RAG output accuracy and quality.

reproduce · high confidence

Added script to cache tiktoken models for offline use

A new script, create\_tiktoken\_cache.py, has been added to the scripts directory. This utility downloads and caches the 'cl100k\_base' tiktoken encoding model into a local directory (defaulting to ./tiktoken\_cache), enabling the application to function without network access by pre-loading required tokenization resources.

scripts · high confidence

New and updated example scripts for batch processing, multimodal insertion, and local LLM integrations

The examples directory now includes several new demonstration scripts: batch\_dry\_run\_example.py and batch\_processing\_example.py show how to use the BatchParser for scanning and processing multiple documents in parallel; insert\_content\_list\_example.py demonstrates direct insertion of structured content (text, images, tables, equations) into the knowledge base; modalprocessors\_example.py illustrates using image, table, and equation processors directly; image\_format\_test.py and office\_document\_test.py provide testing scripts for image and Office document parsing via MinerU (with LibreOffice checks); enhanced\_markdown\_example.py covers markdown-to-PDF conversion with WeasyPrint and Pandoc backends. Additionally, integration examples for LM Studio, MiniMax, and Ollama have been added or updated, showing how to configure local and cloud LLM/embedding endpoints, handle model discovery failures, and manage API keys via environment variables.

examples · high confidence

RAGAnything v1.4.1 introduces modular architecture with batch processing, callbacks, and multimodal support

RAGAnything has been restructured into a modular package (v1.4.1) that adds significant new capabilities while maintaining backward compatibility. Users can now process multiple documents in parallel using the new \BatchMixin\ and \BatchParser\ classes, which support progress tracking, timeouts, and dry-run modes. A new event-driven callback system (\ProcessingCallback\, \CallbackManager\) allows users to hook into parsing, insertion, and query stages for monitoring and custom logic. The library now supports audio and video modal processing via optional \AudioModalProcessor\ and \VideoModalProcessor\ classes (requiring \faster-whisper\ and \scenedetect\ respectively). Configuration is centralized in \RAGAnythingConfig\ with environment variable support, and the package exposes a public media URL mapping system (\asset\_urls.py\) for serving local assets via CDN. The core \Parser\ class and resilience utilities (retry, circuit breaker) are also exposed, with optional features like custom parser registration and multilingual prompt management available when installed.

raganything · high confidence

Test coverage

Added test coverage for public media URL mapping, audio processing, callbacks, and core modules

This change adds a suite of new tests to the \tests/\ directory. It introduces \test\_asset\_urls.py\ to verify the public URL mapping logic for local media paths, including environment variable handling and special character encoding. New tests for the audio modal processor (\test\_audio\_processor.py\) cover file detection, initialization, and transcription formatting. The callback system is tested (\test\_callbacks.py\) to ensure event dispatching, metrics collection, and error handling work correctly. Additionally, core module tests (\test\_core\_modules.py\) validate configuration defaults, content separation, and image encoding, while other new tests cover Chinese CID font registration, event loop closure, content list alias handling, custom parser plugins, document status creation, and force multimodal reprocessing.

tests · high confidence

Dependencies

Introduce pyproject.toml and pin dependency versions

The project now uses pyproject.toml as the primary build configuration, defining the package name 'raganything' and its core dependencies: huggingface\_hub, lightrag-hku (pinned below 1.5), mineru\[core\] (pinned to \>=3.4.1), and tqdm. This change also introduces optional dependency groups for image, text, office, paddleocr, markdown, audio, video, and all features, alongside dev dependencies for testing and linting. The requirements.txt file is updated to reflect these core dependencies and includes comments explaining the mineru version constraint to avoid compatibility issues with pdftext.

(dependencies) · high confidence

Housekeeping

Initial project scaffolding and documentation

The repository has been initialized with the core project structure, including the Python package definition in setup.py, environment configuration in env.example, and comprehensive English and Chinese documentation in README.md and README\_zh.md. This initial commit also establishes development standards and build integrity through .gitignore, .pre-commit-config.yaml, MANIFEST.in, and a SECURITY.md policy.

(repo-wide) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 68.

Lenses

  • Code Health 79
  • Architecture 100
  • Maturity 64
  • Readiness 62
  • Security 82

Changes since last survey

  • 300 commits — 163 feature/other, 137 fixes

By area

  • (repo) — 79 commits
  • (root) — 56 commits
  • raganything/parser.py — 41 commits
  • raganything/processor.py — 24 commits
  • raganything/init.py — 14 commits
  • raganything/batch.py — 9 commits
  • raganything/modalprocessors.py — 7 commits
  • raganything/query.py — 7 commits
  • raganything/resilience.py — 7 commits
  • .github/workflows — 4 commits
  • raganything/batch_parser.py — 4 commits
  • raganything/config.py — 4 commits
  • docs/batch_processing.md — 3 commits
  • examples/minimax_integration_example.py — 3 commits
  • examples/raganything_example.py — 3 commits
  • tests/test_core_modules.py — 3 commits
  • docs/offline_setup.md — 2 commits
  • examples/image_format_test.py — 2 commits
  • examples/insert_content_list_example.py — 2 commits
  • examples/lmstudio_integration_example.py — 2 commits

Notable commits

  • fix: Fix MinerU Windows unsafe paths
  • fix: Fix content-list duplicate status registration
  • fix: Fix lint after PR merges
  • fix: Fix potential path traversal and local file read vulnerabilities
  • fix: Fix: harden path traversal guards and support extra safe directories
  • fix: Format content-list regression test
  • fix: Implement MinerU hybrid-auto-engine compatibility fix
  • fix: Merge branch 'copilot/fix-mineru-compatibility-issue' into copilot/fix-change-requirements
  • fix: Merge main into MinerU timeout fix
  • fix: Merge pull request #106 from liz-in-tech/fix-cleanup-warning
  • fix: Merge pull request #142 from yrangana/fix/status-case-mismatch-enum
  • fix: Merge pull request #162 from didier-durand/fix-typos-1
  • fix: Merge pull request #182 from majiayu000/fix/inherit-model-funcs-from-lightrag
  • fix: Merge pull request #197 from RinZ27/fix/path-traversal-vulnerabilities
  • fix: Merge pull request #198 from wkpark/fix-docling-cmd
  • fix: Merge pull request #2 from hanlianlu/copilot/fix-mineru-compatibility-issue
  • fix: Merge pull request #202 from sotastack/fix/mineru-2-field-names
  • fix: Merge pull request #203 from sotastack/fix/same-name-file-collision
  • fix: Merge pull request #223 from syshin0116/fix/embedding-double-wrapping
  • fix: Merge pull request #226 from Exploreunive/fix/chinese-cid-font-24
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

HKUDS/RAG-Anything was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1f73f0154c48b3d616674608af98748585b856f3 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.