We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.

This lesson's interactive features are locked, please to keep using them

Vector Databases

We've implemented semantic search by storing embeddings in Python lists and calculating similarities one by one. This works for small datasets, but what happens when you have millions or billions of documents? Enter vector databases.

Unlike a relational database like MySQL, which stores structured data in tables, a vector database is designed specifically for storing and searching high-dimensional vectors efficiently. Vector databases offer:

  • Fast similarity search: Sub-linear time complexity using indexing
  • Persistent storage: Embeddings saved to disk
  • Distributed architecture: Handle more data than a single machine can store in RAM
  • Concurrent access: Multiple users can search simultaneously

Vector vs. Traditional Database

Traditional Database Vector Database
Data: Structured (rows/columns) Data: High-dimensional vectors
Queries: Exact matches (WHERE clauses) Queries: Similarity search (nearest neighbors)
Use Case: Transactional data Use Case: ML embeddings, semantic search

Vector databases also use specialized indexing techniques to speed up similarity searches, such as:

Popular Technologies

If you're building a production RAG system, you'll likely want to use an off-the-shelf vector database. Here are some popular options:

  • PGVector: Open-source vector similarity search for PostgreSQL
  • sqlite-vec: Open-source vector similarity search for SQLite
  • LanceDB: Local-first, simple setup, small to medium scale
  • Weaviate: Full-featured, GraphQL API, complex schema