Lesson 52 — Intermediate

Vector Databases & ANN Search

Chhote corpus pe NumPy wala search chal jaata hai — par laakhon vectors aate hi brute force dheere padne lagta hai. Is lesson mein hum vectors ko database mein store karna, metadata filters ke saath top-k, ANN kyun zaroori hai, HNSW/IVF ke trade-offs, aur index ki daily operations dekhenge.

⏱ 30 min• Intermediate• Similarity & Semantic Search

Vector database kya hai

Kya hai?

Vector database (ya kisi normal DB ka vector extension) tables/collections mein vectors + text + metadata store karta hai, aur similarity search top-k query support karta hai — distance metric ke saath.

Kab kaam aata hai?

Jab corpus itna bada ho ki har query pe saare vectors compare karna slow ho, ya jab metadata filters (dept, date, language) ke saath search chahiye. RAG ka default retrieval layer yahi hota hai.

Kahan milta hai?

Postgres extensions (pgvector) mein, dedicated vector stores (Qdrant, Milvus, Weaviate) mein, aur kai search services ke andar. Tumhare stack mein jahan already DB hai wahan extension aksar kaafi hai.

Schema simple hai: id, text chunk, embedding, aur metadata columns. Ek query aati hai → embed hoti hai → distance ke hisaab se order hoti hai → top-k wapas. Jo tumne scratch search mein likha tha, wahi ab index aur optimized code karega.

Extension pehle: Naya vector store add karne se pehle poochho — kya tumhara existing database extension laga sakta hai? Ek hi system mein SQL + vectors = filters, joins, transactions sab free. Chhoti teams ke liye yehi sabse pragmatic entry point hai.

Store karna aur metadata filters ke saath search

CREATE TABLE chunks (
  id        bigserial PRIMARY KEY,
  doc_id    text NOT NULL,
  heading   text,
  body      text NOT NULL,
  embedding vector(768)
);

CREATE INDEX ON chunks USING hnsw (embedding vector_cosine_ops);

-- metadata filter + top-kSELECT id, doc_id, heading, body
FROM chunks
WHERE doc_id = $1
ORDER BY embedding <=> $2
LIMIT 5;
Hybrid stores: Aaj kal kai traditional databases vector search support kar rahe hain. Ye decision infra pe nahi, retrieval quality pe honi chahiye — pehle recall measure karo, phir store choose karo (M4.6 ka eval wahi kaam aayega).

Brute force kyun nahi chalta — ANN

import numpy as np

n, d = 1_000_000, 768
ops = n * d                      # har query pe: 10^8 multiply-adds
print(f"{ops:,} ops per query")
# bade corpus + har request = ANN ki zarurat
# ANN: thoda recall chhod ke tez (approximate nearest neighbor)

Brute force = exact: har vector compare, best guarantee. Par iska kharcha corpus ke saath linear badhta hai. ANN (Approximate Nearest Neighbor) index pehle se "kareeb wale" dhoondh leta hai — tez, par kabhi kabhi ek do asli neighbours chhoot sakte hain.

Pehle exact chalao: Chhote corpus (kuch hazar vectors) pe brute force aksar itna tez hai ki ANN ki zarurat hi nahi. ANN tab lagao jab latency ya memory pe pressure aaye — aur apne eval set pe recall check karke hi roll out karo.

HNSW aur IVF ke trade-offs

EXACT  : sab vectors compare     -> 100% recall, corpus ke saath dheere
HNSW   : layered graph walk      -> tez, RAM zyada, recall thoda chhota
IVF    : nearest clusters mein   -> tez, clustering quality matters

HNSW knobs : M (graph connectivity)  ef_search (query time depth)
IVF knobs  : nlist (clusters)        nprobe (kitne clusters scan)
Tuning ka tarika: Pehle ground truth banao (chhote sample pe brute force), phir ef_search/nprobe ka badha-ghatao ke saath recall vs latency curve nikaalo. Andhere mein default badalna = production mein silent quality drop.

Indexing, updates aur deletes

Reindex plan likh lo: Model upgrade, dimension change, ya metric switch — pehle din hi ek documented reindex script likh do. Zarurat padne pe sirf command chalani hogi, production mein aag nahi lagegi.

Exercise

Question: ANN ka full form kya hai?

Question: pgvector mein cosine distance wala operator kaunsa hai? (<=> / = / +)

Question: HNSW mein query ke waqt recall aur latency balance karne wala knob kaunsa hai?

Question: IVF index vectors ko pehle kis cheez mein baantta hai? (ek shabd)

Common mistakes

Desi example: Sabzi mandi ka naksha

Mandi mein har dukaan dhoondhna (brute force) tez hai chhoti mandi mein, par badi mandi mein ghanto lagte hain. ANN = mandi ka naksha: pehle mohalle ka block dekho, phir us block ki sadak. Kya pata ek dukaan chhoot jaaye, par aadhi mandi ka scan toh bacha:

text
brute force: 1,000,000 dukaan ek-ek puchho     -> exact, slow
HNSW naksha : graph pe walk  (ef_search)       -> tez, RAM
IVF mohalle : nearest blocks (nprobe)          -> tez, clustering

tumhara rule: chhoti mandi -> seedha; badi -> naksha + recall test
Interview angle — yahan se sawaal aate hain
  • Q: Exact aur ANN search ka farq? — Exact sab compare karta hai (100% recall), ANN index se kareeb ke dhoondhta hai (tez, thoda approximate).
  • Q: HNSW aur IVF kaise kaam karte hain? — HNSW layered small-world graph walk; IVF clustered partition, sirf nearest clusters scan.
  • Q: Speed-memory-recall teeno ek saath kaise? — Nahi ho sakta; knobs (ef_search/nprobe) se budget ke hisaab se balance chunta hai.
  • Q: Metadata filter ANN ke saath kaise lagta hai? — Pre-filter (exact, slow) ya post-filter (candidates ke baad), selectivity decide karti hai.
Lesson complete?

Vector DB aur ANN clear — store, filter, index aur operations ka poora picture aa gaya. Agla lesson — Sparse & Hybrid Retrieval — mein dekhenge keyword/BM25 kyun abhi bhi zinda hai aur RRF se fusion kaise hoti hai.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course