A Retrieval Augmented Generation (RAG) system made with LangChain in the spirit of the Enterprise RAG Competition. In this setting, a number of annual reports of real-world companies are provided in the form of complex PDFs containing text, tables and images, up to 1,500 pages in length. Uses Docling for PDF content + metadata extraction and hierarchical, tokenization-aware chunking of text, with separate handling of tables. Images are base64 encoded then summarized using a multimodal LLM such as Gemma 3. Implements hybrid search + reranking using BM25 and FAISS as well as multi-querying to facilitate better retrieval. The system is fully local, with LLMs served using Ollama.
To run: add a query in main.py. To do: add a frontend