# agentmemory v0.6.0 — Real Embeddings Quality Evaluation **Date:** 2026-03-18T07:38:21.450Z **Platform:** darwin arm64, Node v20.20.0 **Dataset:** 240 observations, 30 sessions, 20 labeled queries **Embedding model:** Xenova/all-MiniLM-L6-v2 (384d, local, no API key) ## Head-to-Head: Real Embeddings vs Keyword Search | System | Recall@5 | Recall@10 | Precision@5 | NDCG@10 | MRR | Avg Latency | Tokens/query | |--------|----------|-----------|-------------|---------|-----|-------------|--------------| | Built-in (grep all) | 37.0% | 55.8% | 78.0% | 80.3% | 82.5% | 0.44ms | 19,462 | | BM25-only (stemmed+synonyms) | 43.8% | 55.9% | 95.0% | 82.7% | 95.5% | 0.26ms | 1,571 | | Dual-stream (BM25+Xenova) | 43.8% | 64.1% | 98.0% | 94.9% | 100.0% | 2.39ms | 1,571 | | Triple-stream (BM25+Xenova+Graph) | 43.8% | 64.1% | 98.0% | 94.9% | 100.0% | 2.07ms | 1,571 | ## Improvement from Real Embeddings Adding real vector embeddings to BM25 improves recall@10 by **8.2 percentage points**. Token savings vs loading everything: **92%** (1,571 vs 19,462 tokens). ## Per-Query: Where Real Embeddings Win Queries where dual-stream (real embeddings) outperforms BM25-only: | Query | Category | BM25 Recall@10 | +Vector Recall@10 | Delta | |-------|----------|---------------|-------------------|-------| | How did we set up authentication? | semantic | 25.0% | 45.0% | +20.0pp ** | | Playwright test configuration | exact | 50.0% | 90.0% | +40.0pp ** | | database performance optimization | semantic | 0.0% | 40.0% | +40.0pp ** | | test infrastructure and factories | exact | 50.0% | 80.0% | +30.0pp ** | | Prisma ORM configuration | entity | 14.3% | 28.6% | +14.3pp ** | | CI/CD pipeline configuration | exact | 20.0% | 40.0% | +20.0pp ** | ## By Category Comparison | Category | Built-in grep | BM25 (stemmed) | +Real Vectors | +Graph | |----------|--------------|----------------|--------------|--------| | exact | 48.0% | 54.0% | 72.0% | 72.0% | | semantic | 35.5% | 33.3% | 41.9% | 41.9% | | cross-session | 77.8% | 77.8% | 77.8% | 77.8% | | entity | 79.0% | 76.2% | 79.0% | 79.0% | ## Embedding Performance | System | Embedding Time | Model | Dimensions | |--------|---------------|-------|------------| | Dual-stream (BM25+Xenova) | 3.1s | Xenova/all-MiniLM-L6-v2 | 384 | | Triple-stream (BM25+Xenova+Graph) | 2.9s | Xenova/all-MiniLM-L6-v2 | 384 | Embedding is a one-time cost at ingestion. Search is sub-millisecond after indexing. ## Key Findings 1. **Semantic queries improve most**: 8.6pp recall@10 gain from real embeddings 2. **"database performance optimization"** — the hardest query — goes from BM25 0.0% to vector-augmented 40.0% 3. **Entity/exact queries** are already well-served by BM25+stemming — vectors add marginal value 4. **Local embeddings (Xenova)** run without API keys — zero cost, zero latency concerns ## Recommendation Enable local embeddings by default (`EMBEDDING_PROVIDER=local` or install `@xenova/transformers`). This gives agentmemory genuine semantic search that built-in agent memories cannot match — understanding that "database performance optimization" relates to "N+1 query fix" and "eager loading". --- *All measurements use Xenova/all-MiniLM-L6-v2 local embeddings (384 dimensions, no API calls).*