Documentation Index Fetch the complete documentation index at: https://docs.runflow.ai/llms.txt
Use this file to discover all available pages before exploring further.
The Knowledge module (also called RAG) manages semantic search in vector knowledge bases.
Standalone Knowledge Manager
import { Knowledge } from '@runflow-ai/sdk' ;
const knowledge = new Knowledge ({
vectorStore: 'support-docs' ,
k: 5 ,
threshold: 0.7 ,
});
// Basic search
const results = await knowledge . search ( 'How to reset password?' );
results . forEach ( result => {
console . log ( result . content );
console . log ( 'Score:' , result . score );
});
// Get formatted context for LLM
const context = await knowledge . getContext ( 'password reset' , { k: 3 });
console . log ( context );
Agentic RAG in Agent
When RAG is configured in an agent, the SDK automatically creates a searchKnowledge tool that the LLM can decide when to use. This is more efficient than always searching, as the LLM only searches when necessary.
const agent = new Agent ({
name: 'Support Agent' ,
instructions: 'You are a helpful support agent.' ,
model: openai ( 'gpt-4o' ),
rag: {
vectorStore: 'support-docs' ,
k: 5 ,
threshold: 0.7 ,
// Custom search prompt - guides when to search
searchPrompt: `Use searchKnowledge tool when user asks about:
- Technical problems
- Process questions
- Specific information
Don't use for greetings or casual chat.` ,
toolDescription: 'Search in support documentation for solutions' ,
},
});
// Agent automatically has 'searchKnowledge' tool
// LLM decides when to search (not always - more efficient!)
const result = await agent . process ({
message: 'How do I reset my password?' ,
});
Multiple Vector Stores
const agent = new Agent ({
name: 'Advanced Support Agent' ,
instructions: 'Help users with multiple knowledge bases.' ,
model: openai ( 'gpt-4o' ),
rag: {
vectorStores: [
{
id: 'support-docs' ,
name: 'Support Documentation' ,
description: 'General support articles' ,
threshold: 0.7 ,
k: 5 ,
searchPrompt: 'Use search_support-docs when user has technical problems or questions' ,
},
{
id: 'api-docs' ,
name: 'API Documentation' ,
description: 'Technical API reference' ,
threshold: 0.8 ,
k: 3 ,
searchPrompt: 'Use search_api-docs when user asks about API endpoints or integration' ,
},
],
},
});
Managing Documents
Add text documents:
import { Knowledge } from '@runflow-ai/sdk' ;
const knowledge = new Knowledge ({
vectorStore: 'support-docs' ,
});
// Add a text document
const result = await knowledge . addDocument (
'How to reset password: Go to settings > security > reset password' ,
{
title: 'Password Reset Guide' ,
category: 'authentication' ,
version: '1.0'
}
);
console . log ( 'Document added:' , result . documentId );
Upload files:
import * as fs from 'fs' ;
// Node.js - Upload from file system
const fileBuffer = fs . readFileSync ( './manual.pdf' );
const result = await knowledge . addFile (
fileBuffer ,
'manual.pdf' ,
{
title: 'User Manual' ,
mimeType: 'application/pdf' ,
metadata: {
department: 'Support' ,
version: '2.0'
}
}
);
RAG Interceptor & Rerank
Interceptor - Filter & Transform Results:
const agent = new Agent ({
name: 'Smart Agent' ,
model: openai ( 'gpt-4o' ),
rag: {
vectorStore: 'docs' ,
k: 10 ,
// Interceptor: Customize results before LLM
onResultsFound : async ( results , query ) => {
// Filter sensitive data
const filtered = results . filter ( r => ! r . metadata ?. internal );
// Enrich with external data
const enriched = await Promise . all (
filtered . map ( async r => ({
... r ,
content: ` ${ r . content } \n\n Source: ${ r . metadata ?. url } ` ,
}))
);
return enriched ;
},
},
});
Rerank Strategies:
reciprocal-rank-fusion - Standard RRF algorithm
score-boost - Boost results containing keywords
metadata-weight - Weight by metadata field value
custom - Custom scoring function
Next Steps
Use Cases See RAG examples