Winst:
- Begrijp dat het inbedden de tekst verandert in een vector in de semantische ruimte en dat vergelijkbare betekenissen nauwe vectoren zijn
- Uitleggen hoe ANN-zoeken werkt met cosinus- en puntovereenkomststatistieken
- Het selecteren van veelgebruikte vectordatabases op basis van kosten, schaal en behoefte aan metadatafiltering
De kern van RAG is één enkele vraag: "Welk stuk tekst lijkt het meest op de vraag van de gebruiker?" De computer verwerkt tekst met cijfers, niet letterlijk. Daarom moeten we de tekst eerst omzetten in cijfers die de betekenis ervan dragen. Dat is wat insluiten is: het proces waarbij een tekst wordt omgezet in een reeks getallen (vector) die de betekenis van die tekst weergeeft. Wanneer u dit onderdeel voltooit, weet u hoe inbedding werkt, hoe gelijkenis wordt gemeten en hoe u de juiste vectordatabase kiest.
Inbedding: betekenis vertalen in coördinaten
Een embeddingsmodel (een speciaal getrainde kunstmatige intelligentie) zet de door u aangeleverde tekst om in een vector van bijvoorbeeld 1024 cijfers. Beschouw deze vector als een coördinaat in een multidimensionale ruimte. De magie is dit: teksten die qua betekenis vergelijkbaar zijn, vallen in deze ruimte in nauwe coördinaten.
Een eenvoudig voorbeeld: “jaarlijks verlof”, “vakantierecht” en “jaarlijks betaald verlof” gebruiken verschillende woorden, maar betekenen hetzelfde: hun vectoren liggen dicht bij elkaar. ‘Payrollrekening’ is een andere zaak – de vector ervan is ver weg. Dus de gebruiker vraagt: "Hoeveel vakantiedagen heb ik?" Als je ernaar vraagt, kunnen we zelfs een document vinden dat niet het woord "vakantie" bevat, maar zegt "het jaarlijkse verlof bedraagt 14 dagen". Dit is wat klassiek zoeken op trefwoord (zoeken dat precies overeenkomt met het woord) niet kan.
Tip: Beschouw inbedding als een ‘vingerafdruk van betekenis’. De vingerafdrukken van twee zinnen met dezelfde betekenis lijken op elkaar; Zelfs als de woorden anders zijn.
Een belangrijke regel: het model dat u gebruikt bij het insluiten van de vraag moet hetzelfde model zijn dat u gebruikt bij het insluiten van documenten. Verschillende modellen produceren verschillende ruimtes; coördinaten worden onvergelijkbaar.
Hoe gelijkenis meten?
Er zijn verschillende methoden om te meten hoe vergelijkbaar twee vectoren zijn. De meest voorkomende is cosinusgelijkenis: het meet de hoek tussen twee vectoren. Als de hoek klein is (vectoren wijzen in dezelfde richting), is de gelijkenis groot. De waarde ligt tussen −1 en 1; Bijna 1 = zeer vergelijkbaar.
criterium
Wat meet het?
Wanneer heeft dit de voorkeur?
Cosinus
Hoek (richting) tussen vectoren
De meest voorkomende; standaard in semantische gelijkenis van tekst
Puntproduct
Richting + omvang samen
Als de vectoren worden genormaliseerd, geeft dit hetzelfde resultaat als de cosinus; is snel
Euclidische (euclidische afstand)
Rechte afstand tussen coördinaten
In sommige clusterscenario's; minder gebruikt in tekst
In de praktijk produceren de meeste inbeddingsmodellen genormaliseerde vectoren (grootte ingesteld op 1); In dit geval geven cosinus- en puntproduct dezelfde volgorde. Wees niet verlamd door de beslissing: begin met cosinus.
Van de miljoenen vectoren is het vergelijken ervan één voor één traag. Daarom gebruiken vectordatabases ANN-algoritmen (Approximate Nearest Neighbor). ANN vindt zeer snel "bijna exact het dichtst" in plaats van "exact het dichtst". De methode genaamd HNSW kan bijvoorbeeld binnen enkele milliseconden resultaten retourneren, zelfs voor 10 miljoen vectoren. Je wint grote snelheid voor een klein offer aan nauwkeurigheid.
Wat doet vectordatabase?
Een vectordatabase doet drie dingen tegelijk: (1) slaat vectoren op, (2) vindt snel vectoren die het meest lijken op een queryvector, (3) filtert op metagegevens naast elke vector. Metagegevens zijn de tags die u aan dat stuk koppelt: bronbestand, datum, afdeling, privacyniveau, enz. Het filteren van metagegevens is van cruciaal belang in zakelijke RAG; omdat u beperkingen moet kunnen instellen zoals "alleen zoeken in de 2025-documenten van de afdeling Financiën".
# Registreer u bij de vectordatabase (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Jaarlijks betaald verlof is 14 dagen..."), text="Jaarlijks betaald verlof is 14 dagen...", metadata={"source": "ik_el_kitabi.pdf", "department": "IK", "date": "2025-06", "privacy": "ic"})
# Metadata gefilterd zoeken (conceptueel)result = vektor_db.search( vektor=embed("hoeveel verlofdagen heb ik?"), top_k=4, filter={"afdeling": "HR", "privacy": ["intern", "aan"]})
Het kiezen van de juiste database
voertuig
Uitgelicht aspect
Geschikte situatie
Ingebouwd / op bestanden gebaseerd (ingebedde bibliotheek)
Geen installatie, enkele machine
Prototype, kleine kit (< paar honderdduizend onderdelen)
Beheerde cloudservice
Schalen en onderhoud vallen niet onder uw verantwoordelijkheid
Productie, snelgroeiende data, klein team
Open source op uw eigen server
Volledige controle, uw gegevens blijven van u
Privacyverplichting, bestaande infrastructuur
Aanvulling op bestaande database
U beheert geen afzonderlijke systemen
Vectorondersteuning toevoegen aan de database die u al gebruikt
Vraag bij het kiezen: hoeveel stuks zullen er zijn? Hoe cruciaal is het filteren van metagegevens? Kunnen gegevens buiten het bedrijf terechtkomen (vertrouwelijkheid)? Kan het team een infrastructuur exploiteren? Het is vaak verstandig om klein te beginnen en uit te breiden als dat nodig is.
Zwakke aanpak/sterke aanpak
Zwak (eenvoudige inbedding opslaan, geen metagegevens):
Sla gewoon de tekst en de vector op. Zoeken: retourneer de 4 meest vergelijkbare vectoren.# Probleem: kan niet filteren zoals "alleen huidige HR-documenten";# oude/niet-geautoriseerde delen kunnen ook in het antwoord worden opgenomen.
Krachtig (rijke metadata + gefilterd zoeken):
Voeg bron, datum, afdeling en privacytag toe aan elk stuk. Filter op basis van de autoriteit en actualiteit van de gebruiker tijdens de zoekopdracht: filter = {"privacy": user_authority, "date_date": "2024-01"}# Het resultaat is dus zowel veilig als up-to-date.
Drie mini-hoesjes
Geval 1 — Verkeerde modelmix. Een team heeft documenten met model A en vragen met model B ingesloten. De zoekopdrachten leverden betekenisloze resultaten op en het correcte antwoordpercentage bleef op 31%. Toen ik overstapte naar één enkel model (beide hetzelfde inbeddingsmodel), steeg het percentage naar 88%. Les: vraag en document moeten zich in dezelfde ruimte bevinden.
Geval 2 — Privacyrisico zonder metadata. In een zorgbedrijf werden alle afdelingsdocumenten zonder metadata in één pool gegooid. Wanneer een verkoopmedewerker een vraag stelde, contextualiseerde het systeem een stukje patiëntgegevens. Toen metadata + filter werd toegevoegd (afhankelijk van het autorisatieniveau), werd dit risico geëlimineerd; Bij het ophalen worden 12 niet-geautoriseerde stukken helemaal niet meegebracht.
Geval 3 — Schaalknelpunt. Een e-commercebedrijf doorzocht 8 miljoen productbeschrijvingen met een eenvoudige 'alles scannen'-methode; Elke zoekopdracht duurde 6 seconden. Toen we overschakelden naar op HNSW gebaseerde ANN, daalde de tijd tot 45 milliseconden, met slechts 1% verlies aan nauwkeurigheid. Les: ANN is verplicht in de grote set.
Veel voorkomende fouten
- Het inbedden van de vraag en het document met verschillende modellen: de resultaten zijn zinloos; altijd één model.
- Metagegevens overslaan: u kunt niet filteren; U verliest de controle over privacy en actualiteit.
- Inbedding verwarren met encryptie: Inbedding bevat omkeerbare informatie; Het is verkeerd om aan te nemen dat gevoelige gegevens ‘verborgen’ zijn.
- Het bouwen van een onnodig grote infrastructuur op een kleine set: een gigantisch cluster dat voor 5.000 onderdelen wordt beheerd, is onnodige complexiteit.
- Maak je niet al te veel zorgen over het gelijkheidscriterium: begin met cosinus in de tekst; Fijnafstemming komt later.
Let op: bij het insluiten wordt de betekenis van de tekst in cijfers vastgelegd, maar wordt de inhoud niet "vernietigd". Als een vectordatabase lekt, komen ook de origineel opgeslagen teksten (in de meeste installaties wordt de tekst ook opgeslagen) in gevaar. Houd de vectorrepository net zo vertrouwelijk als de documenten erin.
Samengevat
- Door het inbedden wordt tekst een vector van cijfers die de betekenis ervan draagt; Soortgelijke betekenissen zijn nauwe vectoren.
- Gelijkenis wordt vaak gemeten aan de hand van cosinus; Voor genormaliseerde vectoren geeft het puntproduct hetzelfde resultaat.
- In big data vervangt ANN (bijvoorbeeld HNSW) exact zoeken: grote snelheid met weinig opoffering aan nauwkeurigheid.
- Vectordatabase voert vectoropslag uit + zoeken naar overeenkomsten + filteren van metagegevens; metadata zijn essentieel voor zakelijke RAG.
- De vraag en het document moeten met hetzelfde inbeddingsmodel worden vertaald; anders kunnen de coördinaten niet worden vergeleken.
Applicatie taak
Haal 10 korte passages (elk 3-6 zinnen) uit het document dat je in het vorige blok hebt geselecteerd. (1) Ontwerp ten minste drie metadatatags voor elk stuk (bron, datum en een derde die past bij uw zakelijke context: afdeling, product, privacy, enz.). (2) Schrijf op welk metadatafilter moet worden toegepast voor 3 verschillende gebruikersvragen. (3) Zoek drie vraag-deelparen die dezelfde betekenis in verschillende woorden uitdrukken (bijv. “vakantierecht” ↔ “jaarlijks verlof”) en leg in één zin uit waarom ze niet overeenkomen met zoeken op trefwoord, maar wel met insluiten.
controlelijst
- [ ] Ik kan zien dat het inbedden de tekst verandert in een vector in de semantische ruimte en dat vergelijkbare betekenissen dichtbij zijn.
- Ik weet dat [ ] Cosinus-gelijkenis de hoek meet en de standaardvoorkeur is in tekst.
- [ ] Ik kan uitleggen waarom ANN nodig is in big data.
- [ ] Ik weet waarom metadata van cruciaal belang zijn voor de controle op vertrouwelijkheid en versheid.
- [ ] Ik volg de regel om de vraag en het document met hetzelfde inbeddingsmodel te vertalen.