This isn’t a workaround. Memvid was built from the ground up to work without embeddings. Vectors are an optional add-on, not a requirement.
Memvid’s Core Innovation
Traditional RAG systems require embeddings before you can search anything. Memvid takes a fundamentally different approach:
With Memvid:
- No embedding API calls
- No vector computation
- No waiting before first search
- Works offline, always
How It Works
Every .mv2 file contains multiple search indices that work without vectors:
| Index | What It Does | API Required |
|---|
| BM25 Lexical | Full-text keyword search | No |
| SimHash | Near-duplicate detection | No |
| Logic Mesh | Entity-relationship queries | No |
| Time Index | Temporal queries | No |
| Vector | Semantic similarity | Optional |
The first four indices are built locally, instantly, with zero external dependencies.
Why This Matters
10x Faster Ingestion
No embedding computation means instant indexing:
| Content | With Embeddings | Memvid Default |
|---|
| 1,000 docs | 5-10 minutes | 30 seconds |
| 10,000 docs | 1-2 hours | 5 minutes |
| First search | After embedding done | Instant |
60% Smaller Files
No vector storage means dramatically smaller memory files:
| Configuration | Size |
|---|
| Full (vectors + lexical) | 230 MB |
| Memvid default (no vectors) | 95 MB |
Zero Cost
No embedding API calls means:
- No OpenAI bills
- No rate limits
- No API keys required
- Works offline forever
Privacy by Default
Your data never leaves your machine:
- No external API calls
- No telemetry on content
- Air-gapped environments supported
Search Quality
BM25 lexical search is excellent for most use cases:
| Query Type | Lexical (BM25) | Needs Vectors? |
|---|
| Exact terms | Excellent | No |
| Code/function names | Excellent | No |
| Error messages | Excellent | No |
| Technical terms | Excellent | No |
| Log analysis | Excellent | No |
| Conceptual (“similar to X”) | Moderate | Sometimes |
| Natural language questions | Good | Sometimes |
When Lexical Wins
# Finding exact code
memvid find code.mv2 --query "handleAuthentication"
# Finding error codes
memvid find logs.mv2 --query "ERROR_404_NOT_FOUND"
# Finding specific terms
memvid find docs.mv2 --query "API rate limit"
BM25 finds these perfectly - often better than semantic search.
Getting Started
Memvid works without embeddings by default:
# Install
npm install -g memvid-cli
# Create memory (no embeddings by default)
memvid create my-memory.mv2
# Add documents
memvid put my-memory.mv2 --input ./documents/
# Search immediately
memvid find my-memory.mv2 --query "your search"
# Ask questions (uses local TinyLlama)
memvid ask my-memory.mv2 --question "What is this about?"
No API keys. No embedding wait. Just works.
Adding Embeddings Later
If you need semantic search for conceptual queries, add embeddings:
# Add vector index to existing memory
memvid doctor my-memory.mv2 --rebuild-vec-index
# Now semantic search works too
memvid find my-memory.mv2 --query "concepts related to authentication" --mode sem
Your existing indices still work. Embeddings are additive.
SDK Usage
Python
from memvid_sdk import create
# Create memory (no embeddings by default)
mem = create('memory.mv2')
# Enable lexical search
mem.enable_lex()
# Add content - indexed instantly
mem.put(
title='My Document',
label='note',
metadata={},
text='Your document content...'
)
# Search works immediately
results = mem.find('search query', k=5)
# Seal when done
mem.seal()
Node.js
import { create } from '@memvid/sdk';
// Create memory (no embeddings by default)
const mem = await create('memory.mv2');
// Add content - indexed instantly
await mem.put({
title: 'My Document',
label: 'note',
text: 'Your document content...'
});
// Search works immediately
const results = await mem.find('search query', { k: 5 });
// Seal when done
await mem.seal();
Hybrid Approach
For large collections, embed only what needs semantic search:
# Main content - lexical is enough
memvid put memory.mv2 --input ./code/
memvid put memory.mv2 --input ./logs/
# Documentation - add semantic search
memvid put memory.mv2 --input ./docs/ --enable-vec
Or skip embeddings for bulk data:
# Bulk import without embeddings
memvid put memory.mv2 --input ./large-archive/ --embedding-skip
Comparing Configurations
| Feature | No Vectors | With Vectors |
|---|
| Ingestion speed | 10-100x faster | Slower |
| File size | 60% smaller | Larger |
| API costs | $0 | $$ |
| Offline | Yes | Depends |
| Exact search | Excellent | Excellent |
| Conceptual search | Moderate | Excellent |
| Setup complexity | Zero | API keys needed |
When to Add Vectors
Consider adding embeddings when:
- You need “find similar” functionality
- Users ask natural language questions
- Cross-language search is required
- You want typo tolerance
But try lexical first - you might not need vectors at all.
Next Steps