ЁЯПл The SchoolтА║ЁЯЧ║я╕П Vector DatabasesтА║ЁЯПм рдзрдбрд╛ 08 тАФ Landscape: рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА vector database рдирд┐рд╡рдбрдгреЗ
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯПм рдзрдбрд╛ 08 тАФ Landscape: рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА vector database рдирд┐рд╡рдбрдгреЗ

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 08 тАФ рд╢реЗрд╡рдЯрдЪрд╛ рдзрдбрд╛!


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рд╕рдВрдкреВрд░реНрдг course, рдЖрдгрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ products рдЪрд╛ рдирдХрд╛рд╢рд╛ рдЖрдгрд┐ рдирд┐рд╡рдбреАрдЪреЗ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рди тАФ рддреБрд▓рдирд╛рддреНрдордХ cards рд╕рд╣ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдиреЗ ЁЯМР landscape рдкрд╛рдирд╛рд╡рд░.

ЁЯзТ рдХреБрдЯреБрдВрдмреЗ, рд╢рд╛рд│реЗрдЪреНрдпрд╛ рднрд╛рд╖реЗрдд

ЁЯзн рдирд┐рд╡рдбреАрдЪрд╛ flowchart (рд░рд╣рд╕реНрдп рдлреЛрдб: рд╕рд╣рд╕рд╛ pgvector)

  1. Corpus рдПрдХрд╛ Postgres рдордзреНрдпреЗ рдорд╛рд╡рддреЛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛рдХрдбреЗ Postgres рдЖрд╣реЗ тЖТ pgvector.
  2. Prototype/notebook, рд╢реВрдиреНрдп setup рд╣рд╡рд╛ тЖТ Chroma/LanceDB embedded.
  3. рдЧрдВрднреАрд░ scale (рдХреЛрдЯреНрдпрд╡рдзреА+, рдХрдбрдХ latency, filtered ANN) рдЖрдгрд┐ ops рдЪреА рдЗрдЪреНрдЫрд╛ рдирд╛рд╣реА тЖТ managed (Pinecone-class).
  4. рддреЛрдЪ scale рдЖрдгрд┐ ops рдЪреА рдЗрдЪреНрдЫрд╛ (рдЖрдгрд┐ k8s рд╢рд╛рд│рд╛ рдкреВрд░реНрдг рдХреЗрд▓реЗрд▓реА тШ╕я╕П) тЖТ Qdrant/Weaviate self-hosted.
  5. рд╕реНрд╡рддрдГрдЪреЗ engine / рд╕рдВрд╢реЛрдзрди тЖТ FAISS/hnswlib.
  6. рдПрдХреВрдг ~100k рдкреЗрдХреНрд╖рд╛ рдХрдореА vectors? Brute-force loop (рдЖрдкрд▓рд╛ toy + рдЦрд░рд╛ embedder) рдЦрд░реЛрдЦрд░ рдкреБрд░реЗрд╕рд╛ рдЖрд╣реЗ тАФ рдПрдХрд╛ рд╡рд░реНрдЧрд╛рд╕рд╛рдареА hall рд╡рд┐рдХрдд рдШреЗрдК рдирдХрд╛. ЁЯШД

тЭУ рдЦрд░рд╛ рдлрд░рдХ рджрд╛рдЦрд╡рдгрд╛рд░реЗ рдкреНрд░рд╢реНрди (рд╣реЗ рд╡рд┐рдЪрд╛рд░рд╛, "рддреЛ рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ рдХрд╛" рдирд╛рд╣реА)

ЁЯдФ рдХрд╛

рдЫреЛрдЯреНрдпрд╛ teams рд╕рд╛рдареА vector DB рдЪреА рдирд┐рд╡рдб рд╣реЗ рджреЛрдиреНрд╣реА рдмрд╛рдЬреВрдВрдиреА рдЙрдШрдбрдгрд╛рд░реЗ рджрд╛рд░ рдЖрд╣реЗ (stores рдмрджрд▓рдгреЗ рд╕реЛрдкреЗ тАФ L05 рдордзреНрдпреЗ рд╢рд┐рдХрд▓реЗрд▓реНрдпрд╛ embedder рд╕реАрдореЗрдореБрд│реЗ vectors рд╕рд╣рдЬ рд╣рд▓рд╡рддрд╛ рдпреЗрддрд╛рдд) рдЖрдгрд┐ scale рд╡рд░ рдЬрд╡рд│рдкрд╛рд╕ рдПрдХрд╛рдЪ рдмрд╛рдЬреВрдиреЗ рдЙрдШрдбрдгрд╛рд░реЗ рджрд╛рд░ (data рдЪреЗ рдЧреБрд░реБрддреНрд╡). рдХрдВрдЯрд╛рд│рд╡рд╛рдгреНрдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛, retrieval рдЪрд╛ рджрд░реНрдЬрд╛ рдореЛрдЬрд╛ (L06 рдЪреЗ golden questions), рдЖрдгрд┐ upgrades benchmarks рдореБрд│реЗ рдирд╡реНрд╣реЗ рддрд░ рдЦрд▒реНрдпрд╛ рдЕрдбрдерд│реНрдпрд╛рдВрдореБрд│реЗ рд╣реЛрдК рджреНрдпрд╛.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ тАФ engine рдмрджрд▓реВрди рдкрджрд╡реА рдорд┐рд│рд╡рд╛

рдзрдбрд╛ 07 рдЪреА RAG script рдШреНрдпрд╛ рдЖрдгрд┐ рддреА рдЦрд▒реНрдпрд╛ store рдХрдбреЗ рд╡рд│рд╡рд╛:

# pgvector (if you have Postgres):   CREATE EXTENSION vector;
#   store: INSERT ... embedding vector(256);  search: ORDER BY embedding <=> $1 LIMIT 3
# or Chroma (pip install chromadb):  3 lines: client, collection.add, collection.query
# keep OUR embed() first тАФ then swap embed() for a real model and
# watch 'pupils' finally find 'students'. Both swaps, independently. ЁЯОУ

ЁЯОУ Hall рдЖрддрд╛ рддреБрдордЪрд╛ рдЖрд╣реЗ

рдЕрд░реНрде рдореНрд╣рдгрдЬреЗ рдЬрд╛рдЧрд╛ тЖТ рдЬрд╛рдЧрд╛ рдореНрд╣рдгрдЬреЗ рдЖрдХрдбреЗ тЖТ similarity рдореНрд╣рдгрдЬреЗ рджрд┐рд╢рд╛ тЖТ scale рд╡рд░ рд╢реЗрдЬрд╛рд░реА тЖТ рддреБрдореНрд╣реА рд╡рд╛рдЪрд▓реЗрд▓рд╛ database тЖТ рдХрд╛рддреНрд░реА рдЖрдгрд┐ stickers тЖТ open-book pipeline тЖТ products рдЪрд╛ рдирдХрд╛рд╢рд╛. рдЖрддрд╛ рддреБрдореНрд╣реА рдЫреЛрдЯрд╛ vector DB рд╕реНрд╡рддрдГ рдмрдирд╡реВ рд╢рдХрддрд╛, рдореЛрдард╛ рд╡рд┐рдХрдд рдШреЗрдК рд╢рдХрддрд╛, рджреЛрдиреНрд╣реА debug рдХрд░реВ рд╢рдХрддрд╛ тАФ рдЖрдгрд┐ рдХреЛрдгрд╛рд▓рд╛рд╣реА рдиреЗрдордХреЗ рд╕рдордЬрд╛рд╡реВ рд╢рдХрддрд╛ рдХреА рддреНрдпрд╛рдВрдиреА рдХрд╛рдп рд╡рд┐рдХрдд рдШреЗрддрд▓реЗ. ЁЯЧ║я╕ПЁЯОУ

git checkout main
python3 vectordb/demo.py     # one last search, for fun

ЁЯПм Lesson 08 тАФ The landscape: picking a vector database for real

ЁЯУН You are here: Lesson 08 of 8 тАФ the final lesson!


ЁЯУж What's in this branch

The complete course, plus the map of actual products and an honest picking guide тАФ expanded with comparison cards on ЁЯМР the landscape page.

ЁЯзТ The families, in school words

ЁЯзн The picking flowchart (spoiler: it's usually pgvector)

  1. Corpus fits in one Postgres and you HAVE Postgres тЖТ pgvector.
  2. Prototype/notebook, want zero setup тЖТ Chroma/LanceDB embedded.
  3. Serious scale (tens of millions+, strict latency, filtered ANN) and no ops appetite тЖТ managed (Pinecone-class).
  4. Same scale WITH ops appetite (and the k8s school under your belt тШ╕я╕П) тЖТ Qdrant/Weaviate self-hosted.
  5. Building your own engine / research тЖТ FAISS/hnswlib.
  6. Under ~100k vectors total? A brute-force loop (our toy + a real embedder) is genuinely fine тАФ don't buy a hall for a classroom. ЁЯШД

тЭУ The questions that actually differentiate (ask these, not "is it fast")

ЁЯдФ Why

Vector DB choice is a two-way door for small teams (swapping stores is easy тАФ the embedder boundary you learned in L05 makes vectors portable) and a one-way-ish door at scale (data gravity). Start boring, measure retrieval quality (L06's golden questions), and let real bottlenecks тАФ not benchmarks тАФ trigger upgrades.

ЁЯзк Try it тАФ graduate by swapping the engine

Take lesson 07's RAG script and re-point it at a real store:

# pgvector (if you have Postgres):   CREATE EXTENSION vector;
#   store: INSERT ... embedding vector(256);  search: ORDER BY embedding <=> $1 LIMIT 3
# or Chroma (pip install chromadb):  3 lines: client, collection.add, collection.query
# keep OUR embed() first тАФ then swap embed() for a real model and
# watch 'pupils' finally find 'students'. Both swaps, independently. ЁЯОУ

ЁЯОУ The hall is yours

Meaning as seats тЖТ seats as numbers тЖТ similarity as direction тЖТ neighbors at scale тЖТ a database you READ тЖТ scissors and stickers тЖТ the open-book pipeline тЖТ the product map. You can now build a small one, buy a big one, debug either тАФ and explain to anyone exactly what they bought. ЁЯЧ║я╕ПЁЯОУ

git checkout main
python3 vectordb/demo.py     # one last search, for fun
тЖР Previousrag wiringFinished! Take the quiz тЖТcheck what stuck

This page is the lesson's README from the lesson-08-landscape branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.