Build a RAG System with Automatic Citations using Qdrant, Gemini & OpenAI
This workflow implements a Retrieval-Augmented Generation (RAG) system that:
Stores vectorized documents in Qdrant, Retrieves relevant content based on user input, Generates AI answers using Google Gemini, Automatically cites the document sources (from Google Drive).
Workflow Steps
Create Qdrant Collection A REST API node creates a new collection in Qdrant with specified vector size (1536) and cosine similarity.
Load Files from Google Drive The workflow lists all files in a Google Drive folder, downloads them as plain text, and loops through each.
Text Preprocessing & Embedding
Documents are split into chunks (500 characters, with 50-character overlap). Embeddings are created using OpenAI embeddings (text-embedding-3-small assumed). Metadata (file name and ID) is attached to each chunk.
Store in Qdrant All vectors, along with metadata, are inserted into the Qdrant collection.
Chat Input & Retrieval
When a chat message is received, the question is embedded and matched against Qdrant. Top 5 relevant document chunks are retrieved. A Gemini model is used to generate the answer based on those sources.
Source Aggregation & Response
File IDs and names are deduplicated. The AI response is combined with a list of cited documents (filenames). Final output:
AI Response
Sources: ["Document1", "Document2"]
Main Advantages
End-to-end Automation**: From document ingestion to chat response generation, fully automated with no manual steps. Scalable Knowledge Base**: Easy to expand by simply adding files to the Google Drive folder. Traceable Responses**: Each answer includes its source files, increasing transparency and trustworthiness. Modular Design**: Each step (embedding, storage, retrieval, response) is isolated and reusable. Multi-provider AI**: Combines OpenAI (for embeddings) and Google Gemini (for chat), optimizing performance and flexibility. Secure & Customizable**: Uses API credentials and configurable chunk size, collection name, etc.
How It Works
Document Processing & Vectorization
The workflow retrieves documents from a specified Google Drive folder.
Each file is downloaded, split into chunks (using a recursive text splitter), and converted into embeddings via OpenAI.
The embeddings, along with metadata (file ID and name), are stored in a Qdrant vector database under the collection negozio-emporio-verde.
Query Handling & Response Generation
When a user submits a chat message, the workflow:
Embeds the query using OpenAI.
Retrieves the top 5 relevant document chunks from Qdrant.
Uses Google Gemini to generate a response based on the retrieved context.
Aggregates and deduplicates the source file names from the retrieved chunks.
The final output includes both the AI-generated response and a list of source documents (e.g., Sources: ["FAQ.pdf", "Policy.txt"]).
Set Up Steps
Configure Qdrant Collection
Replace QDRANTURL and COLLECTION in the "Create collection" HTTP node to initialize the Qdrant collection with:
Vector size: 1536 (OpenAI embedding dimension).
Distance metric: Cosine.
Ensure the "Clear collection" node is configured to reset the collection if needed.
Google Drive & OpenAI Integration
Link the Google Drive node to the target folder (Test Negozio in this example).
Verify OpenAI and Google Gemini API credentials are correctly set in their respective nodes.
Metadata & Output Customization
Adjust the "Aggregate" and "Response" nodes if additional metadata fields are needed.
Modify the "Output" node to format the response (e.g., changing Sources: {{...}} to match your preferred style).
Testing
Trigger the workflow manually to test document ingestion.
Use the chat interface to verify responses include accurate source attribution.
Note: Replace placeholder values (e.g., QDRANTURL) with actual endpoints before deployment.
Need help customizing?
Contact me for consulting and support or add me on Linkedin.
Related Templates
Send structured logs to BetterStack from any workflow using HTTP Request
Send structured logs to BetterStack from any workflow using HTTP Request Who is this for? This workflow is perfect for...
Provide latest euro exchange rates from European Central Bank via Webhook
What is this workflow doing? This simple workflow is pulling the latest Euro foreign exchange reference rates from the E...
Automate Daily Keyword Research with Google Sheets, Suggest API & Custom Search
Who's it for This workflow is perfect for SEO specialists, marketers, bloggers, and content creators who want to automa...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments