Skip to content

linagora/openrag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,827 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🦫 OpenRag β€” The Open RAG Experimentation Playground

RAG Architecture

OpenRag is a lightweight, modular and extensible Retrieval-Augmented Generation (RAG) framework designed to explore and test advanced RAG techniques β€” 100% open source and focused on experimentation, not lock-in.

Built by the Linagora, OpenRag offers a sovereign-by-design alternative to mainstream RAG stacks.

Table of Contents

🎯 Goals

  • Experiment with advanced RAG techniques
  • Develop evaluation metrics for RAG applications
  • Collaborate with the community to innovate and push the boundaries of RAG applications

✨ Key Features

πŸ“ Rich File Format Support

OpenRag supports a comprehensive range of file formats for seamless document ingestion:

  • Text Files: txt, md
  • Document Files: pdf, docx, doc, pptx - Advanced PDF parsing with OCR support and Office document processing
  • Audio Files: wav, mp3, mp4, ogg, flv, wma, aac - Audio transcription and content extraction
  • Images: png, jpeg, jpg, svg - Vision Language Model (VLM) powered image captioning and analysis

All files are intelligently converted to Markdown format with images replaced by AI-generated captions, ensuring consistent processing across all document types.

πŸŽ›οΈ Native Web-Based Admin UI

Manage OpenRAG through the bundled web interface.

Admin UI Features
  • Drag-and-drop file upload with batch processing capabilities
  • Real-time indexing progress monitoring and status updates
  • Admin dashboard to monitor RAG components (Indexer, VectorDB, TaskStateManager, etc)
  • Partition management - organize documents into logical collections
  • Visual document preview and metadata inspection
  • Search and filtering capabilities for indexed content

πŸ—‚οΈ Partition-Based Architecture

Organize your knowledge base with flexible partition management:

  • Multi-tenant support - isolate different document collections

πŸ’¬ Interactive Chat UI with Source Attribution

Engage with your documents through our sophisticated chat interface:

Chat UI Features
  • Chainlit-powered UI - modern, responsive chat experience
  • Source transparency - every response includes relevant document references

πŸ”Œ OpenAI API Compatibility

OpenRag API is tailored to be compatible with the OpenAI format (see the openai-compatibility section for more details), enabling seamless integration of your deployed RAG into popular frontends and workflows such as OpenWebUI, LangChain, N8N, and more. This ensures flexibility and ease of adoption without requiring custom adapters.

Summary of features
  • Drop-in replacement for OpenAI API endpoints
  • Compatible with popular frontends like OpenWebUI, LangChain, N8N, and more
  • Authentication support - secure your API with token-based auth

⚑ Distributed Ray Deployment

Scale your RAG pipeline across multiple machines and GPUs.

Distributed Ray Deployment
  • Horizontal scaling - distribute processing across worker nodes
  • GPU acceleration - optimize inference across available hardware
  • Resource management - intelligent allocation of compute resources
  • Monitoring dashboard - real-time cluster health and performance metrics

See the section on distributed deployment in a ray cluster for more details

πŸ” Advanced Retrieval & Reranking

OpenRag Leverages state-of-the-art retrieval techniques for superior accuracy.

Implemented advanced retrieval techniques
  • Hybrid search - combines semantic similarity with BM25 keyword matching
  • Contextual retrieval - Anthropic's technique for enhanced chunk relevance
  • Multilingual reranking - using Alibaba-NLP/gte-multilingual-reranker-base

For more details, see this file

🚧 Coming Soon

  • πŸ“‚ Expanded Format Support: Future updates will introduce compatibility with additional formats such as csv, odt, html, and other widely used open-source document types.
  • πŸ”„ Unified Markdown Conversion: All files will continue to be converted to markdown using a consistent chunker. Format-specific chunkers (e.g., for CSV, HTML) are planned for enhanced processing.
  • πŸ€– Advanced Features: Upcoming releases will include Tool Calling, Agentic RAG, and MCP to elevate your RAG workflows.
  • Enhanced Security: Ensures data encryption both during transit and at rest.

πŸš€ Installation

For comprehensive documentation and troubleshooting guidance, visit our documentation site.

Prerequisites

  • Python 3.12 or higher recommended
  • Docker and Docker Compose
  • For GPU capable machines, ensure you have the NVIDIA Container Toolkit installed. Refer to the NVIDIA documentation for installation instructions.

Installation and Configuration

1. Clone the repository:

git clone --recurse-submodules git@github.com:linagora/openrag.git

cd openrag
git checkout main # or a given release

2. Create a .env File

Create a .env file under infra/compose/, mirroring the structure of infra/compose/.env.example, to configure your environment and supply blank environment variables.

cp infra/compose/.env.example infra/compose/.env

3. File Parser configuration

All supported file format parsers are pre-configured. For PDF processing, PyMuPDFLoader is the default parser β€” a lightweight, fast, CPU-friendly engine well suited to searchable PDFs and quick local testing.

⚠️ Important: PyMuPDFLoader cannot process non-searchable (image-based / scanned) PDFs and does not run OCR or extract embedded images.

For more PDF options

For OCR-scanned documents, complex layouts, tables, or embedded images, switch to MarkerLoader (heavier; runs on GPU and CPU) by setting the PDFLOADER variable: PDFLOADER=MarkerLoader. Other options: DoclingLoader, DotsOCRLoader.

4.Deployment: Launch the app

Important

The admin UI (a web interface for intuitive document ingestion, indexing, and management) ships bundled as the admin-ui service β€” no separate setup is required. Once the stack is up it is served at http://localhost:ADMIN_UI_PORT/app/ (default port 8081).

The full stack and its service configs live under infra/compose/. Place the .env you created there and run the commands from that directory (cd infra/compose):

# GPU deployment (recommended for optimal performance)
docker compose up -d
# docker compose down # to stop the application

# CPU deployment
docker compose --profile cpu up -d
# docker compose --profile cpu down # to stop the application

Note

For development builds, add the --build flag to rebuild images from your working tree, e.g. docker compose up --build -d.

Warning

The first startup may take longer as required dependencies are installed.

Important

For CPU-only deployments, consider these performance optimizations:

  1. Disable the reranker by setting RERANKER_ENABLED=false (reranking is computationally intensive on CPU)
  2. If keeping the reranker enabled (recommended for better RAG accuracy), reduce the number of documents sent for reranking by lowering RETRIEVER_TOP_K to approximately 10

Once the app is up and running, visit http://localhost:APP_PORT or http:X.X.X.X:APP_PORT to access via:

  1. /docs – FastAPI’s full API documentation. See this detailed overview of our api for more details on the endpoints.

  2. /chainlit – Chainlit chat UI to chat with your partitions. To disable it (e.g., for backend-only use), set WITH_CHAINLIT_UI=False.

Note

Chainlit UI has no authentication by default. To enable it, follow the dedicated guide. The same goes for chat data persistancy, enable it with this guide

Authentication Modes

OpenRag supports two authentication modes:

  • Token Mode (AUTH_MODE=token, default): Bearer token authentication via Authorization: Bearer <AUTH_TOKEN> header. Suitable for development and programmatic access.
  • OIDC Mode (AUTH_MODE=oidc): OpenID Connect flow with an external identity provider (Keycloak, LemonLDAP::NG, etc.). Users authenticate via browser redirect to the IdP.

To enable OIDC, set AUTH_MODE=oidc and configure the required OIDC variables (see infra/compose/.env.example for the full list).

For comprehensive OIDC setup and configuration, see the OIDC Authentication Guide (or the SSO Quick Start for a faster path).

  1. http://localhost:ADMIN_UI_PORT/app/ (default 8081) to access the admin UI for easy document ingestion, indexing, and management

5. Distributed deployment in a Ray cluster

To scale OpenRag in a distributed environment using Ray, follow the dedicated guide: ➑ Deploy OpenRag in a Ray cluster

Tests

To run all unit tests:

uv run pytest

Documentation

For comprehensive documentation and troubleshooting guidance, visit our documentation site.

To run the documentation site locally for development:

npm i     # Install dependencies
npm run dev   # Start the development server

And then go to http://localhost:4321/openrag

πŸ”§ Troubleshooting

Troubleshooting

Error on dependencies installation

After running uv sync, if you have this error:

error: Distribution `ray==2.43.0 @ registry+https://pypi.org/simple` can't be installed because it doesn't have a source distribution or wheel for the current platform

hint: You're using CPython 3.13 (`cp313`), but `ray` (v2.43.0) only has wheels with the following Python ABI tag: `cp312`

This means your uv installation relies on cpython 3.13 while you are using python 3.12.

To solve it, please run:

uv venv --python=3.12
uv sync

Error with models' weights downloading

While executing OpenRag, if you encounter a problem that prevents you from downloading the models' weights locally, then you just need to create the needed folder and authorize it to be written and executed

sudo mkdir /app/model_weights
sudo chmod 775 /app/model_weights

🀝 Support and Contributions

We ❀️ your contributions!

We encourage you to contribute to OpenRag! Here's how you can get involved:

  1. Fork this repository.
  2. Create a new branch for your feature or fix.
  3. Submit a pull request for review.

Feel free to ask questions, suggest features, or report bugs via the GitHub Issues page. Your feedback helps us improve!

πŸ“œ License

OpenRag is licensed under the AGPL-3.0. You are free to use, modify, and distribute this software in compliance with the terms of the license.

For more details, refer to the LICENSE file in the repository.

About

An open source, modular, lightweight, and extensible RAG application stack, designed for anyone and everyone.

Resources

License

Stars

227 stars

Watchers

4 watching

Forks

Packages

 
 
 

Contributors