Memory and Context / Core Components

Vector Database

Intermediate [3/5]
Vector store Vector DB Embedding database

Definition

Vector databases are specialized storage systems optimized for storing, indexing, and querying high-dimensional vectors. They power the retrieval component of RAG systems by enabling fast similarity search across millions or billions of embeddings.

Unlike traditional databases that search by exact matches, vector databases find items by semantic similarity.

Key Concepts

  • ANN indexing: Approximate algorithms for fast search (HNSW, IVF)
  • Metadata filtering: Combine vector search with attribute filters
  • Hybrid search: Vector + keyword search in one query
  • Scalability: Handle billions of vectors efficiently

Examples

Comparison
Popular Vector Databases
Database Type Best For ─────────────────────────────────────────────────── Pinecone Managed Production, no-ops Weaviate Open-source Hybrid search, GraphQL Qdrant Open-source Performance, filtering Milvus Open-source Large scale, enterprise Chroma Open-source Local dev, simplicity pgvector Extension Existing Postgres users ─────────────────────────────────────────────────── Quick Decision Guide: - Just starting? → Chroma (simple, local) - Production, no DevOps? → Pinecone (managed) - Need filtering + hybrid? → Qdrant or Weaviate - Already use Postgres? → pgvector - Billions of vectors? → Milvus
Implementation
Using Vector Databases
# Example with Chroma (local development) import chromadb from chromadb.utils import embedding_functions # Initialize client = chromadb.Client() ef = embedding_functions.SentenceTransformerEmbeddingFunction( model_name="all-MiniLM-L6-v2" ) # Create collection collection = client.create_collection( name="documents", embedding_function=ef, metadata={"hnsw:space": "cosine"} ) # Add documents collection.add( documents=[ "Python is a programming language", "JavaScript runs in browsers", "Machine learning uses data to learn" ], metadatas=[ {"category": "programming"}, {"category": "programming"}, {"category": "ml"} ], ids=["doc1", "doc2", "doc3"] ) # Query with metadata filter results = collection.query( query_texts=["coding languages"], n_results=2, where={"category": "programming"} ) # Returns Python and JavaScript docs

Interactive Exercise

Design Your Vector DB Schema

You're building a RAG system for a documentation site. Design the schema:

- What vectors would you store?
- What metadata fields would you include?
- What filters might users need?

Pro Tips
  • Start with Chroma locally, migrate to managed for production
  • Store chunk text alongside vectors for easy retrieval
  • Include source metadata for citation/attribution
  • Test query latency with your expected data size

Related Terms