Jedinica 2 / 11

Logika ugradnje i vektorske baze podataka

Dobici:

  • Shvatite da ugrađivanje pretvara tekst u vektor u semantičkom prostoru, a slična značenja su bliski vektori
  • Objašnjavanje kako ANN pretraga radi s metrikom sličnosti kosinusa i tačaka
  • Odabir uobičajenih vektorskih baza podataka na osnovu cijene, obima i potrebe za filtriranjem metapodataka

U srcu RAG-a je jedno pitanje: "Koji je dio teksta najsličniji korisnikovom pitanju?" Računar obrađuje tekst sa brojevima, a ne doslovno. Zato moramo prvo tekst pretvoriti u brojeve koji nose njegovo značenje. To je ono što je ugrađivanje: proces pretvaranja teksta u niz brojeva (vektora) koji predstavlja značenje tog teksta. Kada završite ovu jedinicu, znat ćete kako funkcionira ugrađivanje, kako se mjeri sličnost i kako odabrati pravu vektorsku bazu podataka.

Ugrađivanje: Prevođenje značenja u koordinate

Model ugrađivanja (posebno obučena umjetna inteligencija) pretvara tekst koji navedete u vektor od, na primjer, 1024 broja. Zamislite ovaj vektor kao koordinatu u višedimenzionalnom prostoru. Magija je sledeća: tekstovi koji su slični po značenju padaju u bliske koordinate u ovom prostoru.

Jednostavan primjer: "godišnji odmor", "pravo na godišnji odmor" i "godišnji plaćeni odmor" koriste različite riječi, ali znače istu stvar - njihovi vektori su bliski jedan drugom. „Račun platnog spiska“ je druga stvar — njegov vektor je dalek. Dakle, korisnik pita "koliko dana godišnjeg odmora imam?" Kad pitate, čak možemo naći i dokument koji ne sadrži riječ "godišnji odmor" već kaže "godišnji odmor je 14 dana". To je ono što klasična pretraga ključnih riječi (pretraga koja se tačno podudara s riječi) ne može učiniti.

Savjet: Zamislite ugrađivanje kao „otisak prsta značenja“. Otisci prstiju dviju rečenica sa istim značenjem izgledaju slično; Čak i ako su riječi različite.

Važno pravilo: model koji koristite prilikom ugrađivanja pitanja trebao bi biti isti model koji koristite kada ugrađujete dokumente. Različiti modeli proizvode različite prostore; koordinate postaju neuporedive.

Kako izmjeriti sličnost?

Postoji nekoliko metoda za mjerenje koliko su dva vektora slična. Najčešća je kosinusna sličnost: ona mjeri ugao između dva vektora. Ako je ugao mali (vektori usmjereni u istom smjeru), sličnost je velika. Vrijednost je između −1 i 1; Blizu 1 = vrlo slično.

kriterijum

Šta to mjeri?

Kada se preferira?

Kosinus

Ugao (pravac) između vektora

Najčešći; zadana u semantičkoj sličnosti teksta

Dot product

Smjer + veličina zajedno

Ako su vektori normalizirani, to daje isti rezultat kao kosinus; je brz

Euklidska (euklidska udaljenost)

Ravna udaljenost između koordinata

U nekim scenarijima grupiranja; manje korišteno u tekstu

U praksi, većina modela ugrađivanja proizvodi normalizirane vektore (veličina postavljena na 1); U ovom slučaju kosinus i dot proizvod daju isti redoslijed. Nemojte biti paralizirani: počnite s kosinusom.

Među milionima vektora, poređenje jednog po jednog je sporo. Zato vektorske baze podataka koriste ANN (Approximate Nearest Neighbor) algoritme. ANN vrlo brzo pronalazi "skoro tačno najbliže", a ne "tačno najbliže". Na primjer, metoda nazvana HNSW može vratiti rezultate za nekoliko milisekundi čak i za 10 miliona vektora. Dobijate veliku brzinu za malu žrtvu tačnosti.

Šta radi vektorska baza podataka?

Vektorska baza podataka radi tri stvari odjednom: (1) pohranjuje vektore, (2) brzo pronalazi vektore najsličnije vektoru upita, (3) filtrira prema metapodacima pored svakog vektora. Metapodaci su oznake koje prilažete tom komadu: izvorni fajl, datum, odjel, nivo privatnosti, itd. Filtriranje metapodataka je kritično u RAG-u preduzeća; jer morate biti u mogućnosti da postavite ograničenja kao što je "traži samo u dokumentima odjela za finansije za 2025. godinu".

# Registrujte se u vektorsku bazu (konceptualno)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Godišnji plaćeni odmor je 14 dana..."), text="Godišnji plaćeni odmor je 14 dana...", metadata={"izvor": "ik_el_kitabi.pdf", "department": "IK", "da25": "IK", "odjel": "06 "privatnost": "ic"})

# Metapodaci filtrirana pretraga (konceptualni) rezultat = vektor_db.search( vektor=embed("koliko dana odsustva imam?"), top_k=4, filter={"odjel": "HR", "privatnost": ["interno", "uključeno"]})

Odabir prave baze podataka

vozilo

Istaknuti aspekt

Odgovarajuća situacija

Ugrađeni / bazirani na fajlovima (ugrađena biblioteka)

Bez instalacije, jedna mašina

Prototip, mali komplet (< nekoliko stotina hiljada delova)

Upravljana usluga u oblaku

Skaliranje i održavanje nisu vaša odgovornost

Proizvodnja, brzo rastući podaci, mali tim

Otvoreni kod na vlastitom serveru

Potpuna kontrola, vaši podaci ostaju vaši

Obaveza privatnosti, postojeća infrastruktura

Dodavanje postojećoj bazi podataka

Ne upravljate odvojenim sistemima

Dodavanje vektorske podrške u DB koji već koristite

Pitajte pri odabiru: Koliko će biti komada? Koliko je kritično filtriranje metapodataka? Mogu li podaci ići izvan kompanije (povjerljivost)? Može li tim upravljati infrastrukturom? Često je pametno započeti s malim i proširiti po potrebi.

Slab pristup / Jaki pristup

Slabo (pohranjivanje običnog ugrađivanja, bez metapodataka):

Samo sačuvajte tekst i vektor. Pretraži: vrati 4 najsličnija vektora.# Problem: ne može se filtrirati kao "samo trenutni HR dokumenti";# stari/neovlašteni dijelovi također mogu biti uključeni u odgovor.

Moćan (bogati metapodaci + filtrirana pretraga):

Dodajte izvor, datum, odjel i oznaku privatnosti svakom komadu. Filtrirajte prema autoritetu i aktuelnosti korisnika tokom pretrage: filter = {"privacy": user_authority, "date_date": "2024-01"}# Dakle, rezultat je siguran i ažuran.

Tri mini futrole

Slučaj 1 — Pogrešna kombinacija modela. Tim je ugradio dokumente sa modelom A i pitanja sa modelom B. Pretrage su dale besmislene rezultate, a stopa tačnih odgovora je ostala na 31%. Kada sam prešao na jedan model (oba isti model ugradnje), stopa je skočila na 88%. Lekcija: pitanje i dokument treba da budu u istom prostoru.

Slučaj 2 — Rizik privatnosti bez metapodataka. U zdravstvenoj kompaniji, svi dokumenti odjela su bačeni u jedan bazen bez metapodataka. Kada je prodajni saradnik postavio pitanje, sistem je kontekstualizirao dio podataka o pacijentu. Kada su dodani metapodaci + filter (prema nivou autorizacije), ovaj rizik je eliminisan; Prilikom preuzimanja 12 neovlaštenih komada se uopće ne donosi.

Slučaj 3 — Usko grlo skale. Kompanija za e-trgovinu pretražila je 8 miliona opisa proizvoda jednostavnom metodom "skeniraj sve"; Svaki upit je trajao 6 sekundi. Kada smo prešli na ANN baziran na HNSW-u, vrijeme se smanjilo na 45 milisekundi, sa samo 1% gubitka u preciznosti. Lekcija: ANN je obavezna u velikom skupu.

Uobičajene greške

  • Ugrađivanje pitanja i dokumenta sa različitim modelima: Rezultati su besmisleni; uvek jedan model.
  • Preskakanje metapodataka: Ne možete filtrirati; Gubite kontrolu nad privatnošću i ažurnošću.
  • Greška ugrađivanja za enkripciju: Ugrađivanje nosi povratne informacije; Pogrešno je pretpostaviti da su osjetljivi podaci "skriveni".
  • Izgradnja nepotrebno velike infrastrukture na malom skupu: gigantski klaster kojim se upravlja za 5.000 dijelova je nepotrebna složenost.
  • Ne brinite previše o kriteriju sličnosti: Počnite s kosinusom u tekstu; Fino podešavanje dolazi kasnije.
Oprez: Ugrađivanje ugrađuje značenje teksta u brojeve, ali ne "uništava" sadržaj. Ako procuri vektorska baza podataka, originalni pohranjeni tekstovi (u većini instalacija i tekst je također pohranjen) su također ugroženi. Držite vektorsko spremište povjerljivo kao i dokumente u njemu.

Ukratko

  • Ugrađivanje pretvara tekst u vektor brojeva koji nosi svoje značenje; Slična značenja su bliski vektori.
  • Sličnost se često mjeri kosinusom; Za normalizirane vektore, tačkasti proizvod daje isti rezultat.
  • U velikim podacima, ANN (npr. HNSW) zamjenjuje egzaktno pretraživanje: velika brzina uz malo žrtvovanja tačnosti.
  • Vektorska baza podataka obavlja vektorsko skladištenje + pretraživanje sličnosti + filtriranje metapodataka; metapodaci su neophodni za RAG preduzeća.
  • Pitanje i dokument moraju biti prevedeni istim modelom ugradnje; inače se koordinate ne mogu porediti.

Zadatak aplikacije

Izdvojite 10 kratkih pasusa (po 3-6 rečenica) iz dokumenta koji ste odabrali u prethodnoj jedinici. (1) Dizajnirajte najmanje tri oznake metapodataka za svaki komad (izvor, datum i treću koja odgovara vašem poslovnom kontekstu: odjel, proizvod, privatnost, itd.). (2) Napišite koji filter metapodataka treba primijeniti za 3 različita korisnička pitanja. (3) Pronađite 3 para dijela pitanja koji izražavaju isto značenje u različitim riječima (npr. "pravo na godišnji odmor" ↔ "godišnji odmor") i objasnite u jednoj rečenici zašto se neće podudarati s pretraživanjem ključnih riječi, ali će se podudarati s ugradnjom.

kontrolna lista

  • [ ] Mogu reći da ugrađivanje pretvara tekst u vektor u semantičkom prostoru i slična su značenja bliska.
  • Znam da [ ] kosinusna sličnost mjeri ugao i da je zadana postavka u tekstu.
  • [ ] Mogu objasniti zašto je ANN neophodna u velikim podacima.
  • [ ] Znam zašto su metapodaci kritični za kontrolu povjerljivosti i ažuriranosti.
  • [ ] Pratim pravilo prevođenja pitanja i dokumenta sa istim modelom ugradnje.