Abstract
Automotive search engines traditionally rely on exact text matching, which struggles when users employ informal slang, nicknames, or make typographical errors. We introduce the architecture behind Wheeloh’s Semantic Car Search, indexing 22,180 distinct vehicle models across 143 global marques into a continuous 1,536-dimensional vector space. By computing normalized dot products over local in-memory embeddings, the system evaluates all candidate vectors in 1.8 milliseconds on standard CPU hardware. On an evaluation suite of 897 real-world test queries, our approach attains a 84.6% exact Top-1 accuracy and a 94.2% Top-5 retrieval recall (MRR: 0.881), maintaining high resilience across multilingual inputs and heavy typos while slashing operational serving costs to zero.
1. Introduction
1.1 Motivation: The Automotive Semantic Gap
Automotive catalogs exhibit deep hierarchical taxonomies:
However, car spotters, collectors, and casual enthusiasts almost never formulate queries aligned with this strict canonical hierarchy. Real-world queries exhibit high entropy across four distinct failure modes for classical lexical systems:
- Slang & Nicknames
Users enter colloquial terms like "Beamer" (BMW), "Merc" (Mercedes), "Rari" (Ferrari), "Miata" (Mazda MX-5), or "G-Wagon" (G-Class).
- Generational Variations
A search for "911 Turbo" encompasses 50 years of divergent chassis codes (930, 964, 993, 996, 997, 991, 992) which share no lexical tokens with "Turbo".
- Typos & Phonetic Errors
Mobile camera users typing on the move submit severe typos: "LAmborgini Huracan", "Ferari Testarosa", or "Porshe Cayan".
- Multilingual Descriptive Intent
Non-English queries describing mechanical attributes without brand labels, e.g. "voiture de sport italienne v10" or "break allemand puissant".
1.2 Problem Statement & Production SLAs
To power Wheeloh's mobile vehicle identification experience, the search engine must operate within three strict engineering Service Level Agreements (SLAs):
2. Methodology
2.1 Vector Embeddings & Document Serialization
Each vehicle entity in the Wheeloh database is serialized into a structured contextual representation prior to vectorization:
# Contextual document serialization for automotive entitiesdef serialize_vehicle(car: dict) -> str:return (f"Make: {car['brand']} | "f"Model: {car['model']} | "f"Generation: {car.get('generation', 'N/A')} | "f"Version: {car['version']} | "f"Powertrain: {car.get('powertrain', 'N/A')}")# Unit-normalized dense embedding generation (1,536 dimensions)doc_vector = model.encode(input=serialize_vehicle(vehicle),normalize_embeddings=True # Enforces ||d||_2 = 1.0)# Output: ndarray(shape=(1536,), dtype=float32, norm=1.0)
The encoder projects these serialized strings into a continuous 1,536-dimensional metric space where automotive semantic relationships correspond to directional proximity on a hypersphere.
2.2 Similarity Computation & SIMD Acceleration
Semantic similarity between an incoming query vector q and candidate vehicle vector d is governed by cosine similarity:
Because all vehicle representations d and query vectors q are pre-normalized to unit L2 norm (||q|| = 1 and ||d|| = 1), the denominator simplifies to unity. The similarity score reduces strictly to a linear inner dot product:
Matrix multiplication across the entire dataset of 22,180 indexed vehicles completes in 1.6 milliseconds via AVX2 SIMD fused multiply-add (FMA) instructions. Top-k candidates are isolated using a linear-time partition:
# Vectorized SIMD dot-product and top-k retrieval in NumPyimport numpy as np# D: Pre-loaded matrix of shape (22180, 1536), dtype float32 (34 MB in RAM)scores = np.dot(D, q) # 1.6 ms via AVX2 SIMD / BLAS# Linear-time Top-K selection without full O(N log N) sortingk = 5candidate_indices = np.argpartition(scores, -k)[-k:]top_k_sorted = candidate_indices[np.argsort(-scores[candidate_indices])]# Result: Top-5 candidate models isolated in 1.8 ms total execution time
2.3 Latent Manifold Projection (PCA)
To inspect cluster topology and verify semantic coherence, we compute an orthogonal linear transformation via Principal Component Analysis (PCA). The 1,536-dimensional latent space is projected onto the top two eigenvectors that capture maximum spatial variance, yielding a 2D coordinate system:
3. Key Metrics
4. Interactive PCA Demonstration
Explore the 22,180-vehicle continuous latent space projected into 2D via PCA. Filter by vehicle archetype or type live queries to evaluate semantic proximity.
Loading 22,180 car embeddings...
5. Experimental Evaluation & Deep Analysis
Empirical evaluation of the Wheeloh vector search engine across an evaluation benchmark of 897 real-world test queries, measuring recall, robustness against noise, score distribution, and serving latency.
Cumulative Retrieval Recall @ K
MRR: 0.881Empirical top-k discovery recall curve over 897 evaluation queries.
Robustness Across Typologies
+70.6% on TyposTop-5 recall comparison against traditional BM25 lexical search.
Cosine Similarity Score Density
Cutoff τ = 0.72Gaussian probability distributions demonstrating class separability.
Production Latency Profile
20.4 ms E2EStage breakdown across the complete end-to-end request lifecycle.
Architectural Benchmarking
Comparison of retrieval accuracy, computational resource footprints, and query latency across architectural paradigms.
| Engine / Architecture | Top-1 Acc. | Top-5 Acc. | Query Latency | Memory (RAM) |
|---|---|---|---|---|
| SQL Exact Matching (ILIKE / Regex) | 29.4% | 34.2% | 1.2 ms | < 2 MB |
| BM25 / Elasticsearch | 48.7% | 59.8% | 8.5 ms | ~180 MB |
| Wheeloh Vector Search (Local)Production | 84.6% | 94.2% | 1.8 ms (20 ms E2E) | 34 MB |
← Swipe table horizontally to see all metrics →
6. Conclusion & Future Roadmap
The vector-based semantic search architecture detailed herein is deployed in production within the Wheeloh mobile spotter ecosystem. Indexing 22,180 distinct automotive models into an AVX2-accelerated in-memory matrix enables sub-20 ms end-to-end query resolution with 94.2% Top-5 accuracy at zero marginal cloud database costs.
Roadmap Initiatives
Aligning mobile camera viewfinder crops directly into the joint embedding space via a fine-tuned contrastive vision-language transformer, allowing visual spots to query the text catalog without intermediary OCR.
Quantizing the 1,536-dimensional FP32 matrix to symmetric INT8 values reduces the memory footprint from 34 MB to 8.5 MB, unlocking 100% offline search capabilities natively within the iOS and Android applications.
Fusing continuous dense vectors with sparse exact chassis code indices (e.g. "E46", "997.2", "NA6CE") via Reciprocal Rank Fusion to achieve the highest possible precision when spotters use definitive enthusiast chassis codes.
Try the car search yourself.
It runs in the Wheeloh app: point your phone at a car and it is identified in seconds. Free on iPhone and Android.