Last verified: September 2026 RAG Guide Advanced

Dify RAG Guide 2026: Answer Questions from Your Own Documents

Retrieval-Augmented Generation, or RAG, is one of Dify's core knowledge features. This guide shows how to build an app that retrieves passages from your documents and supplies them to a model as context before it answers.

What is Dify RAG?

RAG stands for Retrieval-Augmented Generation. It is a technique that gives your AI access to your own documents, databases, and knowledge sources. Instead of answering from general training data, it searches your content first and then generates a response grounded in what it found.

A model cannot reliably answer questions about private documents it has not received. Dify addresses this by indexing files in a Knowledge Base, retrieving relevant passages for a query, and passing those passages to the model as context.

The result still depends on document quality, retrieval settings, the selected models, and the prompt. In chatflows, Dify shows citations for responses that use knowledge by default, but retrieval does not guarantee a correct answer.

Answers can use retrieved document passages
Can reduce unsupported answers when retrieval is relevant
Chatflows can display citations for retrieved knowledge
Works with PDF, DOCX, PPTX, text, Markdown, and other documented formats
No model fine-tuning required
Update the knowledge base without retraining the model

How Dify RAG Works Under the Hood

Understanding the pipeline helps you configure it better. Here is what happens when you upload a document and ask your chatbot a question:

1

Document ingestion

You upload a file. Dify extracts the text content from PDFs, Word docs, Markdown, etc.

2

Chunking

The text is split into smaller chunks so retrieval can return focused passages.

3

Embedding

Each chunk is converted into a vector (a list of numbers) using an embedding model like text-embedding-3-small.

4

Vector storage

Vectors are stored in a vector database (built-in, pgvector, Qdrant, Weaviate, Milvus, or Pinecone).

5

Query retrieval

When a user asks a question, it is also embedded, and the most similar chunks are retrieved from the vector store.

6

Context injection

The retrieved chunks are injected into the LLM prompt as context. The model answers based on this real data.

Key insight: RAG does not modify the LLM. It adds a retrieval step before generation. This means you can update your knowledge base any time without touching the model.
1

Setting Up Your Knowledge Base

The Knowledge Base is where you upload and index your documents. Follow these steps:

1

Open Dify → Knowledge tab

Click "Knowledge" in the top navigation. This is where all your document collections live.

2

Create a new Knowledge Base

Click "+ Create Knowledge". Give it a descriptive name (e.g., "Product Documentation", "Support FAQ").

3

Upload your files

Drag and drop or browse to upload. Supported: PDF, Word (.docx), TXT, Markdown (.md), HTML, CSV. Multiple files at once are supported.

4

Choose chunking strategy

Choose a method that matches the document structure. Preview the resulting segments and test retrieval with representative questions before indexing a large collection.

5

Select embedding model

Choose an embedding model available in your Dify deployment. Keep the same model while comparing retrieval settings so the test has one changing variable.

6

Index your documents

Click "Save & Process". Indexing time depends on file size, extraction, embedding, and available resources. Wait for Dify to report that processing is complete before testing the app.

Tip: Clean, well-formatted documents index better. Remove headers/footers, page numbers, and boilerplate text from your PDFs before uploading for best retrieval quality.
2

Connecting RAG to Your App

Once your Knowledge Base is indexed, attach it to a chatbot or agent app:

1

Open your Chatbot or Agent app in Studio

2

In the left panel, find the "Context" section

3

Click "+ Add Context" and select your Knowledge Base

4

Set recall mode to "Semantic Search" (recommended) for meaning-based retrieval, or "Full-Text Search" for keyword matching

5

Open Retrieval Setting and choose a Top K value for the maximum number of results returned after reranking

6

Set a Score Threshold if you want to exclude results below a minimum similarity score, then test it against known source passages

7

Test in the preview panel with questions from your documents. Verify the bot cites correct info.

Tip: Ask the model to cite the supplied context and to state when the retrieved passages do not contain enough evidence. Then verify in logs which chunks were actually retrieved.
3

Supported Vector Databases

Dify supports multiple vector stores. For most users, the built-in store is all you need. For large-scale deployments (millions of documents), switch to a dedicated vector database:

Vector Store Setup Best For Cost
Built-in (default) Recommended None Small and medium knowledge bases Free
pgvector PostgreSQL extension Existing PostgreSQL users Free (self-hosted)
Qdrant Docker container Self-hosted, high performance Free (self-hosted)
Weaviate Docker or cloud Multi-modal data (text + images) Free / paid cloud
Milvus Docker or Zilliz cloud Large-scale vector workloads Free / paid cloud
Pinecone API key only Fully managed, no infra work Paid SaaS
Recommendation: Start with the built-in vector store when it meets your operational needs. Consider an external store when scale, compliance, availability, or an existing data platform makes it the better fit.
4

RAG Tips for Best Results

These configuration tips will significantly improve your RAG accuracy:

Test chunking against your source structure

Preview segments and verify whether each one retains enough context. Compare settings with a fixed set of representative questions.

Clean your source documents

Remove repeated headers, footers, page numbers, and navigation menus. These add noise that hurts retrieval quality.

Use metadata filtering

Tag documents with categories (e.g., "product: billing", "type: FAQ"). Filters let you retrieve only relevant subsets for each query.

Separate knowledge bases by topic

Do not mix your product manual with your HR policy. Separate datasets give higher-precision retrieval. You can attach multiple bases to one app.

Use Hybrid Search

Dify supports hybrid mode (semantic + keyword search combined). Enable it in your Knowledge Base settings for better coverage on exact terms like product codes or names.

Monitor retrieval in logs

Go to Logs & Annotations in your app to see exactly which chunks were retrieved for each query. Use this to debug poor answers.

Retrieval Modes Explained

Dify offers three retrieval modes. Choose based on your content type:

Recommended

Semantic Search

Finds conceptually similar content even if exact words differ. Best for natural language questions about complex topics. Uses vector similarity.

Full-Text Search

Keyword-based search like a traditional search engine. Better for exact term matching: product codes, names, IDs. Fast and predictable.

Hybrid Search

Combines semantic and full-text search using a reranker. Best overall accuracy but slower and requires a reranker model (e.g., cohere-rerank).

External Data Sources and Sync

Dify goes beyond file uploads. You can connect external sources that stay in sync automatically:

Notion

Connect your Notion workspace. Dify syncs pages automatically. Great for team wikis and documentation.

Web scraping

Provide a URL and Dify fetches and indexes the page. Good for public documentation sites.

Custom API

Build a retrieval plugin via the External Knowledge Base API. Connect any database or proprietary data source.

File sync via API

Programmatically upload and update documents using the Dataset API. Useful for CMS integrations.

Sources and Verification

Dify documents Top K, Score Threshold, metadata filtering, and citation behavior in the Knowledge Retrieval node. The current Dify source also lists DOCX and PPTX among accepted document types. These controls belong in the Dify interface or its documented APIs, not in generic environment variables.

Frequently Asked Questions

What is Dify RAG?

RAG stands for Retrieval-Augmented Generation. Dify can retrieve passages from a Knowledge Base and pass them to a model as context before it generates an answer.

What file types does Dify RAG support?

The current Dify project lists document formats including PDF, DOCX, PPTX, plain text, Markdown, HTML, spreadsheets, CSV, XML, and EPUB. Support can depend on the input path and the current Dify version, so verify the format list for your deployment.

How does Dify RAG reduce hallucinations?

Retrieval can give the model relevant source passages instead of relying only on its training data. It can reduce unsupported answers, but the result still depends on retrieval quality, the model, and the prompt.

Which vector databases work with Dify RAG?

Dify supports a built-in vector store and external options such as pgvector, Qdrant, Weaviate, Milvus, and Pinecone. Choose an external store when its operational, scale, or compliance characteristics match your deployment requirements.

Ready to Self-Host Dify with RAG?

Self-hosting Dify gives you full control over your data, which is critical when your Knowledge Base contains sensitive documents. Run Dify on your own server from €3.79/month on Hetzner, or get a fully managed instance on Elestio in under 5 minutes.

Self-Host Dify on Hetzner → Managed Dify on Elestio Compare All Hosting Options