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