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 a PDF 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 |