Vinster:
- Förstå att inbäddning gör texten till en vektor i det semantiska rummet och liknande betydelser är nära vektorer
- Förklarar hur ANN-sökning fungerar med cosinus- och punktlikhetsmått
- Val av vanliga vektordatabaser baserat på kostnad, skala och behov av metadatafiltrering
Kärnan i RAG är en enda fråga: "Vilken text är mest lik användarens fråga?" Datorn bearbetar text med siffror, inte bokstavligt. Det är därför vi måste först konvertera texten till siffror som bär dess betydelse. Det är vad inbäddning är: processen att konvertera en text till en sekvens av tal (vektor) som representerar innebörden av den texten. När du är klar med den här enheten kommer du att veta hur inbäddning fungerar, hur likhet mäts och hur du väljer rätt vektordatabas.
Inbäddning: Översätt betydelse till koordinater
En inbäddningsmodell (en specialutbildad artificiell intelligens) omvandlar texten du tillhandahåller till en vektor med till exempel 1024 nummer. Tänk på denna vektor som en koordinat i ett flerdimensionellt utrymme. Magin är denna: texter som liknar betydelsen faller i nära koordinater i detta utrymme.
Ett enkelt exempel: "årsledighet", "semesterrätt" och "årlig betald semester" använder olika ord men betyder samma sak - deras vektorer ligger nära varandra. "Lönekonto" är en annan sak - dess vektor är avlägsen. Så användaren frågar "hur många dagars semester har jag?" När du frågar kan vi till och med hitta ett dokument som inte innehåller ordet "semester" utan säger "semester är 14 dagar". Detta är vad klassisk nyckelordssökning (sökning som matchar ordet exakt) inte kan göra.
Tips: Tänk på inbäddning som ett "fingeravtryck av mening." Fingeravtrycken av två meningar med samma betydelse verkar likartade; Även om orden är olika.
En viktig regel: modellen du använder när du bäddar in frågan ska vara samma modell som du använder när du bäddar in dokument. Olika modeller ger olika utrymmen; koordinaterna blir ojämförliga.
Hur mäter man likhet?
Det finns flera metoder för att mäta hur lika två vektorer är. Den vanligaste är cosinuslikhet: den mäter vinkeln mellan två vektorer. Om vinkeln är liten (vektorer pekar i samma riktning) är likheten stor. Värdet är mellan −1 och 1; Nära 1 = mycket lika.
kriterium
Vad mäter den?
När är det att föredra?
Cosinus
Vinkel (riktning) mellan vektorer
Den vanligaste; standard i text semantisk likhet
Punktprodukt
Riktning + magnitud tillsammans
Om vektorerna är normaliserade ger det samma resultat som cosinus; är snabb
Euklidiskt (euklidiskt avstånd)
Rakt avstånd mellan koordinaterna
I vissa klustringsscenarier; används mindre i text
I praktiken producerar de flesta inbäddningsmodeller normaliserade vektorer (storlek satt till 1); I detta fall ger cosinus och punktprodukt samma ordning. Bli inte beslutsförlamad: börja med cosinus.
Bland miljontals vektorer går det långsamt att jämföra dem en efter en i taget. Det är därför vektordatabaser använder ANN-algoritmer (Approximate Nearest Neighbor). ANN hittar "nästan exakt närmast" snarare än "exakt närmast" mycket snabbt. Till exempel kan metoden som kallas HNSW returnera resultat på några millisekunder även för 10 miljoner vektorer. Du får stor hastighet för en liten uppoffring av noggrannhet.
Vad gör Vector Database?
En vektordatabas gör tre saker samtidigt: (1) lagrar vektorer, (2) hittar snabbt vektorer som mest liknar en frågevektor, (3) filtrerar efter metadata bredvid varje vektor. Metadata är taggarna du fäster på den biten: källfil, datum, avdelning, sekretessnivå, etc. Metadatafiltrering är avgörande i företags RAG; eftersom du behöver kunna sätta restriktioner som "sök endast i Ekonomiavdelningens 2025-dokument".
# Registrera dig till vektordatabasen (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Årlig betald ledighet är 14 dagar..."), text="Årlig betald ledighet är 14 dagar...", metadata={"källa": "ik_el_kitabi.pdf", "department"-":020", "department"-:020", "department"-:020 "privacy", " "ic")
# Metadatafiltrerad sökning (konceptuellt)resultat = vektor_db.search( vektor=embed("hur många dagars ledighet har jag?"), top_k=4, filter={"department": "HR", "privacy": ["internt", "on"]})
Att välja rätt databas
fordon
Utvald aspekt
Lämplig situation
Inbyggt / filbaserat (inbäddat bibliotek)
Ingen installation, enstaka maskin
Prototyp, litet kit (< några hundra tusen delar)
Hanterad molntjänst
Skalning och underhåll är inte ditt ansvar
Produktion, snabbväxande data, litet team
Öppen källkod på din egen server
Full kontroll, din data förblir din
Integritetsskyldighet, befintlig infrastruktur
Tillägg till befintlig databas
Du hanterar inte separata system
Lägger till vektorstöd till den DB du redan använder
Fråga när du väljer: Hur många bitar blir det? Hur kritisk är metadatafiltrering? Kan data gå utanför företaget (sekretess)? Kan teamet driva en infrastruktur? Det är ofta klokt att börja i det små och utöka efter behov.
Svag inställning / stark inställning
Svag (lagrar vanlig inbäddning, inga metadata):
Spara bara texten och vektorn. Sök: returnera de 4 mest lika vektorerna.# Problem: kan inte filtrera som "bara aktuella HR-dokument";# gamla/obehöriga delar kan också inkluderas i svaret.
Kraftfull (rik metadata + filtrerad sökning):
Lägg till källa, datum, avdelning och sekretesstagg till varje del. Filtrera efter användarens auktoritet och aktuellhet under sökningen: filter = {"privacy": user_authority, "date_date": "2024-01"}# Resultatet är alltså både säkert och uppdaterat.
Tre minifodral
Fall 1 — Fel modellmix. Ett team bäddade in dokument med modell A och frågor med modell B. Sökningarna gav meningslösa resultat och den korrekta svarsfrekvensen låg kvar på 31 %. När jag bytte till en enda modell (båda samma inbäddningsmodell) hoppade frekvensen till 88%. Lektion: fråga och dokument ska vara i samma utrymme.
Fall 2 — Integritetsrisk utan metadata. I ett sjukvårdsföretag slängdes alla avdelningsdokument i en enda pool utan metadata. När en säljare ställde en fråga kontextualiserade systemet en bit patientdata. När metadata + filter lades till (enligt behörighetsnivån) eliminerades denna risk; Vid hämtning tas 12 otillåtna pjäser inte med alls.
Fall 3 — Skala flaskhals. Ett e-handelsföretag sökte efter 8 miljoner produktbeskrivningar med en enkel "skanna alla"-metod; Varje fråga tog 6 sekunder. När vi bytte till HNSW-baserad ANN minskade tiden till 45 millisekunder, med endast 1 % förlust i noggrannhet. Lektion: ANN är obligatoriskt i den stora uppsättningen.
Vanliga misstag
- Inbädda frågan och dokumentet med olika modeller: Resultaten är meningslösa; alltid en modell.
- Hoppa över metadata: Du kan inte filtrera; Du tappar kontrollen över integritet och uppdatering.
- Misstag Inbäddning för kryptering: Inbäddning innehåller reversibel information; Det är fel att anta att känslig information är "dold".
- Att bygga onödigt stor infrastruktur på en liten uppsättning: Ett gigantiskt kluster som hanteras för 5 000 delar är onödig komplexitet.
- Oroa dig inte för mycket om likhetskriteriet: Börja med cosinus i texten; Finjustering kommer senare.
Varning: Inbäddning bäddar in textens betydelse i siffror, men "förstör" inte innehållet. Om en vektordatabas läcker, äventyras de ursprungliga lagrade texterna (i de flesta installationer lagras även texten). Håll vektorförrådet lika konfidentiellt som dokumenten i det.
Sammanfattningsvis
- Inbäddning förvandlar text till en vektor av siffror som bär dess betydelse; Liknande betydelser är nära vektorer.
- Likhet mäts ofta med cosinus; För normaliserade vektorer ger punktprodukt samma resultat.
- I big data ersätter ANN (t.ex. HNSW) exakt sökning: stor hastighet med liten uppoffring av noggrannhet.
- Vektordatabasen utför vektorlagring + likhetssökning + metadatafiltrering; metadata är avgörande för företags RAG.
- Frågan och dokumentet måste översättas med samma inbäddningsmodell; annars kan koordinaterna inte jämföras.
Applikationsuppgift
Extrahera 10 korta passager (3-6 meningar vardera) från dokumentet du valde i föregående enhet. (1) Designa minst tre metadatataggar för varje del (källa, datum och en tredje lämplig för ditt affärssammanhang: avdelning, produkt, integritet, etc.). (2) Skriv vilket metadatafilter som ska användas för 3 olika användarfrågor. (3) Hitta 3 frågedelpar som uttrycker samma betydelse i olika ord (t.ex. "semesterrätt" ↔ "årsledighet") och förklara i en mening varför de inte kommer att matcha nyckelordssökningen utan matchar inbäddning.
checklista
- [ ] Jag kan säga att inbäddning gör texten till en vektor i det semantiska rummet och liknande betydelser är nära.
- Jag vet att [ ] Cosinus-likhet mäter vinkel och är standardinställningen i text.
- [ ] Jag kan förklara varför ANN är nödvändigt i big data.
- [ ] Jag vet varför metadata är avgörande för konfidentialitet och kontroll av färskhet.
- [ ] Jag följer regeln att översätta frågan och dokumentet med samma inbäddningsmodell.