readora
05.2025A citation-style RAG chat app for PDFs, with a separate vector namespace per file.

A RAG chat app where a user uploads a PDF and asks grounded, citation-style questions about it. The demo takes one file per browser and keeps the conversation in local storage rather than on the server.
architecture
An uploaded PDF is parsed and chunked into 1000-character windows with 200 characters of overlap, embedded with gemini-embedding-001, and indexed into Pinecone under a namespace of its own, so retrieval for one document never reaches another chunks. A query pulls the top-K matches as grounded context and the answer streams back from gemini-2.5-flash. Files live on Vercel Blob with metadata in Neon Postgres through Drizzle ORM.
how i built it
- Indexed each uploaded file into its own Pinecone namespace, so retrieval for one document never reaches another chunks.
- Chunked into 1000-character windows with 200 characters of overlap before embedding.
- Streamed answers from gemini-2.5-flash rather than waiting on the full response.
- Split storage: PDFs on Vercel Blob, metadata in Neon Postgres through Drizzle ORM.
- Added a no-signup demo lane that takes one file per browser and keeps the conversation in local storage.
stack
next.js 15gemini 2.5 flashpineconevercel blobclerkdrizzle ormneon postgresbun