A Streamlit + LangChain + Gemini powered chatbot that lets you upload multiple PDFs and chat with them. The app extracts text, creates embeddings, stores them locally using FAISS, and answers your questions using RAG.
- Upload multiple PDFs
- Chat with content using RAG
- Gemini 2.5 Flash for responses
- FAISS for fast vector search
- Automatic PDF hashing to avoid duplicate processing
- Local persistent vector store (
multi_pdf_store/) - Clean Streamlit UI with chat history & reset options
- Streamlit
- LangChain
- Google Gemini
- FAISS
- PyPDFLoader
- RecursiveCharacterTextSplitter
pip install -r requirements.txtstreamlit run app.pyEnter your Gemini API key in the sidebar or place it in .env as:
GOOGLE_API_KEY=your_key
- PDFs → text extraction
- Text → chunking
- Chunk → embeddings (Gemini)
- Stored in FAISS
- RAG pipeline retrieves best chunks and generates an answer
- Clear Chat
- Reset All: removes chat, processed file hashes, and FAISS store
