FlexRAG is a flexible and high-performance framework designed for Retrieval-Augmented Generation (RAG) tasks, offering support for multimodal data, seamless configuration management, and out-of-the-box performance for both research and prototyping.
FlexRAG.mp4
- 📖 Table of Contents
- ✨ Key Features
- 📢 News
- 🚀 Getting Started
- 🏗️ Architecture
- 📊 Benchmarks
- 🏷️ License
- ❤️ Acknowledgements
- Multimodal RAG Support: FlexRAG isn't limited to just text-based Retrieval-Augmented Generation (RAG). It also supports multimodal RAG, opening up a wide range of application possibilities across different media types.
- Diverse Data Types: FlexRAG enables seamless integration of multiple data formats, including text (e.g., CSV, JSONL), images, documents, web snapshots, and more, giving you flexibility in working with varied data sources.
- Unified Configuration Management: Leveraging python
dataclass
and hydra-core, FlexRAG simplifies configuration management, making it easier to handle complex setups and customize your workflow. - Out-of-the-Box: With carefully optimized default configurations, FlexRAG delivers solid performance without the need for extensive parameter tuning.
- High Performance: Built with persistent cache system and asynchronous methods to significantly improve speed and reduce latency in RAG workflows.
- Research & Development Friendly: Supports multiple development modes and includes a companion repository, flexrag_examples, to help you reproduce various RAG algorithms with ease.
- Lightweight: Designed with minimal overhead, FlexRAG is efficient and easy to integrate into your project.
- 2025-01-22: A new entrypoint
run_retriever
and four new information retrieval metrics (e.g.,RetrievalMAP
) are now available. Check out the documentation for more details. - 2025-01-08: We provide Windows wheels for FlexRAG. You can install FlexRAG via pip on Windows now.
- 2025-01-08: The benchmark of FlexRAG on Single-hop QA tasks is now available. Check out the benchmarks for more details.
- 2025-01-05: Documentation for FlexRAG is now available. Check out the documentation for more details.
To install FlexRAG via pip:
pip install flexrag
Visit our documentation to learn more.
FlexRAG is designed with a modular architecture, allowing you to easily customize and extend the framework to meet your specific needs. The following diagram illustrates the architecture of FlexRAG:
We have conducted extensive benchmarks using the FlexRAG framework. For more details, please refer to the benchmarks page.
This repository is licensed under the MIT License. See the LICENSE file for details.
This project benefits from the following open-source projects: