CoolFace
Apppublic

SowmyaKona/Multi_Document_Question_Answering_System_Using_Hybrid_RAG

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
App README

๐Ÿ“š Multi-Document Question Answering System using Hybrid RAG

๐Ÿ“Œ Overview

This project is a Hybrid Retrieval-Augmented Generation (Hybrid RAG) based Question Answering System that enables users to upload multiple PDF documents and ask questions in natural language.

Unlike a traditional Large Language Model (LLM), which relies only on its pre-trained knowledge, this application retrieves the most relevant information from the uploaded documents before generating an answer. This improves response accuracy and reduces hallucinations.


๐Ÿš€ Features

  • โ€”Upload and process multiple PDF documents
  • โ€”Automatic document loading and chunking
  • โ€”Embedding generation and vector indexing
  • โ€”ChromaDB vector database integration
  • โ€”Hybrid Retrieval using:
  • โ€”Dense Retrieval
  • โ€”BM25 Sparse Retrieval
  • โ€”Reciprocal Rank Fusion (RRF)
  • โ€”Cross-Encoder Re-ranking
  • โ€”Gemini API for context-aware answer generation
  • โ€”Retrieval tuning:
  • โ€”Chunk Size
  • โ€”Chunk Overlap
  • โ€”Top-K Retrieval
  • โ€”Search Type (Similarity / MMR)
  • โ€”Retrieval Analysis Dashboard
  • โ€”Source document visualization

๐Ÿ—๏ธ Project Architecture

text
User Uploads PDFs
        โ”‚
        โ–ผ
PyPDFLoader
        โ”‚
        โ–ผ
Text Chunking
        โ”‚
        โ–ผ
Embedding Generation
        โ”‚
        โ–ผ
ChromaDB
        โ”‚
 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”
 โ–ผ             โ–ผ
Dense      BM25 Retrieval
Retrieval
 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
        โ–ผ
Reciprocal Rank Fusion (RRF)
        โ”‚
        โ–ผ
Cross-Encoder Re-ranking
        โ”‚
        โ–ผ
Gemini API
        โ”‚
        โ–ผ
Generated Answer

โš™๏ธ Tech Stack

  • โ€”Python
  • โ€”LangChain
  • โ€”Gemini API
  • โ€”ChromaDB
  • โ€”Embedding Model
  • โ€”PyPDFLoader
  • โ€”RecursiveCharacterTextSplitter
  • โ€”BM25
  • โ€”Reciprocal Rank Fusion (RRF)
  • โ€”Cross-Encoder Re-ranking
  • โ€”Streamlit

๐Ÿ“‚ Project Structure

text
โ”œโ”€โ”€ app.py
โ”œโ”€โ”€ loader.py
โ”œโ”€โ”€ splitter.py
โ”œโ”€โ”€ embeddings.py
โ”œโ”€โ”€ vector_store.py
โ”œโ”€โ”€ retriever.py
โ”œโ”€โ”€ hybrid_retriever.py
โ”œโ”€โ”€ reranker.py
โ”œโ”€โ”€ rag_chain.py
โ”œโ”€โ”€ llm.py
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ assets/
โ”œโ”€โ”€ data/
โ””โ”€โ”€ chroma_db/

๐Ÿ”„ Workflow

  1. 1.Upload one or more PDF documents.
  2. 2.Documents are loaded using PyPDFLoader.
  3. 3.Documents are split into smaller chunks.
  4. 4.Each chunk is converted into embeddings.
  5. 5.Embeddings are stored in ChromaDB.
  6. 6.User submits a question.
  7. 7.The query is converted into an embedding.
  8. 8.Hybrid Retrieval is performed using:
  • โ€”Dense Retrieval
  • โ€”BM25 Sparse Retrieval
  • โ€”Results are combined using Reciprocal Rank Fusion (RRF).
  • โ€”Retrieved chunks are re-ranked using a Cross-Encoder.
  • โ€”The highest-ranked chunks are provided to the Gemini API.
  • โ€”Gemini generates a context-aware answer.

๐ŸŽฏ Retrieval Tuning

The application supports configurable retrieval parameters:

  • โ€”Chunk Size
  • โ€”Chunk Overlap
  • โ€”Top-K Retrieval
  • โ€”Search Type (Similarity / MMR)

These parameters help optimize retrieval quality for different document collections.


๐Ÿ“Š Retrieval Analysis

The application provides a Retrieval Analysis dashboard displaying:

  • โ€”Number of Dense Retrieval results
  • โ€”Number of BM25 Retrieval results
  • โ€”Number of RRF fused results
  • โ€”Final re-ranked chunks
  • โ€”Retrieved document chunks
  • โ€”Source document references

โ–ถ๏ธ Installation

Clone the repository:

bash
git clone https://github.com/<your-username>/multi-document-hybrid-rag-qa-system.git

Navigate to the project folder:

bash
cd multi-document-hybrid-rag-qa-system

Install dependencies:

bash
pip install -r requirements.txt

Create a .env file:

env
GOOGLE_API_KEY=YOUR_API_KEY

Run the application:

bash
streamlit run app.py

๐Ÿ“ธ Application

The application allows users to:

  • โ€”Upload multiple PDF documents
  • โ€”Ask questions in natural language
  • โ€”View retrieved chunks
  • โ€”Analyze retrieval results
  • โ€”View retrieved source documents

๐Ÿš€ Future Improvements

  • โ€”RAGAS Evaluation Integration
  • โ€”Metadata Filtering
  • โ€”Agentic RAG using LangGraph

Sowmya Kona