Document Q&A System with OpenAI GPT, Pinecone Vector DB & Google Drive Integration

Go to Workflow
6 views
Built by Mohan Gopal Mohan Gopal
Created on June 06, 2026

Description

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

๐Ÿค– AI-Powered Document QA System using Webhook, Pinecone + OpenAI + n8n

This project demonstrates how to build a Retrieval-Augmented Generation (RAG) system using n8n, and create a simple Question Answer system using Webhook to connect with User Interface (created using Lovable):

๐Ÿงพ Downloads the pdf file format documents from Google Drive (contract document, user manual, HR policy document etc...)

๐Ÿ“š Converts them into vector embeddings using OpenAI

๐Ÿ” Stores and searches them in Pinecone Vector DB

๐Ÿ’ฌ Allows natural language querying of contracts using AI Agents

๐Ÿ“‚ Flow 1: Document Loading & RAG Setup
This flow automates:

Reading documents from a Google Drive folder

Vectorizing using text-embedding-3-small

Uploading vectors into Pinecone for later semantic search

๐Ÿงฑ Workflow Structure
A [Manual Trigger] --> B[Google Drive Search]
B --> C[Google Drive Download]
C --> D[Pinecone Vector Store]
D --> E[Default Data Loader]
E --> F[Recursive Character Text Splitter]
E --> G[OpenAI Embedding]

๐Ÿชœ Steps
Manual Trigger: Kickstarts the workflow on demand for loading new documents.

Google Drive Search & Download

Node: Google Drive (Search: file/folder)

Downloads PDF documents

Apply Recursive Text Splitter: Breaks long documents into overlapping chunks
Settings:
Chunk Size: 1000
Chunk Overlap: 100

OpenAI Embedding
Model: text-embedding-3-small
Used for creating document vectors

Pinecone Vector Store
Host: url
Index: index
Batch Size: 200

Pinecone Settings:
Type: Dense
Region: us-east-1
Mode: Insert Documents

๐Ÿ’ฌ Flow 2: Chat-Based Q&A Agent
This flow enables chat-style querying of stored documents using OpenAI-powered agents with vector memory.

๐Ÿงฑ Workflow Diagram

A[Webhook (chat message)] --> B[AI Agent]
B --> C[OpenAI Chat Model]
B --> D[Simple Memory]
B --> E[Answer with Vector Store]
E --> F[Pinecone Vector Store]
F --> G[Embeddings OpenAI]

๐Ÿชœ Components
Chat (Trigger): Receives incoming chat queries

AI Agent Node

Handles query flow using:

Chat Model: OpenAI GPT

Memory: Simple Memory

Tool: Question Answer with Vector Store

Pinecone Vector Store: Connected via same embedding index as Flow 1

Embeddings: Ensures document chunks are retrievable using vector similarity

Response Node: Returns final AI response to user via webhook

๐ŸŒ Flow 3: UI-Based Query with Lovable
This flow uses a web UI built using Lovable to query contracts directly from a form interface.

๐Ÿ“ฅ Webhook Setup for Lovable
Webhook Node

Method: POST
URL:url
Response: Using 'Respond to Webhook' Node

๐Ÿงฑ Workflow Logic
A[Webhook (Lovable Form)] --> B[AI Agent]
B --> C[OpenAI Chat Model]
B --> D[Simple Memory]
B --> E[Answer with Vector Store]
E --> F[Pinecone Vector Store]
F --> G[Embeddings OpenAI]
B --> H[Respond to Webhook]

๐Ÿ’ก Lovable UI
Users can submit:

Full Name
Email
Department
Freeform Query: User can enter any freeform query.

Data is sent via webhook to n8n and responded with the answer from contract content.

๐Ÿ” Use Cases
Contract Querying for Legal/HR teams

Procurement & Vendor Agreement QA

Customer Support Automation (based on terms)

RAG Systems for private document knowledge

โš™๏ธ Tools & Tech Stack


๐Ÿ“Œ Final Notes
Pinecone Index: package1536

Dimension: 1536

Chunk Size: 1000, Overlap: 100

Embedding Model: text-embedding-3-small

Feel free to fork the workflow or request the full JSON export.
Looking forward to your suggestions and improvements!

Nodes Used (9)

AI Agent
@n8n/n8n-nodes-langchain.agent
Default Data Loader
@n8n/n8n-nodes-langchain.documentDefaultDataLoader
Embeddings OpenAI
@n8n/n8n-nodes-langchain.embeddingsOpenAi
Google Drive
n8n-nodes-base.googleDrive
OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi
Pinecone Vector Store
@n8n/n8n-nodes-langchain.vectorStorePinecone
Recursive Character Text Splitter
@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter
Simple Memory
@n8n/n8n-nodes-langchain.memoryBufferWindow
Vector Store Question Answer Tool
@n8n/n8n-nodes-langchain.toolVectorStore