Câștiguri:
- Înțelegeți că încorporarea transformă textul într-un vector în spațiul semantic și semnificațiile similare sunt vectori apropiați
- Explicarea modului în care funcționează căutarea ANN cu valorile de asemănare cosinus și puncte
- Selectarea bazelor de date vectoriale comune în funcție de cost, scară și nevoia de filtrare a metadatelor
În centrul RAG se află o singură întrebare: „Care fragment de text seamănă cel mai mult cu întrebarea utilizatorului?” Computerul procesează textul cu numere, nu literal. De aceea, trebuie să transformăm mai întâi textul în numere care poartă semnificația lui. Asta este încorporarea: procesul de conversie a unui text într-o secvență de numere (vector) care reprezintă sensul textului respectiv. Când terminați această unitate, veți ști cum funcționează încorporarea, cum este măsurată similaritatea și cum să alegeți baza de date vectorială potrivită.
Încorporare: traducerea sensului în coordonate
Un model de încorporare (o inteligență artificială special instruită) transformă textul pe care îl furnizați într-un vector de, de exemplu, 1024 de numere. Gândiți-vă la acest vector ca la o coordonată într-un spațiu multidimensional. Magia este aceasta: textele care au sens similar cad în coordonate apropiate în acest spațiu.
Un exemplu simplu: „concediu anual”, „drept concediu” și „concediu anual plătit” folosesc cuvinte diferite, dar înseamnă același lucru - vectorii lor sunt aproape unul de celălalt. „Contul de salarizare” este o problemă diferită - vectorul său este îndepărtat. Deci utilizatorul întreabă „câte zile de vacanță am?” Când întrebați, putem găsi chiar și un document care nu conține cuvântul „vacanță” dar spune „concediul anual este de 14 zile”. Aceasta este ceea ce nu poate face căutarea clasică prin cuvinte cheie (căutare care se potrivește exact cu cuvântul).
Sfat: Gândiți-vă la încorporare ca la o „amprentă a sensului”. Amprentele a două propoziții cu același sens apar similare; Chiar dacă cuvintele sunt diferite.
O regulă importantă: modelul pe care îl utilizați la încorporarea întrebării ar trebui să fie același model pe care îl utilizați la încorporarea documentelor. Modele diferite produc spații diferite; coordonatele devin incomparabile.
Cum se măsoară asemănarea?
Există mai multe metode pentru a măsura cât de similari sunt doi vectori. Cea mai comună este asemănarea cosinusului: măsoară unghiul dintre doi vectori. Dacă unghiul este mic (vectorii îndreptați în aceeași direcție), asemănarea este mare. Valoarea este între −1 și 1; Aproape de 1 = foarte asemănător.
criteriu
Ce masoara?
Când este de preferat?
Cosinus
Unghi (direcția) dintre vectori
Cel mai comun; implicit în similaritatea semantică a textului
Produs punctual
Direcția + magnitudinea împreună
Dacă vectorii sunt normalizați, dă același rezultat ca și cosinusul; este rapid
Euclidian (distanța euclidiană)
Distanța dreaptă între coordonate
În unele scenarii de grupare; mai puțin folosit în text
În practică, majoritatea modelelor de încorporare produc vectori normalizați (dimensiunea setată la 1); În acest caz, cosinusul și produsul punctual dau aceeași ordine. Nu fi paralizat de decizie: începe cu cosinus.
Printre milioane de vectori, compararea acestora pe rând este lentă. De aceea bazele de date vectoriale folosesc algoritmi ANN (Aproximate Nearest Neighbor). ANN găsește foarte repede „aproape exact cel mai apropiat” decât „exact cel mai aproape”. De exemplu, metoda numită HNSW poate returna rezultate în câteva milisecunde chiar și pentru 10 milioane de vectori. Câștigi viteză mare pentru un mic sacrificiu de precizie.
Ce face Vector Database?
O bază de date vectorială face trei lucruri simultan: (1) stochează vectori, (2) găsește rapid vectorii care se aseamănă cel mai mult cu un vector de interogare, (3) filtrează după metadate lângă fiecare vector. Metadatele sunt etichetele pe care le atașați acelei piese: fișier sursă, dată, departament, nivel de confidențialitate etc. Filtrarea metadatelor este esențială în RAG de companie; pentru că trebuie să poți stabili restricții precum „căutați doar în documentele 2025 ale departamentului de Finanțe”.
# Înregistrați-vă în baza de date vectorială (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Concediul anual plătit este de 14 zile..."), text="Concediul anual plătit este de 14 zile...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK_el_kitabi.pdf", "department": "IK62", "pridate": "IK62", "pridate" "ic"})
# Rezultatul (conceptual) al căutării filtrate prin metadate = vektor_db.search( vektor=embed(„câte zile de concediu am?”), top_k=4, filter={”departament”: „HR”, „privacy”: [”intern”, “on”]})
Alegerea bazei de date potrivite
vehicul
Aspect prezentat
Situație potrivită
Încorporat/bazat pe fișiere (biblioteca încorporată)
Fără instalare, o singură mașină
Prototip, kit mic (< câteva sute de mii de piese)
Serviciu cloud gestionat
Scalare și întreținere nu sunt responsabilitatea dvs
Producție, date cu creștere rapidă, echipă mică
Open source pe propriul server
Control deplin, datele tale rămân ale tale
Obligația de confidențialitate, infrastructura existentă
Adăugarea la baza de date existentă
Nu gestionați sisteme separate
Adăugarea suportului vectorial la DB pe care o utilizați deja
Întrebați când alegeți: Câte piese vor fi? Cât de critică este filtrarea metadatelor? Datele pot trece în afara companiei (confidențialitate)? Poate echipa să opereze o infrastructură? Este deseori înțelept să începeți cu mic și să vă extindeți după cum este necesar.
Abordare slabă / Abordare puternică
Slab (stochează încorporare simplă, fără metadate):
Doar salvați textul și vectorul. Căutați: returnați cei 4 vectori cei mai asemănați.# Problemă: nu se poate filtra ca „doar documentele de resurse umane actuale”; # părți vechi/neautorizate pot fi incluse și în răspuns.
Puternic (metadate bogate + căutare filtrată):
Adăugați sursa, data, departamentul și eticheta de confidențialitate la fiecare piesă. Filtrați în funcție de autoritatea și actualitatea utilizatorului în timpul căutării: filter = {"privacy": user_authority, "date_date": "2024-01"}# Astfel, rezultatul este atât sigur, cât și actualizat.
Trei mini carcase
Cazul 1 — Mix de modele greșit. O echipă a încorporat documente cu modelul A și întrebări cu modelul B. Căutările au dat rezultate fără sens, iar rata de răspuns corect a rămas la 31%. Când am trecut la un singur model (ambele același model de încorporare), rata a sărit la 88%. Lecția: întrebarea și documentul ar trebui să fie în același spațiu.
Cazul 2 – Risc de confidențialitate fără metadate. Într-o companie de asistență medicală, toate documentele departamentului au fost aruncate într-un singur grup fără metadate. Când un asociat de vânzări a pus o întrebare, sistemul a contextualizat o bucată de date despre pacient. Când s-au adăugat metadate + filtru (în funcție de nivelul de autorizare), acest risc a fost eliminat; La recuperare, 12 piese neautorizate nu sunt aduse deloc.
Cazul 3 – Gâtul de sticlă la scară. O companie de comerț electronic a căutat în 8 milioane de descrieri de produse cu o metodă simplă de „scanare a tuturor”; Fiecare interogare a durat 6 secunde. Când am trecut la ANN bazat pe HNSW, timpul a scăzut la 45 de milisecunde, cu o pierdere de doar 1% în precizie. Lecția: ANN este obligatorie în setul mare.
Greșeli comune
- Încorporarea întrebării și a documentului cu diferite modele: Rezultatele sunt lipsite de sens; întotdeauna un model.
- Omiterea metadatelor: nu puteți filtra; Pierzi controlul asupra confidențialității și actualității.
- Încorporarea greșită cu criptare: Încorporarea transportă informații reversibile; Este greșit să presupunem că datele sensibile sunt „ascunse”.
- Construirea unei infrastructuri inutil de mare pe un set mic: un cluster gigant gestionat pentru 5.000 de părți este o complexitate inutilă.
- Nu vă faceți griji prea mult cu privire la criteriul de similitudine: Începeți cu cosinus în text; Reglajul fin vine mai târziu.
Atenție: încorporarea încorporează sensul textului în cifre, dar nu „distruge” conținutul. Dacă o bază de date vectorială este scursă, textele originale stocate (în majoritatea instalărilor textul este și stocat) sunt de asemenea compromise. Păstrați depozitul de vectori la fel de confidențial ca și documentele din el.
Pe scurt
- Încorporarea transformă textul într-un vector de numere care îi poartă sensul; Semnificațiile similare sunt vectori apropiați.
- Asemănarea este adesea măsurată prin cosinus; Pentru vectorii normalizați, produsul punctual dă același rezultat.
- În big data, ANN (de exemplu, HNSW) înlocuiește căutarea exactă: viteză mare cu un mic sacrificiu de precizie.
- Baza de date vectorială realizează stocarea vectorială + căutarea de similaritate + filtrarea metadatelor; metadatele sunt esențiale pentru RAG întreprindere.
- Întrebarea și documentul trebuie traduse cu același model de încorporare; altfel coordonatele nu pot fi comparate.
Sarcina de aplicare
Extrageți 10 pasaje scurte (3-6 propoziții fiecare) din documentul pe care l-ați selectat în unitatea anterioară. (1) Creați cel puțin trei etichete de metadate pentru fiecare piesă (sursă, dată și o treime adecvată contextului dvs. de afaceri: departament, produs, confidențialitate etc.). (2) Scrieți ce filtru de metadate ar trebui aplicat pentru 3 întrebări diferite ale utilizatorului. (3) Găsiți 3 perechi întrebare-părți care exprimă același sens în cuvinte diferite (de exemplu, „drept de vacanță” ↔ „concediu anual”) și explicați într-o singură propoziție de ce nu se potrivesc cu căutarea de cuvinte cheie, dar se potrivesc cu încorporarea.
lista de verificare
- [ ] Pot spune că încorporarea transformă textul într-un vector în spațiul semantic și semnificațiile similare sunt apropiate.
- Știu că [ ] Similitudinea cosinus măsoară unghiul și este preferința implicită în text.
- [ ] Pot să explic de ce ANN este necesar în big data.
- [ ] Știu de ce metadatele sunt esențiale pentru controlul confidențialității și al prospețimii.
- [ ] Urmează regula de traducere a întrebării și a documentului cu același model de încorporare.