Examples
Practical examples showing QRyptoRAG in action with different databases, embedders, and use cases.
Basic Usage
import {
QRVideoStoreEncoder,
QRVideoStoreRetriever,
createInMemoryAdapter,
createGeminiEmbedder
} from 'qr-video-rag';
// Setup
const database = createInMemoryAdapter();
const embedder = createGeminiEmbedder(process.env.GEMINI_API_KEY!);
// Encode
const encoder = new QRVideoStoreEncoder(database, embedder);
await encoder.addDocument('guide', userGuideText, './guide.mp4');
// Search
const retriever = new QRVideoStoreRetriever(database, embedder);
const results = await retriever.search('authentication setup', './guide.mp4', 3);With Supabase
import { createClient } from '@supabase/supabase-js';
import { createSupabaseAdapter } from 'qr-video-rag';
const supabase = createClient(SUPABASE_URL, SUPABASE_KEY);
const database = createSupabaseAdapter(supabase);
const encoder = new QRVideoStoreEncoder(database, embedder);
await encoder.addDocument('docs', documentation, './docs.mp4');Batch Processing
await encoder.addDocumentsBatch([
{ documentId: 'api-docs', documentText: apiText, outputVideoPath: './api.mp4' },
{ documentId: 'user-guide', documentText: guideText, outputVideoPath: './guide.mp4' },
{ documentId: 'faq', documentText: faqText, outputVideoPath: './faq.mp4' }
]);Search Multiple Videos
const results = await retriever.searchMultiple(
'payment processing',
['./api.mp4', './guide.mp4', './faq.mp4'],
5
);Custom Configuration
const encoder = new QRVideoStoreEncoder(database, embedder, {
chunkSize: 1000, // Larger chunks
chunkOverlap: 100, // More overlap
videoFps: 2, // Higher frame rate
qrErrorCorrectionLevel: 'H', // High error correction
videoResolution: { width: 512, height: 512 },
verbose: true // Enable logging
});