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
});