Jednotka 2 / 11

Vkladanie a logika vektorovej databázy

zisky:

  • Pochopte, že vkladanie zmení text na vektor v sémantickom priestore a podobné významy sú blízke vektory
  • Vysvetlenie, ako funguje vyhľadávanie ANN s metrikami kosínusovej a bodovej podobnosti
  • Výber bežných vektorových databáz na základe nákladov, rozsahu a potreby filtrovania metadát

Jadrom RAG je jediná otázka: "Ktorý text sa najviac podobá otázke používateľa?" Počítač spracováva text s číslami, nie doslova. Preto musíme text najskôr previesť na čísla, ktoré nesú jeho význam. To je to, čo je vkladanie: proces prevodu textu na postupnosť čísel (vektor), ktorá predstavuje význam tohto textu. Keď dokončíte túto jednotku, budete vedieť, ako funguje vkladanie, ako sa meria podobnosť a ako si vybrať správnu vektorovú databázu.

Vkladanie: Prekladanie významu do súradníc

Model vkladania (špeciálne vyškolená umelá inteligencia) prevedie text, ktorý poskytnete, na vektor napríklad 1024 čísel. Predstavte si tento vektor ako súradnicu vo viacrozmernom priestore. Kúzlo je v tomto: texty, ktoré majú podobný význam, spadajú do blízkych súradníc v tomto priestore.

Jednoduchý príklad: „ročná dovolenka“, „nárok na dovolenku“ a „ročná platená dovolenka“ používajú rôzne slová, ale znamenajú to isté – ich vektory sú blízko seba. „Mzdový účet“ je iná záležitosť – jeho vektor je vzdialený. Používateľ sa teda pýta "koľko dní dovolenky mám?" Keď sa spýtate, nájdeme aj dokument, ktorý neobsahuje slovo „dovolenka“, ale hovorí „ročná dovolenka je 14 dní“. Toto klasické vyhľadávanie podľa kľúčových slov (hľadanie, ktoré presne zodpovedá slovu) nedokáže.

Tip: Predstavte si vkladanie ako „odtlačok významu“. Odtlačky prstov dvoch viet s rovnakým významom vyzerajú podobne; Aj keď sa slová líšia.

Dôležité pravidlo: model, ktorý používate pri vkladaní otázky, by mal byť rovnaký ako model, ktorý používate pri vkladaní dokumentov. Rôzne modely vytvárajú rôzne priestory; súradnice sa stávajú neporovnateľnými.

Ako merať podobnosť?

Existuje niekoľko metód na meranie podobnosti dvoch vektorov. Najbežnejšia je kosínusová podobnosť: meria uhol medzi dvoma vektormi. Ak je uhol malý (vektory smerujúce rovnakým smerom), podobnosť je vysoká. Hodnota je medzi -1 a 1; Blízko 1 = veľmi podobné.

kritérium

Čo meria?

Kedy je preferovaný?

Kosínus

Uhol (smer) medzi vektormi

Najbežnejšie; predvolená v textovej sémantickej podobnosti

Bodkový produkt

Smer + magnitúda spolu

Ak sú vektory normalizované, dáva rovnaký výsledok ako kosínus; je rýchly

Euklidovská (euklidovská vzdialenosť)

Priama vzdialenosť medzi súradnicami

V niektorých scenároch klastrovania; menej používané v texte

V praxi väčšina modelov vkladania vytvára normalizované vektory (veľkosť nastavená na 1); V tomto prípade kosínus a bodový súčin dávajú rovnaké poradie. Nenechajte sa paralyzovať rozhodovaním: začnite s kosínusom.

Medzi miliónmi vektorov je ich porovnávanie jeden po druhom pomalé. To je dôvod, prečo vektorové databázy používajú algoritmy ANN (Aproximate Nearest Neighbor). ANN nájde "takmer presne najbližšie" skôr ako "presne najbližšie" veľmi rýchlo. Napríklad metóda s názvom HNSW dokáže vrátiť výsledky za niekoľko milisekúnd aj pre 10 miliónov vektorov. Získate veľkú rýchlosť za malú obetu presnosti.

Čo robí vektorová databáza?

Vektorová databáza robí tri veci naraz: (1) ukladá vektory, (2) rýchlo nájde vektory, ktoré sa najviac podobajú vektoru dopytu, (3) filtruje podľa metadát vedľa každého vektora. Metadáta sú značky, ktoré pripojíte k tomuto dielu: zdrojový súbor, dátum, oddelenie, úroveň ochrany osobných údajov atď. Filtrovanie metadát je v podnikovej RAG rozhodujúce; pretože musíte mať možnosť nastaviť obmedzenia, ako napríklad „hľadať iba v dokumentoch finančného oddelenia z roku 2025“.

# Zaregistrujte sa do vektorovej databázy (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Ročná platená dovolenka je 14 dní..."), text="Ročná platená dovolenka je 14 dní...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK"2", "date": "IK":6", "date": "ic"})

# Výsledok vyhľadávania filtrovaný metadátami (koncepčný) = vektor_db.search( vektor=embed("koľko dní dovolenky mám?"), top_k=4, filter={"oddelenie": "HR", "privacy": ["interné", "zapnuté"]})

Výber správnej databázy

vozidlo

Odporúčaný aspekt

Vhodná situácia

Vstavaná / založená na súboroch (vstavaná knižnica)

Žiadna inštalácia, jeden stroj

Prototyp, malá stavebnica (< niekoľko stoviek tisíc dielov)

Spravovaná cloudová služba

Za škálovanie a údržbu nie ste zodpovední

Výroba, rýchlo rastúce dáta, malý tím

Open source na vašom vlastnom serveri

Úplná kontrola, vaše dáta zostanú vaše

Povinnosť ochrany súkromia, existujúca infraštruktúra

Doplnenie existujúcej databázy

Nespravujete samostatné systémy

Pridanie podpory vektorov do databázy, ktorú už používate

Opýtajte sa pri výbere: Koľko kusov bude? Aké dôležité je filtrovanie metadát? Môžu údaje ísť mimo spoločnosti (dôvernosť)? Dokáže tím prevádzkovať infraštruktúru? Často je rozumné začať v malom a podľa potreby rozširovať.

Slabý prístup / silný prístup

Slabé (ukladanie obyčajného vloženia, žiadne metadáta):

Stačí uložiť text a vektor. Hľadať: vrátiť 4 najpodobnejšie vektory.# Problém: Nedá sa filtrovať ako „len aktuálne dokumenty HR“;# v odpovedi môžu byť zahrnuté aj staré/neautorizované časti.

Výkonné (bohaté metadáta + filtrované vyhľadávanie):

Ku každému dielu pridajte značku zdroja, dátumu, oddelenia a súkromia. Filtrujte podľa oprávnenia a aktuálnosti používateľa počas vyhľadávania: filter = {"privacy": user_authority, "date_date": "2024-01"# Výsledok je teda bezpečný a aktuálny.

Tri mini puzdrá

Prípad 1 – Nesprávna kombinácia modelov. Tím vložil dokumenty s modelom A a otázky s modelom B. Vyhľadávania vrátili nezmyselné výsledky a miera správnych odpovedí zostala na úrovni 31 %. Keď som prešiel na jeden model (oba rovnaké modely vkladania), miera vyskočila na 88 %. Poučenie: otázka a dokument by mali byť na rovnakom mieste.

Prípad 2 – Riziko ochrany súkromia bez metadát. V zdravotníckej spoločnosti boli všetky dokumenty oddelení vhodené do jedného fondu bez metadát. Keď predajca položil otázku, systém uviedol do kontextu časť údajov o pacientovi. Keď boli pridané metadáta + filter (podľa úrovne autorizácie), toto riziko bolo eliminované; Pri preberaní sa 12 nepovolených kusov vôbec neprinesie.

Prípad 3 – Prekážka rozsahu. Spoločnosť zaoberajúca sa elektronickým obchodom prehľadala 8 miliónov popisov produktov jednoduchou metódou „skenovať všetko“; Každý dotaz trval 6 sekúnd. Keď sme prešli na ANN založenú na HNSW, čas sa skrátil na 45 milisekúnd, iba s 1% stratou presnosti. Poučenie: ANN je povinné vo veľkom súbore.

Časté chyby

  • Vloženie otázky a dokumentu s rôznymi modelmi: Výsledky sú bezvýznamné; vždy jeden model.
  • Preskakovanie metadát: Nemôžete filtrovať; Stratíte kontrolu nad súkromím a aktuálnosťou.
  • Chybné vkladanie so šifrovaním: Vkladanie nesie reverzibilné informácie; Je nesprávne predpokladať, že citlivé údaje sú „skryté“.
  • Budovanie zbytočne veľkej infraštruktúry na malom súbore: Obrovský klaster spravovaný pre 5 000 častí je zbytočná zložitosť.
  • Nerobte si starosti s kritériom podobnosti: Začnite v texte kosínusom; Jemné doladenie príde neskôr.
Pozor: Vkladanie vkladá význam textu do čísel, ale „neničí“ obsah. Ak dôjde k úniku vektorovej databázy, sú ohrozené aj pôvodné uložené texty (vo väčšine inštalácií je uložený aj text). Udržujte úložisko vektorov rovnako dôverné ako dokumenty v ňom.

V súhrne

  • Vkladanie zmení text na vektor čísel, ktorý nesie jeho význam; Podobné významy sú blízke vektory.
  • Podobnosť sa často meria pomocou kosínusu; Pre normalizované vektory bodový súčin poskytuje rovnaký výsledok.
  • Vo veľkých dátach ANN (napr. HNSW) nahrádza presné vyhľadávanie: veľká rýchlosť s malou stratou presnosti.
  • Vektorová databáza vykonáva ukladanie vektorov + vyhľadávanie podobnosti + filtrovanie metadát; metaúdaje sú nevyhnutné pre podnikové RAG.
  • Otázka a dokument musia byť preložené rovnakým modelom vkladania; inak sa suradnice nedaju porovnavat.

Aplikačná úloha

Extrahujte 10 krátkych pasáží (každá 3-6 viet) z dokumentu, ktorý ste vybrali v predchádzajúcej časti. (1) Navrhnite aspoň tri značky metadát pre každý kus (zdroj, dátum a tretí vhodný pre váš obchodný kontext: oddelenie, produkt, súkromie atď.). (2) Napíšte, ktorý filter metadát by sa mal použiť pre 3 rôzne používateľské otázky. (3) Nájdite 3 dvojice otázok a častí, ktoré vyjadrujú rovnaký význam rôznymi slovami (napr. „nárok na dovolenku“ ↔ „ročná dovolenka“) a jednou vetou vysvetlite, prečo sa nezhodujú s vyhľadávaním kľúčových slov, ale budú sa zhodovať s vložením.

kontrolný zoznam

  • [ ] Môžem povedať, že vkladanie zmení text na vektor v sémantickom priestore a podobné významy sú blízko.
  • Viem, že [ ] Kosínusová podobnosť meria uhol a je predvolenou preferenciou v texte.
  • [ ] Viem vysvetliť, prečo je ANN potrebná vo veľkých dátach.
  • [ ] Viem, prečo sú metadáta rozhodujúce pre dôvernosť a kontrolu aktuálnosti.
  • [ ] Riadim sa pravidlom prekladu otázky a dokumentu rovnakým modelom vkladania.