Dobici:
- Shvatite da ugrađivanje pretvara tekst u vektor u semantičkom prostoru i da su slična značenja bliski vektori
- Objašnjavanje kako ANN pretraživanje radi s metrikom sličnosti kosinusa i točke
- Odabir uobičajenih vektorskih baza podataka na temelju cijene, veličine i potrebe za filtriranjem metapodataka
U srcu RAG-a je jedno pitanje: "Koji je dio teksta najsličniji korisnikovom pitanju?" Računalo obrađuje tekst s brojevima, a ne doslovno. Zato tekst prvo trebamo pretvoriti u brojeve koji nose njegovo značenje. To je ono što je ugrađivanje: proces pretvaranja teksta u niz brojeva (vektor) 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 za ugradnju (posebno obučena umjetna inteligencija) pretvara tekst koji date u vektor od, na primjer, 1024 broja. Zamislite ovaj vektor kao koordinatu u višedimenzionalnom prostoru. Čarolija je u ovome: 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 "plaćeni godišnji dopust" koriste različite riječi, ali znače istu stvar - njihovi vektori su blizu jedan drugome. „Platni račun“ je druga stvar — njegov vektor je dalek. Dakle, korisnik pita "koliko dana godišnjeg odmora imam?" Kad već pitate, možemo pronaći i dokument u kojem nema riječi "godišnji odmor" nego stoji "godišnji odmor je 14 dana". To je ono što klasična pretraga ključnih riječi (pretraga koja točno odgovara riječi) ne može.
Savjet: Zamislite ugrađivanje kao "otisak prsta značenja". Otisci dviju rečenica s istim značenjem izgledaju slično; Čak i ako su riječi različite.
Važno pravilo: model koji koristite pri ugrađivanju pitanja treba biti isti model koji koristite pri ugrađivanju dokumenata. Različiti modeli stvaraju različite prostore; koordinate postaju neusporedive.
Kako izmjeriti sličnost?
Postoji nekoliko metoda za mjerenje koliko su dva vektora slična. Najčešća je kosinusna sličnost: mjeri kut između dva vektora. Ako je kut mali (vektori koji pokazuju u istom smjeru), sličnost je velika. Vrijednost je između −1 i 1; Blizu 1 = vrlo slično.
kriterij
Što mjeri?
Kada se preferira?
Kosinus
Kut (smjer) između vektora
Najčešći; zadana u tekstu semantička sličnost
Točkasti proizvod
Smjer + veličina zajedno
Ako su vektori normalizirani, to daje isti rezultat kao kosinus; je brz
Euklid (euklidska udaljenost)
Ravna udaljenost između koordinata
U nekim scenarijima klasteriranja; manje se koristi u tekstu
U praksi, većina modela ugrađivanja proizvodi normalizirane vektore (veličina postavljena na 1); U ovom slučaju kosinus i točkasti umnožak daju isti redoslijed. Nemojte biti paralizirani u odlučivanju: počnite s kosinusom.
Među milijunima vektora, njihova usporedba jednog po jednog je spora. Zato vektorske baze podataka koriste ANN (Approximate Nearest Neighbor) algoritme. ANN vrlo brzo pronalazi "gotovo najbliže" umjesto "točno najbliže". Na primjer, metoda nazvana HNSW može vratiti rezultate u nekoliko milisekundi čak i za 10 milijuna vektora. Dobivate veliku brzinu za malu žrtvu točnosti.
Što 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 pridajete tom dijelu: izvorna datoteka, datum, odjel, razina privatnosti, itd. Filtriranje metapodataka ključno je u poslovnom RAG-u; jer morate biti u mogućnosti postaviti ograničenja kao što je "pretraži samo u dokumentima Odjela za financije 2025".
# Registrirajte se u vektorskoj bazi podataka (konceptualno)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Plaćeno godišnje odsustvo je 14 dana..."), text="Plaćeno godišnje odsustvo je 14 dana...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK", "date": "2025-06", "privatnost": "ic"})
# Metadata filtered search (conceptual)result = vektor_db.search( vektor=embed("koliko dana dopusta imam?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Odabir prave baze podataka
vozilo
Istaknuti aspekt
Prikladna situacija
Ugrađeno / temeljeno na datotekama (ugrađena biblioteka)
Bez instalacije, jedan stroj
Prototip, mali komplet (< nekoliko stotina tisuća dijelova)
Upravljana usluga u oblaku
Skaliranje i održavanje nije vaša odgovornost
Proizvodnja, brzo rastući podaci, mali tim
Otvoreni kod na vlastitom poslužitelju
Potpuna kontrola, vaši podaci ostaju vaši
Obaveza privatnosti, postojeća infrastruktura
Dodatak postojećoj bazi podataka
Ne upravljate odvojenim sustavima
Dodavanje vektorske podrške u DB koji već koristite
Pitajte pri odabiru: Koliko će komada biti? Koliko je kritično filtriranje metapodataka? Mogu li podaci izaći izvan tvrtke (povjerljivost)? Može li tim upravljati infrastrukturom? Često je mudro započeti s malim i proširivati prema potrebi.
Slab pristup / Jak pristup
Slab (pohranjivanje običnog ugrađivanja, bez metapodataka):
Samo spremite tekst i vektor. Pretraživanje: vrati 4 najsličnija vektora. # Problem: ne može filtrirati kao "samo trenutni HR dokumenti"; # stari/neovlašteni dijelovi također mogu biti uključeni u odgovor.
Snažan (bogati metapodaci + filtrirano pretraživanje):
Svakom dijelu dodajte izvor, datum, odjel i oznaku privatnosti. Filtrirajte prema autoritetu i aktualnosti korisnika tijekom pretraživanja: filter = {"privacy": user_authority, "date_date": "2024-01"}# Dakle, rezultat je siguran i ažuran.
Tri mini kućišta
Slučaj 1 — Pogrešna kombinacija modela. Tim je ugradio dokumente s modelom A i pitanja s modelom B. Pretraživanje je vratilo besmislene rezultate, a stopa točnih odgovora ostala je na 31%. Kad sam se prebacio na jedan model (oba isti model ugradnje), stopa je skočila na 88%. Lekcija: pitanje i dokument trebaju biti u istom prostoru.
Slučaj 2 — rizik privatnosti bez metapodataka. U zdravstvenoj tvrtki svi dokumenti odjela bačeni su u jedan bazen bez metapodataka. Kada je prodajni suradnik postavio pitanje, sustav je kontekstualizirao dio podataka o pacijentu. Kada su dodani metapodaci + filter (prema razini autorizacije), ovaj rizik je eliminiran; U preuzimanje se uopće ne donosi 12 neovlaštenih komada.
Slučaj 3 — Usko grlo skale. Tvrtka za e-trgovinu pretražila je 8 milijuna opisa proizvoda jednostavnom metodom "skeniraj sve"; Svaki upit je trajao 6 sekundi. Kada smo se prebacili na ANN baziran na HNSW-u, vrijeme se smanjilo na 45 milisekundi, sa samo 1% gubitka u točnosti. Lekcija: ANN je obavezan u velikom skupu.
Uobičajene greške
- Ugrađivanje pitanja i dokumenta s različitim modelima: Rezultati su besmisleni; uvijek jedan model.
- Preskakanje metapodataka: ne možete filtrirati; Gubite kontrolu nad privatnošću i ažurnošću.
- Zamjena ugradnje za enkripciju: ugradnja nosi povratne informacije; Pogrešno je pretpostaviti da su osjetljivi podaci "skriveni".
- Izgradnja nepotrebno velike infrastrukture na malom skupu: divovski klaster kojim se upravlja s 5000 dijelova nepotrebna je složenost.
- Ne brinite previše o kriteriju sličnosti: Počnite s kosinusom u tekstu; Fino podešavanje dolazi kasnije.
Oprez: Ugradnja ugrađuje značenje teksta u brojeve, ali ne "uništava" sadržaj. Ako vektorska baza podataka procuri, izvorno pohranjeni tekstovi (u većini instalacija tekst je također pohranjen) također su ugroženi. Držite vektorski repozitorij povjerljivim 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 točkasti produkt daje isti rezultat.
- U velikim podacima, ANN (npr. HNSW) zamjenjuje točno pretraživanje: velika brzina uz malo žrtvovanja točnosti.
- Vektorska baza podataka vrši pohranu vektora + pretraživanje sličnosti + filtriranje metapodataka; metapodaci su bitni za poslovni RAG.
- Pitanje i dokument moraju biti prevedeni s istim modelom ugradnje; inače se koordinate ne mogu uspoređivati.
Zadatak aplikacije
Izdvojite 10 kratkih odlomaka (3-6 rečenica svaki) iz dokumenta koji ste odabrali u prethodnoj cjelini. (1) Osmislite najmanje tri oznake metapodataka za svaki dio (izvor, datum i treću koja odgovara vašem poslovnom kontekstu: odjel, proizvod, privatnost itd.). (2) Napišite koji filtar metapodataka treba primijeniti za 3 različita korisnička pitanja. (3) Pronađite 3 para pitanja koja 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 neće odgovarati pretraživanju ključnih riječi, ali će odgovarati ugrađivanju.
popis za provjeru
- [ ] Mogu reći da ugrađivanje pretvara tekst u vektor u semantičkom prostoru i da su slična značenja bliska.
- Znam da [ ] kosinusna sličnost mjeri kut i da je zadana postavka u tekstu.
- [ ] Mogu objasniti zašto je ANN neophodan u velikim podacima.
- [ ] Znam zašto su metapodaci ključni za kontrolu povjerljivosti i svježine.
- [ ] Slijedim pravilo prevođenja pitanja i dokumenta s istim modelom ugradnje.