Project Overview
Objective
Built PDF upload and natural language QA system with retrieval-augmented generation.
Stack
FastAPIReactPyPDFLoaderRecursiveCharacterTextSplitterHuggingFaceEmbeddingsFAISSGPT-4o-miniGPT-4.1GPT-5
Delivery highlights
- Developed a document QA workflow where users upload PDF files and ask questions in natural language. Processed documents with PyPDFLoader and RecursiveCharacterTextSplitter, generated semantic embeddings with HuggingFaceEmbeddings (BAAI/bge-m3), and stored them in FAISS for similarity retrieval. Provided retrieved chunks as grounded context to selectable LLMs (GPT-4o-mini, GPT-4.1, GPT-5) through a FastAPI and React interface. Later prototyped a Typhoon OCR ingestion path for scanned PDFs as an evolution of the same system rather than a separate portfolio project.
Link DemoBack to Topic ProjectsBack to All ProjectsSystem workflow
How document RAG question answering works
PDF content is chunked and indexed once; each question retrieves the most relevant passages before the LLM writes a source-grounded answer.Rendering workflow diagram…
Scroll horizontally to explore the full workflow on smaller screens.
System workflow
PDF processing and indexing pipeline
PDFs are extracted, split into chunks, and embedded into a searchable FAISS vector index for semantic retrieval.Rendering workflow diagram…
Scroll horizontally to explore the full workflow on smaller screens.
System workflow
Semantic retrieval and grounded generation
Questions are embedded and matched against document chunks; retrieved context grounds the LLM answer with source citations.Rendering workflow diagram…
Scroll horizontally to explore the full workflow on smaller screens.
System workflow
Source-reviewed processing sequence
A conservative end-to-end boundary taken from the source audit. Specific endpoints, storage writes, and external calls are only claimed in the project-specific diagrams when the implementation confirms them.Rendering workflow diagram…
Scroll horizontally to explore the full workflow on smaller screens.