Build a chatbot that answers user questions based only on the content of an uploaded PDF (e.g., product documentation), using a Retrieval-Augmented Generation (RAG) architecture.
Flowise Link→ https://cloud.flowiseai.com/canvas/38088b33-dd1d-4cc9-a222-08377eb32d14
PDF File Upload
↓
Text Splitter (internal to PDF node)
↓
OpenAI Embeddings (e.g., text-embedding-ada-002)
↓
Vector Store (Chroma or Pinecone)
↓
Retriever (returns top-matching chunks)
↓
Conversational Retrieval QA Chain
↙ ↘
ChatOpenAI [System Prompt Template]
↓
Chat Interface
This flow ensures that the chatbot only answers based on your uploaded content, grounded in real data instead of hallucinating.

| Component | Purpose |
|---|---|
| PDF File Node | Loads and extracts text from uploaded document |
| Text Splitter | Breaks document into chunks so the LLM doesn’t exceed context limits |
| OpenAI Embeddings | Converts each chunk into a numerical vector capturing semantic meaning |
| Chroma / Pinecone | Stores the embeddings and enables fast semantic search |
| Retriever | Searches the vector store for the chunks most relevant to the user's query |
| Conversational Retrieval QA Chain | Coordinates retrieval and answer generation, formats prompt, supports memory |
| ChatOpenAI | The actual LLM that forms the human-readable answer |
| Chat Interface | Allows users to ask questions interactively |
Embeddings convert text into vector representations that allow the system to "search by meaning" rather than keywords. When a user asks a question, the system compares the embedding of the query to stored embeddings of document chunks to find the best match.
Both are vector databases: