Spaces:
Runtime error
Runtime error
title: RAG Based PDF Query System | |
emoji: π | |
colorFrom: purple | |
colorTo: red | |
sdk: streamlit | |
sdk_version: 1.36.0 | |
app_file: app.py | |
pinned: true | |
license: mit | |
short_description: Upload PDFs and ask question about it | |
# RAG-based PDF Query System | |
This project implements a Retrieval-Augmented Generation (RAG) system that allows users to upload multiple PDF files, extract and preprocess the text, and then query the contents of those PDFs using OpenAI's GPT-3.5-turbo model. The system combines the strengths of information retrieval and text generation to provide accurate and context-aware responses to user queries. | |
## Description | |
The RAG-based PDF Query System is designed to: | |
1. **Extract Text from PDFs:** Utilize `pdfplumber` to accurately extract text from multiple PDF files. | |
2. **Preprocess Text:** Clean and tokenize the extracted text for better processing. | |
3. **Create a Knowledge Base:** Use TF-IDF vectorization to create a searchable knowledge base from the extracted text. | |
4. **Retrieve Relevant Texts:** Retrieve the most relevant texts based on the user query using cosine similarity. | |
5. **Generate Responses:** Use OpenAI's GPT-3.5-turbo model to generate responses based on the retrieved texts and user query. | |
### Key Components and Technologies Used | |
- **Streamlit:** For building an interactive web application. | |
- **pdfplumber:** For extracting text from PDF files. | |
- **NLTK:** For text preprocessing tasks such as tokenization. | |
- **Scikit-learn:** For TF-IDF vectorization and text retrieval. | |
- **OpenAI GPT-3.5-turbo:** For generating context-aware responses to user queries. | |
### Why This Project? | |
- **Combining Retrieval and Generation:** The project combines information retrieval with advanced text generation, providing users with accurate and context-aware responses. | |
- **Interactive Interface:** Streamlit offers an easy-to-use interface for uploading PDFs and querying their contents. | |
- **Advanced Text Extraction:** `pdfplumber` ensures accurate extraction of text from PDFs, even from complex layouts. | |
- **State-of-the-art Language Model:** OpenAI's GPT-3.5-turbo is one of the most advanced language models, ensuring high-quality responses. | |
## How to Run | |
### Prerequisites | |
- Python 3.7 or higher | |
- OpenAI API Key (you can get it from the [OpenAI website](https://beta.openai.com/signup/)) | |
### Installation | |
1. **Clone the repository:** | |
```bash | |
git clone https://github.com/your-username/rag-pdf-query-system.git | |
cd rag-pdf-query-system | |
``` | |
2. **Create a virtual environment and activate it:** | |
```bash | |
python -m venv env | |
source env/bin/activate # On Windows use `env\Scripts\activate` | |
``` | |
3. **Install the required packages:** | |
```bash | |
pip install -r requirements.txt | |
``` | |
4. **Download NLTK data:** | |
```python | |
import nltk | |
nltk.download('punkt') | |
``` | |
5. **Create a `.env` file in the project root directory:** | |
```text | |
OPENAI_API_KEY=your_openai_api_key_here | |
``` | |
### Running the Application | |
1. **Run the Streamlit application:** | |
```bash | |
streamlit run app.py | |
``` | |
2. **Use the Application:** | |
- Open the URL provided by Streamlit (usually `http://localhost:8501`) in your web browser. | |
- Upload one or more PDF files. | |
- Enter your query in the input box. | |
- View the generated response based on the contents of the uploaded PDFs. | |
### Notes | |
- The progress bar in the Streamlit application provides real-time feedback during the PDF processing stages. | |
- Ensure you have a stable internet connection to interact with the OpenAI API for generating responses. | |
This project demonstrates the integration of various tools and libraries to create a powerful and interactive query system for PDF documents. | |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference |