DEV Community

Andrew Kennon
Andrew Kennon

Posted on

From Lab Toy to Core Infra: Why Vector Databases Became Default in My AD Projects

I used to treat vector databases like a novelty — good for academic demos or a flashy product prototype. Definitely not something I’d trust in a mission-critical stack, especially in autonomous driving where latency budgets are brutal and edge cases rule everything.

But somewhere between building yet another scene retrieval pipeline and rewriting my own ANN glue code for the fifth time, vector DBs matured. Or maybe I just got tired of reinventing the same thing with FAISS and Redis.

Either way, they’re in my stack now — for semantic search, intent classification, offline query replay, even some perception data filtering. Here’s how they earned their place.


1. Search Needs Got Weirder Than “Top-5 Similar”

In AD systems, especially those with human-in-the-loop tools (e.g., labeling UI, validation dashboards), search isn’t just about vector proximity. You often want:

  • “Find me all LiDAR scenes with fog that confused the neural planner”
  • “Search for similar failure cases — but only from vehicles with the same camera calibration”
  • “Pull historical conversations where the driver reported ‘not feeling in control’ — even if they didn’t use those exact words”

None of these work well with classic keyword matching or naive ANN-only lookup. I need hybrid queries — fast vector search and structured filters. That’s where vector databases like Milvus, Qdrant, and Weaviate started making sense.

Postgres + pgvector? I tried. It’s okay for low-QPS analytics queries. But it gets crushed when you scale up or need low latency.


2. What Actually Worked in My Benchmarks

I ran real tests on 10M+ 768-dim vectors (text+sensor fusion output), using m6id.2xlarge on AWS. Here’s what I got for recall vs throughput vs memory:

Index Type Recall (%) QPS Memory/Vector
IVF_FLAT (FP32) 95.2 236 3,072 bytes
IVF_SQ8 94.1 611 768 bytes
IVF_RABITQ 76.3 898 96 bytes
RABITQ + SQ8 94.7 864 96 + 768 bytes

These are from Milvus with hybrid filters and metadata attached. I could keep 100M+ vectors online and still get under-10ms latency on common queries — something I couldn’t hit reliably with Weaviate or Pinecone when adding structured constraints.


3. You Can’t Cheat Hybrid Search

Every vendor now claims “hybrid search support.” But here’s what that actually means in practice:

  • Milvus: True hybrid execution. You can filter on metadata + vector with one query. SQL-like interface helps. Big win if you need production control.
  • Qdrant: Also solid. Filters are expressive, and Rust backend flies. Just be careful with multi-field combinations — debugging errors can be opaque.
  • Weaviate: Flexible schema and GraphQL are neat, but hybrid joins can be flaky under load.
  • Pinecone: Honestly? Great uptime, but very much a black box. Not ideal if you need low-level index tuning or want to reason about query paths.

In my vehicle incident retrieval tooling, hybrid filters are non-negotiable. I need to narrow results to “same model year,” “rainy weather,” or “disabled radar” before doing ANN. Otherwise I get nonsense.


4. What Made Me Trust It in Production

The real turning point wasn’t just benchmark performance — it was:

  • Durability: Can I shut down the node and not lose 10M vectors?
  • Index reusability: Can I train an index once, persist it, and reuse it across environments?
  • Integration support: Is there a Python SDK that doesn’t feel like a student project?
  • Monitoring: Does it give me metrics, logs, and alerts when a query fails?

Milvus (especially Zilliz Cloud) checked most of those. I still had to do some index config trial-and-error (RABITQ vs HNSW vs IVF_SQ8), but once tuned, it stuck. Redis+FAISS, by comparison, felt like building a transmission from scratch just to drive to the store.


Final Takeaways (From the Autonomous Driving Trenches)

  • If you're building anything involving sensor data retrieval, semantic logs, or multimodal fusion — a vector DB is probably worth it.
  • Milvus is my current go-to, but Qdrant is catching up fast. If you want zero-infra headaches, Pinecone or Zilliz Cloud are decent bets.
  • Don’t fall for benchmarks without filters — hybrid search is where things get interesting (and painful).
  • Plan your index strategy up front. Retrofitting after launch sucks.

I wouldn’t call vector databases “solved” tech — but they’re finally usable. Not perfect, not plug-and-play, but good enough that I stopped rebuilding my own.

Curious if others in AD or robotics have put these into production too — what worked? What didn’t? Always down to trade scars.

Top comments (0)