Encoding & Retrieval

Deep dive into how QRyptoRAG encodes text into QR-video format and retrieves content through semantic search.

Basic Usage

import {
  QRVideoStoreEncoder,
  QRVideoStoreRetriever,
  createInMemoryAdapter,
  createGeminiEmbedder
} from 'qr-video-rag';

// Setup components
const database = createInMemoryAdapter();
const embedder = createGeminiEmbedder(process.env.GEMINI_API_KEY!);

// Create encoder
const encoder = new QRVideoStoreEncoder(database, embedder, {
  chunkSize: 500,
  chunkOverlap: 50,
  videoFps: 1
});

// Encode document
await encoder.addDocument('my-doc', textContent, './output.mp4');

// Create retriever
const retriever = new QRVideoStoreRetriever(database, embedder);

// Search and retrieve
const results = await retriever.search('How do I configure?', './output.mp4', 5);
console.log(results);

Configuration Options

  • chunkSize: Text chunk size in characters (default: 500)
  • chunkOverlap: Overlap between chunks (default: 50)
  • videoFps: Video frame rate (default: 1 FPS)
  • qrErrorCorrectionLevel: QR code error correction ('L', 'M', 'Q', 'H')
  • videoResolution: Output video dimensions

Performance Considerations

  • Compression Ratios: 80-95% reduction in file size
  • Search Speed: ~50ms semantic search + ~1-2s retrieval
  • Chunk Size Impact: Larger chunks = fewer frames = faster retrieval
  • Video FPS: Lower FPS = smaller files, slower encoding

Use Cases

QRyptoRAG excels in scenarios requiring portable, self-contained knowledge:

  • Documentation Assistants: Encode entire docs as MP4 files
  • Offline AI Apps: Deploy knowledge to edge devices
  • Versioned Knowledge: Time-travel through documentation versions
  • Multi-language Support: Separate videos per language