Important
We're migrating fastRAG
to Haystack v2.0 API and will release a major update soon. Stay tuned!
![](https://github.com/bianzheng123/fastRAG/raw/main/assets/fastrag_header.png)
📍 Installation • 🚀 Components • 📚 Examples • 🚗 Getting Started • 💊 Demos • ✏️ Scripts • 📊 Benchmarks
fastRAG is a research framework for efficient and optimized retrieval augmented generative pipelines, incorporating state-of-the-art LLMs and Information Retrieval. fastRAG is designed to empower researchers and developers with a comprehensive tool-set for advancing retrieval augmented generation.
Comments, suggestions, issues and pull-requests are welcomed! ❤️
- 2024-04: (Extra Demo) Chat with your documents on Intel Meteor Lake iGPU.
- 2023-12: Gaudi2, ONNX runtime and LlamaCPP support; Optimized Embedding models; Multi-modality and Chat demos; REPLUG text generation.
- 2023-06: ColBERT index modification: adding/removing documents; see IndexUpdater.
- 2023-05: RAG with LLM and dynamic prompt synthesis example.
- 2023-04: Qdrant
DocumentStore
support.
- Optimized RAG: Build RAG pipelines with SOTA efficient components for greater compute efficiency.
- Optimized for Intel Hardware: Leverage Intel extensions for PyTorch (IPEX), 🤗 Optimum Intel and 🤗 Optimum-Habana for running as optimal as possible on Intel® Xeon® Processors and Intel® Gaudi® AI accelerators.
- Customizable: fastRAG is built using Haystack and HuggingFace. All of fastRAG's components are 100% Haystack compatible.
For a brief overview of the various unique components in fastRAG refer to the Components Overview page.
LLM Backends | |
Intel Gaudi Accelerators | Running LLMs on Gaudi 2 |
ONNX Runtime | Running LLMs with optimized ONNX-runtime |
Llama-CPP | Running RAG Pipelines with LLMs on a Llama CPP backend |
Optimized Components | |
Embedders | Optimized int8 bi-encoders |
Rankers | Optimized/sparse cross-encoders |
RAG-efficient Components | |
ColBERT | Token-based late interaction |
Fusion-in-Decoder (FiD) | Generative multi-document encoder-decoder |
REPLUG | Improved multi-document decoder |
PLAID | Incredibly efficient indexing engine |
Preliminary requirements:
- Python 3.8 or higher.
- PyTorch 2.0 or higher.
To set up the software, clone the project and run the following, preferably in a newly created virtual environment:
pip install .
There are several dependencies to consider, depending on your specific usage:
# Additional engines/components
pip install .[intel] # Intel optimized backend [Optimum-intel, IPEX]
pip install .[elastic] # Support for ElasticSearch store
pip install .[qdrant] # Support for Qdrant store
pip install .[colbert] # Support for ColBERT+PLAID; requires FAISS
pip install .[faiss-cpu] # CPU-based Faiss library
pip install .[faiss-gpu] # GPU-based Faiss library
pip install .[knowledge_graph] # Libraries for working with spacy and KG
# User interface (for demos)
pip install .[ui]
# Benchmarking
pip install .[benchmark]
# Development tools
pip install .[dev]
The code is licensed under the Apache 2.0 License.
This is not an official Intel product.