Stop 14 · Retrieval-Augmented Generation & Vector DatabasesTopics · 2/9

Vector Databases (Pinecone, Chroma, Weaviate, FAISS)

Part of the AI Engineer Roadmap

In short

Comparing a query against 50 vectors is easy. Against 50 million, you need a system built for it. Vector databases store embeddings and find the nearest ones fast, along with filters and metadata.

Databases optimized for storing and searching high-dimensional embedding vectors at scale — the storage layer every real RAG system is built on.

The blob shopkeeper pulls open three neighbouring drawers from a tall cabinet of small drawers.

Think of it like this

The kirana shop drawers

A kirana uncle has hundreds of little drawers, and similar items live side by side. Ask for 'something like jeera' and he opens the nearby drawers without checking every one. A vector database organises embeddings so it only searches the right neighbourhood.

Watch it happen

Common options and what they are

Vector search
Library
Open-source DB
Managed cloud
FAISS
Chroma
Weaviate
Pinecone

1/5All of these store vectors and answer 'which stored vectors are closest to this one?'

The big ideas

What you need to know

Approximate nearest neighbours

ANN indexes like HNSW skip most comparisons and return very close matches fast, trading a little accuracy for big speed.

Metadata filters

Store fields like department, date or user id with each vector, and filter before or during search.

Postgres can do it too

The pgvector extension adds vector search to PostgreSQL, handy if your app already uses it.

Choose by stage

Prototype with Chroma or FAISS. For production, weigh hosting effort, scale, filtering and cost.

See it in code

Walk through the code

python
1# pip install chromadb2import chromadb3 4client = chromadb.PersistentClient(path="./db")5notes = client.get_or_create_collection("notes")6 7notes.add(8    ids=["n1", "n2", "n3"],9    documents=["Lab exams start on 2 Dec", "Library closes at 10 pm", "Fest auditions on Friday"],10    metadatas=[{"type": "exam"}, {"type": "campus"}, {"type": "event"}],11)12 13res = notes.query(query_texts=["when is the practical exam?"], n_results=2)14print(res["documents"][0])

1/3A persistent client saves data to a folder so it survives restarts.

Chroma embeds documents with a default model, stores them on disk and returns the nearest matches.

Save yourself the pain

Common mistakes

Oops

Spinning up a cloud vector DB for 500 documents.

Do this instead

Small collections fit in memory with FAISS or Chroma. Add infrastructure only when you need it.

Oops

Storing only vectors, with no original text or source info.

Do this instead

Keep the chunk text, source file and page number as metadata, so you can show and cite results.

Your mission

A notes search box

~30 min

Quick check

Why do vector databases use approximate nearest neighbour indexes?

Go deeper

  1. 1Set up a local vector store (Chroma or FAISS) and index a small document set.
  2. 2Learn the trade-offs between a managed service (Pinecone) and self-hosted options.
  3. 3Understand indexing strategies (HNSW, IVF) at a conceptual level.

More topics at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge