V Vant Docs

Tutorial: Build RAG with Your Brain

15-minute tutorial to build retrieval-augmented generation using your Vant brain

What You’ll Build

An AI that retrieves relevant context from your brain before answering.

Why RAG?

Without RAG:

With RAG:

Architecture

User Query
    │
    ▼
┌─────────────┐
│   Vant      │
│  Search    │──▶ Query brain (BM25 + Vector)
└─────────────┘
    │
    ▼
Context + User Query
    │
    ▼
┌─────────────┐
│    AI       │──▶ Generate response
└─────────────┘

Step 1: Query Brain

const search = require('vant').search;

async function queryBrain(question) {
    // Search brain
    const results = await search.query(question, {
        topK: 5,
        maxTokens: 2000
    });
    
    return results.memories.map(m => m.content).join('\n\n');
}

const context = await queryBrain('authentication');
console.log(context);

Step 2: Build Prompt

function buildPrompt(question, context) {
    return `
You are a helpful assistant with access to long-term memory.

Context from your brain:
${context}

User question: ${question}

Answer based on the context above. If the context doesn't contain
relevant information, say so.
`;
}

Step 3: Call AI

async function askWithRAG(question) {
    // 1. Get context
    const context = await queryBrain(question);
    
    // 2. Build prompt
    const prompt = buildPrompt(question, context);
    
    // 3. Call AI (example with OpenAI)
    const response = await openai.chat.completions.create({
        model: 'gpt-4',
        messages: [{ role: 'user', content: prompt }],
        max_tokens: 1000
    });
    
    return response.choices[0].message.content;
}

Step 4: Put It Together

const vant = require('vant');
const search = require('vant').search;

async function ragAgent(question) {
    // Initialize
    await vant.init({ name: 'RAGAgent' });
    
    // Think using RAG
    const result = await vant.think(question, { topK: 5 });
    
    // Use memories in response
    const context = result.memories.map(m => m.content).join('\n\n');
    
    return {
        question,
        context,
        insights: result.insights
    };
}

Use BM25 + Vector for better results:

const { context, scores } = await search.hybrid('question', {
    topK: 5,
    rerank: true
});

See Search for details.

Cache Results

Cache common queries:

const cache = require('./lib/cache');

async function cachedQuery(question) {
    const cached = cache.get('rag:' + question);
    if (cached) return cached;
    
    const result = await ragAgent(question);
    cache.set('rag:' + question, result, 60000);
    return result;
}

Use Cases

Support Bot

User: How do I reset password?
→ Query brain for password reset docs
→ Return step-by-step guide

Code Assistant

User: How do I connect to PostgreSQL?
→ Query brain for database learnings
→ Return relevant code snippets

Research Assistant

User: What do I know about量子计算?
→ Query brain for quantum computing
→ Return all relevant notes