Ieguvumi:
- Saprotiet, ka iegulšana pārvērš tekstu par vektoru semantiskajā telpā un līdzīgas nozīmes ir tuvi vektori
- Paskaidrots, kā ANN meklēšana darbojas ar kosinusa un punktu līdzības metriku
- Kopīgu vektoru datu bāzu izvēle, pamatojoties uz izmaksām, mērogu un metadatu filtrēšanas nepieciešamību
RAG pamatā ir viens jautājums: "Kura teksta daļa visvairāk līdzinās lietotāja jautājumam?" Dators apstrādā tekstu ar cipariem, nevis burtiski. Tāpēc mums vispirms teksts ir jāpārvērš skaitļos, kuriem ir tā nozīme. Lūk, kas ir iegulšana: process, kurā tekstu pārvērš skaitļu secībā (vektorā), kas atspoguļo šī teksta nozīmi. Kad esat pabeidzis šo vienību, jūs zināt, kā darbojas iegulšana, kā tiek mērīta līdzība un kā izvēlēties pareizo vektoru datu bāzi.
Iegulšana: nozīmes tulkošana koordinātēs
Iegulšanas modelis (īpaši apmācīts mākslīgais intelekts) pārvērš jūsu sniegto tekstu vektorā, kurā ir, piemēram, 1024 skaitļi. Padomājiet par šo vektoru kā koordinātu daudzdimensiju telpā. Maģija ir šāda: teksti, kuriem ir līdzīga nozīme, šajā telpā nonāk tuvās koordinātēs.
Vienkāršs piemērs: "ikgadējais atvaļinājums", "tiesības uz atvaļinājumu" un "ikgadējais apmaksātais atvaļinājums" izmanto dažādus vārdus, bet nozīmē vienu un to pašu — to vektori ir tuvu viens otram. “Algas konts” ir cita lieta – tā vektors ir tāls. Tātad lietotājs jautā: "cik dienu atvaļinājuma man ir?" Kad jūs jautāsiet, mēs pat varam atrast dokumentu, kurā nav vārda "brīvdiena", bet ir rakstīts "ikgadējais atvaļinājums ir 14 dienas". Tas ir tas, ko nevar izdarīt klasiskā atslēgvārdu meklēšana (meklēšana, kas precīzi atbilst vārdam).
Padoms. Uztveriet iegulšanu kā "nozīmes pirkstu nospiedumu". Divu teikumu ar vienādu nozīmi pirkstu nospiedumi šķiet līdzīgi; Pat ja vārdi atšķiras.
Svarīgs noteikums: modelim, ko izmantojat, iegulstot jautājumu, ir jābūt tam pašam modelim, ko izmantojat, iegulstot dokumentus. Dažādi modeļi rada dažādas telpas; koordinātas kļūst nesalīdzināmas.
Kā izmērīt līdzību?
Ir vairākas metodes, lai noteiktu, cik līdzīgi ir divi vektori. Visizplatītākā ir kosinusa līdzība: tā mēra leņķi starp diviem vektoriem. Ja leņķis ir mazs (vektori, kas vērsti vienā virzienā), līdzība ir liela. Vērtība ir no −1 līdz 1; Tuvu 1 = ļoti līdzīgs.
kritērijs
Ko tas mēra?
Kad tam ir priekšroka?
Kosinuss
Leņķis (virziens) starp vektoriem
Visizplatītākais; noklusējuma teksta semantiskā līdzība
Punktu produkts
Virziens + lielums kopā
Ja vektorus normalizē, tas dod tādu pašu rezultātu kā kosinuss; ir ātrs
Eiklīds (eiklīda attālums)
Taisns attālums starp koordinātām
Dažos klasterizācijas scenārijos; retāk lietots tekstā
Praksē lielākā daļa iegulšanas modeļu rada normalizētus vektorus (izmērs iestatīts uz 1); Šajā gadījumā kosinusa un punktveida reizinājums dod tādu pašu secību. Neesiet lēmumu paralizēts: sāciet ar kosinusu.
Starp miljoniem vektoru to salīdzināšana pa vienam ir lēna. Tāpēc vektoru datubāzēs tiek izmantoti ANN (Approximate Nearest Neighbor) algoritmi. ANN ļoti ātri atrod "gandrīz precīzi tuvāko", nevis "precīzi tuvāko". Piemēram, metode, ko sauc par HNSW, var atgriezt rezultātus dažās milisekundēs pat 10 miljoniem vektoru. Jūs iegūstat lielu ātrumu par nelielu precizitātes upuri.
Ko dara vektoru datu bāze?
Vektoru datu bāze vienlaikus veic trīs lietas: (1) saglabā vektorus, (2) ātri atrod vektorus, kas ir vislīdzīgākie vaicājuma vektoram, (3) filtrē pēc metadatiem blakus katram vektoram. Metadati ir atzīmes, ko pievienojat šim elementam: avota fails, datums, nodaļa, konfidencialitātes līmenis utt. Metadatu filtrēšana ir ļoti svarīga uzņēmuma RAG; jo jāspēj noteikt tādus ierobežojumus kā "meklēt tikai finanšu nodaļas 2025. gada dokumentos".
# Reģistrēties vektoru datubāzē (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Ikgadējais apmaksātais atvaļinājums ir 14 dienas..."), text="Ikgadējais apmaksātais atvaļinājums ir 14 dienas...", metadata={"avots": "ik_el_kitabi.pdf", "department": "IK_6",0date2: "IK",0date2: "IK",0 "ic"})
# Metadatu filtrētās meklēšanas (konceptuālais) rezultāts = vektor_db.search( vektor=embed("cik dienu man ir atvaļinājums?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Pareizās datu bāzes izvēle
transportlīdzeklis
Piedāvātais aspekts
Piemērota situācija
Iebūvēta / balstīta uz failiem (iegulta bibliotēka)
Nav uzstādīšanas, viena mašīna
Prototips, mazs komplekts (< daži simti tūkstoši detaļu)
Pārvaldīts mākoņpakalpojums
Mērogošana un apkope nav jūsu atbildība
Ražošana, strauji augoši dati, maza komanda
Atvērtais avots jūsu serverī
Pilnīga kontrole, jūsu dati paliek jums
Privātuma pienākums, esošā infrastruktūra
Papildinājums esošajai datubāzei
Jūs nepārvaldāt atsevišķas sistēmas
Vektoru atbalsta pievienošana jau izmantotajai DB
Izvēloties jautājiet: cik gabalu būs? Cik svarīga ir metadatu filtrēšana? Vai dati var nonākt ārpus uzņēmuma (konfidencialitāte)? Vai komanda var pārvaldīt infrastruktūru? Bieži vien ir prātīgi sākt ar mazumiņu un pēc vajadzības paplašināt.
Vāja pieeja / spēcīga pieeja
Vāji (tiek saglabāta vienkārša iegulšana, nav metadatu):
Vienkārši saglabājiet tekstu un vektoru. Meklēt: atgriezt 4 līdzīgākos vektorus.# Problēma: nevar filtrēt, piemēram, "tikai pašreizējie HR dokumenti"; # atbildē var būt iekļautas arī vecas/nesankcionētas daļas.
Jaudīgi (bagātīgi metadati + filtrēta meklēšana):
Katrai daļai pievienojiet avotu, datumu, nodaļu un konfidencialitātes tagu. Filtrējiet atbilstoši lietotāja autoritātei un aktualitātei meklēšanas laikā: filter = {"privacy": user_authority, "date_date": "2024-01"}# Tādējādi rezultāts ir gan drošs, gan aktuāls.
Trīs mini futrāļi
1. gadījums — nepareizs modeļu sajaukums. Komanda iegulja dokumentus ar modeli A un jautājumus ar modeli B. Meklēšanas rezultāti sniedza bezjēdzīgus rezultātus, un pareizo atbilžu rādītājs saglabājās 31%. Kad es pārgāju uz vienu modeli (abi vienu un to pašu iegulšanas modeli), rādītājs pieauga līdz 88%. Nodarbība: jautājumam un dokumentam jābūt vienā vietā.
2. gadījums — privātuma risks bez metadatiem. Veselības aprūpes uzņēmumā visi departamenta dokumenti tika iemesti vienā kopā bez metadatiem. Kad pārdošanas darbinieks uzdeva jautājumu, sistēma kontekstualizēja pacienta datu daļu. Pievienojot metadatus + filtru (atbilstoši autorizācijas līmenim), šis risks tika novērsts; Izņemšanā 12 neatļautus gabalus nenes vispār.
3. gadījums — mēroga sašaurinājums. E-komercijas uzņēmums meklēja 8 miljonus produktu aprakstu ar vienkāršu metodi "skenēt visu"; Katrs vaicājums aizņēma 6 sekundes. Kad pārgājām uz HNSW balstītu ANN, laiks samazinājās līdz 45 milisekundēm, un precizitāte tika zaudēta tikai par 1%. Nodarbība: ANN ir obligāta lielajā komplektā.
Biežas kļūdas
- Jautājuma un dokumenta iegulšana ar dažādiem modeļiem: Rezultāti ir bezjēdzīgi; vienmēr viens modelis.
- Metadatu izlaišana: jūs nevarat filtrēt; Jūs zaudējat kontroli pār privātumu un jaunāko informāciju.
- Kļūdaina iegulšana šifrēšanai: iegulšana satur atgriezenisku informāciju; Ir nepareizi uzskatīt, ka sensitīvie dati ir "slēpti".
- Nevajadzīgi lielas infrastruktūras izveide mazā komplektā: milzīgs klasteris, kas pārvaldīts 5000 daļām, ir nevajadzīgi sarežģīts.
- Neuztraucieties pārāk daudz par līdzības kritēriju: tekstā sāciet ar kosinusu; Precīza regulēšana notiek vēlāk.
Uzmanību: iegulšana iegulst teksta nozīmi skaitļos, bet nesabojā saturu. Ja tiek nopludināta vektoru datubāze, tiek apdraudēti arī oriģinālie saglabātie teksti (lielākajā daļā instalāciju teksts arī tiek saglabāts). Turiet vektoru repozitoriju tikpat konfidenciālu kā tajā esošos dokumentus.
Rezumējot
- Iegulšana pārvērš tekstu par skaitļu vektoru, kam ir tā nozīme; Līdzīgas nozīmes ir tuvi vektori.
- Līdzību bieži mēra ar kosinusu; Normalizētiem vektoriem punktu reizinājums dod tādu pašu rezultātu.
- Lielajos datos ANN (piem., HNSW) aizstāj precīzu meklēšanu: liels ātrums ar nelielu precizitātes upuri.
- Vektoru datu bāze veic vektoru glabāšanu + līdzības meklēšanu + metadatu filtrēšanu; metadati ir būtiski uzņēmuma RAG.
- Jautājumam un dokumentam jābūt tulkotiem ar vienu un to pašu iegulšanas modeli; pretējā gadījumā koordinātas nevar salīdzināt.
Lietojumprogrammas uzdevums
Izvelciet 10 īsus fragmentus (katrs 3–6 teikumi) no dokumenta, kuru atlasījāt iepriekšējā vienībā. (1) Katram elementam izveidojiet vismaz trīs metadatu tagus (avots, datums un trešais, kas atbilst jūsu uzņēmējdarbības kontekstam: nodaļa, produkts, konfidencialitāte utt.). (2) Uzrakstiet, kurš metadatu filtrs jāpiemēro 3 dažādiem lietotāju jautājumiem. (3) Atrodiet 3 jautājumu daļu pārus, kas izsaka vienu un to pašu nozīmi dažādos vārdos (piem., "atvaļinājuma tiesības" ↔ "ikgadējais atvaļinājums") un vienā teikumā paskaidrojiet, kāpēc tie neatbilst atslēgvārdu meklēšanai, bet atbildīs iegulšanai.
kontrolsaraksts
- [ ] Varu pateikt, ka iegulšana tekstu pārvērš vektorā semantiskajā telpā un līdzīgas nozīmes ir tuvas.
- Es zinu, ka [ ] kosinusa līdzība mēra leņķi un ir teksta noklusējuma preference.
- [ ] Es varu izskaidrot, kāpēc lielajos datos ir nepieciešams ANN.
- [ ] Es zinu, kāpēc metadati ir ļoti svarīgi konfidencialitātes un svaiguma kontrolei.
- [ ] Es ievēroju noteikumu par jautājuma un dokumenta tulkošanu ar vienu un to pašu iegulšanas modeli.