Adapt-a-RAG is an adaptable retrieval augmented application that provides question answering over documents, GitHub repositories, and websites. It takes data, creates synthetic data, and uses that synthetic data to optimize the prompts of the Adapt-a-RAG application. The application recompiles itself every run in a unique and adapted way to the user query.
Adapt-a-RAG is an innovative application that leverages the power of retrieval augmented generation to provide accurate and relevant answers to user queries. By adapting itself to each query, Adapt-a-RAG ensures that the generated responses are tailored to the specific needs of the user.
The application utilizes various data sources, including documents, GitHub repositories, and websites, to gather information and generate synthetic data. This synthetic data is then used to optimize the prompts of the Adapt-a-RAG application, enabling it to provide more accurate and contextually relevant answers.
To set up Adapt-a-RAG, follow these steps:
- Clone the repository:
git clone https://github.com/Josephrp/adapt-a-rag.git
- Install the required dependencies:
pip install -r requirements.txt
-
Configure the necessary API keys and environment variables.
- edit .env.example
-
add your keys and
seed prompts
to a .env file- open a file editor
- add the following text exactly:
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
FIELDPROMPT=
EXAMPLEPROMPT=
DESCRIPTIONPROMPT=
- save the file name :
.env
in the same folder as app.py
-
Add your files the folder
add_your_files_here
; supported formats : ... -
Run the application:
python app.py
Adapt-a-RAG works by following these key steps:
-
Data Collection: The application collects data from various sources, including documents, GitHub repositories, and websites. It utilizes different reader classes such as
CSVReader
,DocxReader
,PDFReader
,ChromaReader
, andSimpleWebPageReader
to extract information from these sources. -
Synthetic Data Generation: Adapt-a-RAG generates synthetic data using the collected data. It employs techniques such as data augmentation and synthesis to create additional training examples that can help improve the performance of the application.
-
Prompt Optimization: The synthetic data is used to optimize the prompts of the Adapt-a-RAG application. By fine-tuning the prompts based on the generated data, the application can generate more accurate and relevant responses to user queries.
-
Recompilation: Adapt-a-RAG recompiles itself every run based on the optimized prompts and the specific user query. This dynamic recompilation allows the application to adapt and provide tailored responses to each query.
-
Question Answering: Once recompiled, Adapt-a-RAG takes the user query and retrieves relevant information from the collected data sources. It then generates a response using the optimized prompts and the retrieved information, providing accurate and contextually relevant answers to the user.
We welcome contributions to Adapt-a-RAG! If you'd like to contribute, please follow these steps:
-
Fork the repository on GitHub.
-
Create a new branch from the
devbranch
:
git checkout -b feature/your-feature-name devbranch
-
Make your changes and commit them with descriptive commit messages.
-
Push your changes to your forked repository:
git push origin feature/your-feature-name
- Open a pull request against the
devbranch
of the main repository.
Please ensure that your contributions adhere to the project's coding conventions and include appropriate tests and documentation.
Adapt-a-RAG is released under the MIT License. See the LICENSE file for more details.