All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Streaming support for the Open WebUI integration.
- Support for some configuration directly in the Open WebUI frontend, using valves.
- Now allows strings as input in all path arguments.
- Added upper bound to number of documents to retrieve in
BM25Retriever
. - Now correctly uses the Hugging Face Hub for the
GGUFGenerator
. - Previously the
GGUFGenerator
had a hardcoded upper limit of input tokens of 512 - this has not been set via themax_input_tokens
argument.
- Added a new
RaggerPipeline
class which allows easier integration with Open WebUI.
- There was an error where a class was imported during initialisation but it requiring an extra. This has now been resolved.
- Added a new abstract
Retriever
class, generalising theEmbedder
+EmbeddingStore
combination, and allowing for more flexible retriever implementations. The embedder and embedding stores can still be used, via theEmbeddingRetriever
retriever. - Added new
BM25Retriever
, which uses the BM25 algorithm to retrieve documents. Note that this currently operates in-memory. - Added hybrid search through the new
HybridRetriever
retriever, which can combine an arbitrary number of retrievers to search for documents. This currently uses the reciprocal rank fusion method, but it is designed to be extensible to other fusion methods.
- The
RagSystem
class now only takes aDocumentStore
,Retriever
andGenerator
instance, where theRetriever
has replaced the previousEmbedder
andEmbeddingStore
combination. This allows for more flexible retriever implementations.
- Error related to
torch
import when no extras are installed.
- Now supports GGUF models for generators. This can be added with the new
GGUFGenerator
class, which works for any GGUF model on the Hugging Face Hub. - Now uses structured generation with OpenAI models, which improves the quality of the generated text a tiny bit.
- Updated the minimum bounds on the following dependencies:
pydantic
from2.8.2
to2.9.2
tiktoken
from0.7.0
to0.8.0
openai
from1.23.2
to1.52.2
vllm
from0.5.4
to0.5.5
torch
from2.3.0
to2.4.0
psycopg2-binary
from2.9.9
to2.9.10
sentence-transformers
from2.7.0
to3.2.1
gradio
from4.27.0
to5.4.0
- Removed all upper bounds from dependencies, to future-proof the package.
- Changed
poetry
dependency backend touv
. - Replaced
e5
andvllm
extras withonprem_cpu
andonprem_gpu
extras, for when you want to run the RAG system on-premises with a CPU or GPU, respectively.
- Added new
e5
andcpu
extras, wheree5
installs thesentence-transformers
dependency required for theE5Embedder
, and you can addcpu
to install the CPU-version oftorch
to save disk space (note that this is not available on MacOS, however). - Added new
from_config
class methods toRagSystem
andDemo
to create instances from a configuration file (YAML or JSON). See the readme for more information. - Added new
ragger-demo
andragger-compile
command line interfaces to run the demo and compile the RAG system, respectively. Compilation is useful in cases where you want to ensure that all components have everything downloaded and installed before use. Both of these take a single--config-file
argument to specify a configuration file. See the readme for more information. - Add
host
andport
toDemo
, which is used when the demo is launched.
- Changed default embedder in
RagSystem
toOpenAIEmbedder
fromE5Embedder
.
- Raise
ImportError
when initialisingOpenAIEmbedder
without theopenai
package installed.
- Added an
OpenAIEmbedder
that uses the OpenAI Embeddings API to embed documents.
- Fixed a bug in
NumpyEmbeddingStore
when there were fewer thannum_docs
embeddings in the store, causing an error when trying to retrieve embeddings. - When calling
PostgresEmbeddingStore.clear()
orPostgresEmbeddingStore.remove()
when theembedding_dim
attribute wasn't set, it wouldn't clear/remove the store. This has been fixed. - The
RagSystem.format_answer
now uses HTML<br>
tags to separate newlines, to make it fully compatible to wrap in an HTML rendering context. RagSystem.add_documents
now returns itself.
- Added a
SqliteDocumentStore
that uses a SQLite database to store documents. - Added a
PostgresDocumentStore
that uses a PostgreSQL database to store documents. - Added a
TxtDocumentStore
that reads documents from a single text file, separated by newlines. - Added a
PostgresEmbeddingStore
that uses a PostgreSQL database to store embeddings, using thepgvector
extension.
- Added defaults to all arguments in each component's constructor, so that the user can create a component without specifying any arguments. This also allows for uniform testing of all components.
- Initial release, with the document store
JsonlDocumentStore
, the embedderE5Embedder
, the embedding storeNumpyEmbeddingStore
and the generatorOpenAIGenerator
. Also features aRagSystem
class that combines all of these components into a single RAG system, and aDemo
class that provides a simple interface to interact with the RAG system.