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

ЁЯЧ║я╕П рдзрдбрд╛ 01 тАФ Vector databases рдХрд╛: рдЕрд░реНрдерд╛рдиреБрд╕рд╛рд░ рд▓рд╛рд╡рд▓реЗрд▓реЗ рдЧреНрд░рдВрдерд╛рд▓рдп

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-text-to-vectors


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

Vector databases рдХреЛрдгрддрд╛ рдкреНрд░рд╢реНрди рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╣реЗрдд рддреЗ тАФ рдЖрдгрд┐ рдЖрддреНрддрд╛рдЪ рдЪрд╛рд▓рд╡рддрд╛ рдпреЗрдИрд▓ рдЕрд╕рд╛ рдПрдХ рдЦрд░рд╛ рдЫреЛрдЯрд╛ vector DB: vectordb/vectordb.py.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рд╢рд╛рд│реЗрдЪреНрдпрд╛ рдЧреНрд░рдВрдерд╛рд▓рдпрд╛рдд рд╢реЛрдзрд╛рдЪреА рдПрдХ рдЕрдбрдЪрдг рдЖрд╣реЗ. ЁЯУЪ Card catalog рдкреБрд╕реНрддрдХреЗ рд╢реАрд░реНрд╖рдХрд╛рддрд▓реНрдпрд╛ рдиреЗрдордХреНрдпрд╛ рд╢рдмреНрджрд╛рдВрд╡рд░реВрди рд╢реЛрдзрддреЗ. "рдкреНрд░рд╛рдгреНрдпрд╛рдВрд╢реА рджрдпрд╛рд│реВ рд╡рд╛рдЧрдгреНрдпрд╛рдмрджреНрджрд▓рдЪреА рдкреБрд╕реНрддрдХреЗ" рдорд╛рдЧрд┐рддрд▓реА рддрд░ catalog рд▓рд╛тАж рдХрд╛рд╣реАрдЪ рд╕рд╛рдкрдбрдд рдирд╛рд╣реА тАФ рдХрд╛рд░рдг рд╕рд░реНрд╡реЛрддреНрддрдо рдкреБрд╕реНрддрдХрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ "Every Living Thing". рдПрдХрд╣реА рд╢рдмреНрдж рд╕рд╛рд░рдЦрд╛ рдирд╛рд╣реА! рд╕рдЧрд│реА рдкреБрд╕реНрддрдХреЗ рд╡рд╛рдЪрд▓реЗрд▓реНрдпрд╛ рдЧреНрд░рдВрдердкрд╛рд▓рд╛рд▓рд╛ рдорд╛рд╣реАрдд рдЕрд╕рддреЗ рдХреА рд╣реЗрдЪ рдпреЛрдЧреНрдп рдкреБрд╕реНрддрдХ рдЖрд╣реЗ. Catalog рд▓рд╛ рддреЗ рдХрд│реВ рд╢рдХрдд рдирд╛рд╣реА: keywords strings рдЬреБрд│рд╡рддрд╛рдд, рдЕрд░реНрде рдирд╡реНрд╣реЗ.

рдЖрддрд╛ AI рд╢рд╛рд│реЗрддрд▓рд╛ рдмрд╕рдгреНрдпрд╛рдЪрд╛ hall рдЖрдард╡рд╛ (рддрд┐рдерд▓рд╛ рдзрдбрд╛ 04): рдкреНрд░рддреНрдпреЗрдХ text рд▓рд╛ рдЕрд░реНрдерд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреЗрдд (meaning-space) рдПрдХ рдЬрд╛рдЧрд╛ рдорд┐рд│реВ рд╢рдХрддреЗ тАФ рдЕрд╕реЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд┐рдереЗ рд╕рд╛рд░рдЦреЗ рдЕрд░реНрде рдПрдХрдореЗрдХрд╛рдВрдЪреНрдпрд╛ рдЬрд╡рд│ рдмрд╕рддрд╛рдд. рдЕрдЪрд╛рдирдХ search рдореНрд╣рдгрдЬреЗ рднреВрдорд┐рддреА рд╣реЛрддреЗ: рдкреНрд░рд╢реНрдирд╛рд▓рд╛ рдЬрд╛рдЧрд╛ рджреНрдпрд╛, рдЖрдЬреВрдмрд╛рдЬреВрд▓рд╛ рдкрд╛рд╣рд╛, рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреЗ рд╢реЗрдЬрд╛рд░реА рдкрд░рдд рджреНрдпрд╛. "рдкреНрд░рд╛рдгреНрдпрд╛рдВрд╢реА рджрдпрд╛рд│реВ" рд╣реЗ "Every Living Thing" рдЪреНрдпрд╛ рдЕрдЧрджреА рд╢реЗрдЬрд╛рд░реА рдмрд╕рддреЗ, рдПрдХрд╣реА рд╕рд╛рдорд╛рдпрд┐рдХ рд╢рдмреНрдж рд▓рд╛рдЧрдд рдирд╛рд╣реА.

Vector database рдореНрд╣рдгрдЬреЗ рдЦрд░реЛрдЦрд░ рдмрд╛рдВрдзрд▓реЗрд▓рд╛ рд╣рд╛ hall: рд▓рд╛рдЦреЛ рдЬрд╛рдЧрд╛ (vectors) рд╕рд╛рдард╡рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреНрдпрд╛ рдкрдЯрдХрди рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЬрд╛рдЧрд╛. рд╕рдВрдкреВрд░реНрдг product рдЗрддрдХреЗрдЪ:

  1. рдЧреЛрд╖реНрдЯреА рдЖрдд рдареЗрд╡рд╛, рдкреНрд░рддреНрдпреЗрдХреАрдЪреА рдЬрд╛рдЧрд╛ (рдЖрдгрд┐ рдХрд╛рд╣реА stickers ЁЯП╖я╕П тАФ metadata) рд╕реЛрдмрдд,
  2. рдирд╡реА рдЬрд╛рдЧрд╛ рджрд┐рд▓реА рдХреА рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреНрдпрд╛ k, рдкрдЯрдХрди рдкрд░рдд рджреНрдпрд╛,
  3. рдореЛрдареНрдпрд╛ scale рд╡рд░рд╣реА рд╡реЗрдЧрд╛рдиреЗ тАФ рдпреЛрдЧреНрдп index рд╕рд╣ тАФ рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рдЧреЗрд▓рд╛ рдПрдХреЗрдХ рдХрд░реВрди рди рд╡рд┐рдЪрд╛рд░рддрд╛.

рдмрд╛рдХреА рд╕рдЧрд│реЗ тАФ chunking, filters, indexes, RAG тАФ рд╣реЗ рдпрд╛ рддреАрди рдХрд╛рдорд╛рдВрдЪреЗрдЪ рд╕реБрдзрд╛рд░рдгреЗ рдЖрд╣реЗ, рдЖрдгрд┐ рд╣рд╛ course рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рд╢рд┐рдХрд╡рддреЛ.

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    q["тЭУ 'books about being<br/>kind to animals'"]
    subgraph kw["ЁЯУЗ keyword catalog"]
        k1["match exact words тЖТ<br/>'kind'? 'animals'? тАж<br/>тЭМ nothing found"]
    end
    subgraph vdb["ЁЯЧ║я╕П the meaning hall - vector DB"]
        s1["seat the question<br/>in meaning-space"]
        s2["find nearest seats"]
        s3["тЬЕ 'Every Living Thing'<br/>zero shared words!"]
        s1 --> s2 --> s3
    end
    q --> kw
    q --> vdb

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рдкреНрд░рддреНрдпреЗрдХ "рддреБрдордЪреНрдпрд╛ docs рд╢реА рдЧрдкреНрдкрд╛" product, рдпреЛрдЧреНрдп policy рд╢реЛрдзрдгрд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ support bot, рдкреНрд░рддреНрдпреЗрдХ "рд╕рд╛рд░рдЦреЗ issues" sidebar тАФ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреНрдпрд╛ рдЦрд╛рд▓реА vector DB рдЕрд╕рддреЛ. Models рдирдВрддрд░ рд╣рд╛ AI infrastructure рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд deploy рдЭрд╛рд▓реЗрд▓рд╛ рднрд╛рдЧ рдЖрд╣реЗ, рдЖрдгрд┐ models рдЪреНрдпрд╛ рдЙрд▓рдЯ, рддреЛ рддреБрдореНрд╣реА рдкреВрд░реНрдгрдкрдгреЗ рд╕рдордЬреВ рд╢рдХрддрд╛ тАФ рдЖрдкрд▓рд╛ рдлрдХреНрдд ~70 рдУрд│реАрдВрдЪрд╛ рдЖрд╣реЗ.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (60 рд╕реЗрдХрдВрдж)

python3 vectordb/demo.py

рд╢рд╛рд│реЗрдЪреЗ рд╕рд╛рдд documents index рдХреЗрд▓реЗрд▓реЗ, рддреАрди searches: рдХреНрд░рдорд╡рд╛рд░ рд▓рд╛рд╡рд▓реЗрд▓рд╛ рдЬрд╡рд│рдкрд╛рд╕-semantic hit, metadata рдиреЗ filter рдХреЗрд▓реЗрд▓рд╛ lookup, рдЖрдгрд┐ тАФ рд╕рд░реНрд╡рд╛рдд рд╢рд┐рдХрд╡рдгрд╛рд░реЗ тАФ "pupils" рдпрд╛ рд╕рдорд╛рдирд╛рд░реНрдереА рд╢рдмреНрджрд╛рд╡рд░рдЪреЗ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдЕрдкрдпрд╢. рддреЗрдЪ рдЕрдкрдпрд╢ рдзрдбрд╛ 02 рдЪрд╛ рдкрд╣рд┐рд▓рд╛ рдореБрджреНрджрд╛ рдЖрд╣реЗ. ЁЯШД

тПня╕П рдкреБрдвреЗ

Text рд▓рд╛ рдЬрд╛рдЧрд╛ рдХрд╢реА рдорд┐рд│рддреЗ: рд╢рдмреНрджрд╛рдВрдкрд╛рд╕реВрди vectors рдкрд░реНрдпрдВрдд тАФ рдЖрдгрд┐ рдЖрдкрд▓реНрдпрд╛ toy рдЪреЗ vectors рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдкрдг рдЬрд╡рд│рдЪреЗрдЪ рдкрд╛рд╣рдгрд╛рд░реЗ (nearsighted) рдХрд╛ рдЖрд╣реЗрдд.

git checkout lesson-02-text-to-vectors

ЁЯЧ║я╕П Lesson 01 тАФ Why vector databases: the library sorted by meaning

ЁЯУН You are here: Lesson 01 of 8 ┬╖ Next: lesson-02-text-to-vectors


ЁЯУж What's in this branch

The problem vector databases exist to solve тАФ and a real mini one you can run right now: vectordb/vectordb.py.

ЁЯзТ Explain like I'm 5

The school library has a search problem. ЁЯУЪ The card catalog finds books by exact title words. Ask for "books about being kind to animals" and the catalog findsтАж nothing тАФ because the best book is called "Every Living Thing". Not one shared word! The librarian who's read everything KNOWS it's the right book. The catalog can't know: keywords match strings, not meaning.

Now remember the AI school's seating hall (its lesson 04): every text can get a seat in meaning-space тАФ coordinates where similar meanings sit close together. Suddenly search becomes geometry: seat the question, look around, hand back the nearest neighbors. "Kind to animals" sits right next to "Every Living Thing", zero shared words needed.

A vector database is the hall built for real: a place to store millions of seats (vectors) and find the nearest ones fast. That's the whole product:

  1. put things in, each with its seat (and a few stickers ЁЯП╖я╕П тАФ metadata),
  2. given a new seat, return the k closest, quickly,
  3. fast at large scale тАФ with the right index тАФ without asking every seat one by one.

Everything else тАФ chunking, filters, indexes, RAG тАФ is refinement of those three jobs, and this course covers each.

ЁЯЧ║я╕П Diagram

flowchart LR
    q["тЭУ 'books about being<br/>kind to animals'"]
    subgraph kw["ЁЯУЗ keyword catalog"]
        k1["match exact words тЖТ<br/>'kind'? 'animals'? тАж<br/>тЭМ nothing found"]
    end
    subgraph vdb["ЁЯЧ║я╕П the meaning hall - vector DB"]
        s1["seat the question<br/>in meaning-space"]
        s2["find nearest seats"]
        s3["тЬЕ 'Every Living Thing'<br/>zero shared words!"]
        s1 --> s2 --> s3
    end
    q --> kw
    q --> vdb

тЭУ What

ЁЯдФ Why

Every "chat with your docs" product, every support bot that finds the right policy, every "similar issues" sidebar тАФ there's a vector DB underneath. It's the most-deployed piece of AI infrastructure after the models themselves, and unlike the models, you can understand one COMPLETELY тАФ ours is ~70 lines.

ЁЯзк Try it (60 seconds)

python3 vectordb/demo.py

Seven school documents indexed, three searches: a ranked semantic-ish hit, a metadata-filtered lookup, and тАФ most instructive тАФ an honest FAILURE on the synonym "pupils". That failure is lesson 02's opening argument. ЁЯШД

тПня╕П Next

How text becomes a seat: from words to vectors тАФ and why our toy's vectors are honest but nearsighted.

git checkout lesson-02-text-to-vectors
тЖР Course homeall lessonsNext тЖТtext to vectors

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