Pelnas:
- Supraskite, kad įterpimas paverčia tekstą vektoriumi semantinėje erdvėje ir panašios reikšmės yra artimi vektoriai
- Paaiškinimas, kaip ANN paieška veikia naudojant kosinuso ir taško panašumo metriką
- Įprastų vektorinių duomenų bazių pasirinkimas pagal kainą, mastą ir metaduomenų filtravimo poreikį
RAG esmė yra vienas klausimas: "Kokia teksto dalis yra labiausiai panaši į vartotojo klausimą?" Kompiuteris apdoroja tekstą su skaičiais, o ne pažodžiui. Štai kodėl pirmiausia turime paversti tekstą skaičiais, turinčiais jo reikšmę. Štai kas yra įterpimas: teksto konvertavimo į skaičių seką (vektorių), atspindinčią to teksto reikšmę. Baigę šį įrenginį žinosite, kaip veikia įterpimas, kaip matuojamas panašumas ir kaip pasirinkti tinkamą vektorinę duomenų bazę.
Įterpimas: reikšmės vertimas į koordinates
Įterpimo modelis (specialiai apmokytas dirbtinis intelektas) paverčia jūsų pateiktą tekstą į, pavyzdžiui, 1024 skaičių vektorių. Pagalvokite apie šį vektorių kaip koordinatę daugiamatėje erdvėje. Magija yra tokia: tekstai, kurių prasmė yra panaši, šioje erdvėje patenka į artimas koordinates.
Paprastas pavyzdys: „kasmetinės atostogos“, „teisė atostogauti“ ir „kasmetinės mokamos atostogos“ vartoja skirtingus žodžius, bet reiškia tą patį – jų vektoriai yra arti vienas kito. „Darbo užmokesčio sąskaita“ yra kitas dalykas – jos vektorius yra tolimas. Taigi vartotojas klausia "kiek dienų atostogų turiu?" Paklausus galime rasti net dokumentą, kuriame nėra žodžio „atostogos“, o parašyta „kasmetinės atostogos yra 14 dienų“. To negali atlikti klasikinė raktinių žodžių paieška (paieška, kuri tiksliai atitinka žodį).
Patarimas: pagalvokite apie įterpimą kaip „prasmės piršto atspaudą“. Dviejų tos pačios reikšmės sakinių pirštų atspaudai atrodo panašūs; Net jei žodžiai skiriasi.
Svarbi taisyklė: modelis, kurį naudojate įdėdami klausimą, turi būti tas pats modelis, kurį naudojate įdėdami dokumentus. Skirtingi modeliai sukuria skirtingas erdves; koordinatės tampa nepalyginamos.
Kaip išmatuoti panašumą?
Yra keletas būdų, kaip išmatuoti dviejų vektorių panašumą. Labiausiai paplitęs yra kosinuso panašumas: jis matuoja kampą tarp dviejų vektorių. Jei kampas mažas (vektoriai nukreipti ta pačia kryptimi), panašumas didelis. Reikšmė yra nuo –1 iki 1; Beveik 1 = labai panašus.
kriterijus
Ką tai matuoja?
Kada teikiama pirmenybė?
Kosinusas
Kampas (kryptis) tarp vektorių
Labiausiai paplitęs; numatytasis teksto semantinis panašumas
Taškinis produktas
Kryptis + dydis kartu
Jei vektoriai normalizuoti, tai duoda tą patį rezultatą kaip kosinusas; yra greitas
Euklidinis (euklidinis atstumas)
Tiesus atstumas tarp koordinačių
Kai kuriuose klasterizacijos scenarijuose; rečiau naudojamas tekste
Praktiškai dauguma įterpimo modelių sukuria normalizuotus vektorius (dydis nustatytas į 1); Šiuo atveju kosinuso ir taško sandauga pateikia tą pačią tvarką. Nebūkite paralyžiuotas sprendimas: pradėkite nuo kosinuso.
Tarp milijonų vektorių lyginti juos po vieną yra lėta. Štai kodėl vektorinės duomenų bazės naudoja ANN (Approximate Nearest Neighbor) algoritmus. ANN labai greitai suranda „beveik tiksliai artimiausią“, o ne „tikslų artimiausią“. Pavyzdžiui, metodas, vadinamas HNSW, gali grąžinti rezultatus per kelias milisekundes net 10 milijonų vektorių. Jūs įgyjate didelį greitį už nedidelę tikslumo auką.
Ką veikia vektorinė duomenų bazė?
Vektorių duomenų bazė vienu metu atlieka tris dalykus: (1) saugo vektorius, (2) greitai suranda vektorius, labiausiai panašius į užklausos vektorių, (3) filtruoja pagal metaduomenis šalia kiekvieno vektoriaus. Metaduomenys yra žymos, kurias pridedate prie tos dalies: šaltinio failas, data, skyrius, privatumo lygis ir kt. Metaduomenų filtravimas yra labai svarbus įmonės RAG; nes reikia turėti galimybę nustatyti tokius apribojimus kaip „ieškoti tik Finansų skyriaus 2025 m. dokumentuose“.
# Registruokitės vektorinėje duomenų bazėje (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Kasmetinės mokamos atostogos yra 14 dienų..."), text="Kasmetinės mokamos atostogos yra 14 dienų...", metadata={"šaltinis": "ik_el_kitabi.pdf", "department": "IK_6",0date2: "IK",0date "ic"})
# Metaduomenų filtruotos paieškos (koncepcinis) rezultatas = vektor_db.search( vektor=embed("kiek dienų turiu atostogų?"), top_k=4, filter={"department": "HR", "privacy": ["vidinis", "įjungtas"]})
Tinkamos duomenų bazės pasirinkimas
transporto priemonė
Teminis aspektas
Tinkama situacija
Integruota / failų pagrindu (įterptoji biblioteka)
Be montavimo, viena mašina
Prototipas, mažas komplektas (< keli šimtai tūkstančių dalių)
Tvarkoma debesies paslauga
Mastelio keitimas ir priežiūra nėra jūsų atsakomybė
Gamyba, sparčiai augantys duomenys, nedidelė komanda
Atviras šaltinis jūsų serveryje
Visiška kontrolė, jūsų duomenys lieka jūsų
Privatumo įsipareigojimas, esama infrastruktūra
Esamos duomenų bazės papildymas
Jūs nevaldote atskirų sistemų
Vektorinės paramos pridėjimas prie jau naudojamos DB
Rinkdamiesi paklauskite: kiek bus vienetų? Kiek svarbus metaduomenų filtravimas? Ar duomenys gali išeiti už įmonės ribų (konfidencialumas)? Ar komanda gali valdyti infrastruktūrą? Dažnai protinga pradėti nuo mažo ir prireikus plėsti.
Silpnas požiūris / Stiprus požiūris
Silpnas (saugomas paprastas įterpimas, nėra metaduomenų):
Tiesiog išsaugokite tekstą ir vektorių. Paieška: grąžinkite 4 panašiausius vektorius.# Problema: negalima filtruoti kaip "tik dabartiniai HR dokumentai"; # senos/neteisėtos dalys taip pat gali būti įtrauktos į atsakymą.
Galingas (sudėtingi metaduomenys + filtruota paieška):
Prie kiekvieno kūrinio pridėkite šaltinį, datą, skyrių ir privatumo žymą. Filtruokite pagal vartotojo įgaliojimus ir aktualumą paieškos metu: filtras = {"privacy": user_authority, "date_date": "2024-01"}# Taigi rezultatas yra saugus ir atnaujintas.
Trys mini dėklai
1 atvejis – netinkamas modelių derinys. Komanda įterpė dokumentus su modeliu A ir klausimus su modeliu B. Paieškos davė beprasmius rezultatus, o teisingų atsakymų rodiklis išliko 31%. Kai perėjau į vieną modelį (abu tą patį įterpimo modelį), rodiklis šoktelėjo iki 88%. Pamoka: klausimas ir dokumentas turi būti vienoje vietoje.
2 atvejis – privatumo rizika be metaduomenų. Sveikatos priežiūros įmonėje visi skyriaus dokumentai buvo sumesti į vieną telkinį be metaduomenų. Kai pardavėjas uždavė klausimą, sistema kontekstualizavo paciento duomenų dalį. Pridėjus metaduomenis + filtrą (pagal autorizacijos lygį), ši rizika buvo pašalinta; Atimant 12 neleistinų vienetų iš viso neatnešama.
3 atvejis – masto kliūtis. Elektroninės prekybos įmonė paprastu „nuskaityti viską“ metodu ieškojo 8 milijonų produktų aprašymų; Kiekviena užklausa truko 6 sekundes. Kai perėjome prie HNSW pagrįsto ANN, laikas sumažėjo iki 45 milisekundžių, o tikslumas sumažėjo tik 1%. Pamoka: ANN yra privalomas dideliame rinkinyje.
Dažnos klaidos
- Klausimo ir dokumento įterpimas į skirtingus modelius: rezultatai yra beprasmiai; visada vienas modelis.
- Praleidžiami metaduomenys: negalite filtruoti; Prarasite privatumo ir naujausios informacijos kontrolę.
- Klaidingas įterpimas šifravimui: įterpiant yra grįžtama informacija; Klaidinga manyti, kad jautrūs duomenys yra „paslėpti“.
- Nereikalingai didelės infrastruktūros kūrimas mažame rinkinyje: milžiniškas klasteris, valdomas iš 5000 dalių, yra bereikalingas sudėtingumas.
- Per daug nesijaudinkite dėl panašumo kriterijaus: tekste pradėkite nuo kosinuso; Tikslus derinimas atliekamas vėliau.
Atsargiai: įterpiant teksto prasmę įterpiami skaičiai, bet turinys „nesunaikinamas“. Nutekėjus vektorinei duomenų bazei, pažeidžiami ir originalūs saugomi tekstai (daugumoje įrenginių taip pat saugomas tekstas). Laikykite vektorių saugyklą taip pat konfidencialią, kaip ir joje esantys dokumentai.
Apibendrinant
- Įterpimas paverčia tekstą skaičių vektoriumi, kuris neša jo reikšmę; Panašios reikšmės yra artimi vektoriai.
- Panašumas dažnai matuojamas kosinusu; Normalizuotiems vektoriams taškinė sandauga duoda tą patį rezultatą.
- Didžiųjų duomenų atveju ANN (pvz., HNSW) pakeičia tikslią paiešką: didelis greitis, mažai aukojant tikslumą.
- Vektorinė duomenų bazė atlieka vektorių saugojimą + panašumų paiešką + metaduomenų filtravimą; metaduomenys yra būtini įmonės RAG.
- Klausimas ir dokumentas turi būti išversti naudojant tą patį įterpimo modelį; kitaip koordinačių negalima lyginti.
Taikymo užduotis
Ištraukite 10 trumpų ištraukų (po 3–6 sakinius) iš dokumento, kurį pasirinkote ankstesniame skyriuje. (1) Kiekvienam kūriniui sukurkite bent tris metaduomenų žymas (šaltinis, data ir trečioji, atitinkanti jūsų verslo kontekstą: skyrius, produktas, privatumas ir kt.). (2) Parašykite, kuris metaduomenų filtras turėtų būti taikomas 3 skirtingiems naudotojo klausimams. (3) Raskite 3 klausimų dalių poras, kurios skirtingais žodžiais išreiškia tą pačią reikšmę (pvz., „teisė atostogauti“ ↔ „kasmetinės atostogos“) ir vienu sakiniu paaiškinkite, kodėl jos neatitiks raktinių žodžių paieškos, bet atitiks įterpimą.
kontrolinis sąrašas
- [ ] Galiu pasakyti, kad įterpimas tekstą paverčia vektoriumi semantinėje erdvėje ir panašios reikšmės yra artimos.
- Žinau, kad [ ] kosinuso panašumas matuoja kampą ir yra numatytoji teksto nuostata.
- [ ] Galiu paaiškinti, kodėl ANN būtina dideliuose duomenyse.
- [ ] Žinau, kodėl metaduomenys yra labai svarbūs konfidencialumui ir atnaujinimo kontrolei.
- [ ] Vadovaujuosi taisykle, kad klausimą ir dokumentą verčiau naudojant tą patį įterpimo modelį.