Inzicht in semantische zoekopdrachten
Laten we de basisprincipes van semantische zoekopdrachten eens doornemen.
- Hoe het verschilt van standaard lexicale zoekopdrachten.
- Wat is vector insluiten?
- Wat doen vectordatabases?
Wat is semantische zoekopdracht?
Standaard lexicale zoekopdracht, of trefwoord zoeken, onderzoekt documenten door overeenkomende tekens. De query 'licht' komt bijvoorbeeld overeen met de tekst 'helder licht' omdat het teken light in het document wordt weergegeven.
Lexicale zoekopdrachten kunnen worden uitgebreid met fuzzy overeenkomsten; de query 'lichten' kan bijvoorbeeld nog steeds overeenkomen met de tekst 'helder licht' of de verkeerd gespelde lihgts tekst omdat er één teken verschil is (een ontbrekende s, of het verwisselen van g en h). Hoewel fuzzy overeenkomsten en andere technieken zoals stemming nuttig zijn, moet deze techniek overeenkomen met synoniemen of semantisch vergelijkbare taal: verschillende formuleringen, slang, technische vocabulaire, enzovoort. Om de meest relevante zoekresultaten met lexicale zoekopdrachten te bieden, moeten auteurs trefwoorden insluiten in metagegevens of de tekst zelf (wat een onhandige gebruikerservaring kan zijn).
Voer een semantische zoekopdracht in. Bij semantische zoekopdrachten wordt geen teken-gelijkenis gebruikt. In plaats daarvan wordt gebruikgemaakt van numerieke representaties van de concepten in woorden en woordgroepen. Deze numerieke representaties worden insluitingsvectoren of insluitingsvectoren genoemd.
Als twee insluitingen numeriek vergelijkbaar zijn, zijn ze ook semantisch vergelijkbaar. Deze overeenkomst is algemener dan het overlappen van trefwoorden, omdat het minder gevoelig is voor nauwkeurige trefwoordselectie of formulering.
Als u een semantische zoekopdracht wilt uitvoeren, genereert u eerst de insluitingsvector van de query. Vergelijk die vector vervolgens met een database met vectoren. De embeddings die het dichtst bij de query-embedding liggen, zijn de documenten die semantisch het meest op de query lijken.
De meeste relationele databasegebruiksscenario's omvatten niet het opslaan van n-dimensionale vectoren en het berekenen van de numerieke afstand tussen deze vectoren. Efficiënte semantische zoekopdrachten vereisen de functionaliteit van een vectordatabase.
Vectors
Voordat we het hebben over insluitingen, is het handig om te begrijpen wat een vector in deze context is. Een vector is slechts een geordende lijst met getallen, vaak geschreven als een matrix zoals [0.12, -0.8, 3.4]. U kunt een vector beschouwen als een punt of een pijl in een n-dimensionale ruimte, waarbij elk getal een coördinaat is langs één dimensie.
In twee dimensies kan een vector een positie op een platte kaart vertegenwoordigen (x, y). In drie dimensies kan het een punt in de fysieke ruimte vertegenwoordigen (x, y, z). Voor insluitingen breiden we dit idee uit tot honderden of duizenden dimensies. Elke dimensie codeert een aantal geleerde eigenschappen of functies, en samen leggen deze getallen informatie vast over de oorspronkelijke gegevens. Zodra tekst, afbeeldingen of andere gegevens zijn omgezet in vectoren, kunt u ze wiskundig vergelijken om te meten hoe vergelijkbaar of verschillend ze zijn.
Embedderingen
Een insluiting is een specifiek type vector dat semantiek vertegenwoordigt. Insluitingen worden weergegeven als n-dimensionale vectoren: matrices van n getallen. Elke dimensie vertegenwoordigt een semantische kwaliteit zoals bepaald door het insluitmodel.
Als twee insluitvectoren in vergelijkbare richtingen wijzen, vertegenwoordigen ze vergelijkbare concepten, zoals 'helder' en 'zonnig'. Als ze van elkaar af wijzen, vertegenwoordigen ze tegengestelde concepten, zoals 'verdrietig' en 'gelukkig'. De structuur en trainingsgegevens van het insluiten van modellen bepalen wat er als vergelijkbaar en verschillend wordt beschouwd.
Insluitingen kunnen worden toegepast op tekst en elk soort gegevens, zoals afbeeldingen of audio. Het kritieke onderdeel transformeert gegevens in n-dimensionale insluitingsvectoren op basis van een model of functie. De numerieke overeenkomst van embeddings benadert de semantische gelijkenis van hun bijbehorende gegevens.
De numerieke gelijkenis van twee n-dimensionale vectoren v1 en v2 geeft hun puntproduct, geschreven v1·v2. Als u het dot-product wilt berekenen, vermenigvuldigt u de waarden van elke dimensie paars en telt u het resultaat op:
dot_product(v1, v2) = SUM(
v1[0] * v2[0],
v1[1] * v2[1],
...,
v1[n-1] * v2[n-1],
v1[n] * v2[n]
)
Omdat de insluitingen eenheidsvectoren (vectoren van lengte één) zijn, is het puntproduct gelijk aan de cosinus-gelijkenis van de vectoren, een waarde tussen -1 (precies tegenovergestelde richtingen) en 1 (precies dezelfde richting). Vectoren met een cosinus-gelijkenis van nul zijn orthogonaal: semantisch niet-gerelateerd.
U kunt n-dimensionale ruimten visualiseren door ze te projecteren op driedimensionale ruimte met behulp van PCA ( Principal Component Analysis ). PCA is een standaardtechniek om vectordimensies te verminderen. Het resultaat is een vereenvoudigde maar visualiseerbare projectie van de n-dimensionale ruimte. Als u de insluitingen van uw document op deze manier weergeeft, ziet u dat meer vergelijkbare documenten zijn gegroepeerd in clusters, terwijl er meer verschillende documenten verder weg zijn.
Gezien deze definities is het uitvoeren van een semantische zoekopdracht van een query op basis van een verzameling document-insluitingen eenvoudig wiskundig:
- Genereer de insluiting van query's met behulp van een taalmodel.
- Neem het puntproduct van de embedding van de query tegen de vooraf berekende embedding van elk document.
- Sorteer de puntproducten, getallen van -1 tot 1.
- De meest relevante (semantisch vergelijkbare) documenten hebben de hoogste scores en de minst relevante (semantisch verschillende) documenten hebben de laagste scores.
Hoewel dit wiskundig eenvoudig is, is deze oplossing geen eenvoudige of performante query in een relationele database. Gebruik een vectordatabase om dit soort vector-overeenkomstenquery op te slaan en te verwerken.
Vectordatabases
Een vectordatabase optimaliseert de opslag en berekening van veeldimensionale vectoren, zoals insluitingen. Vectordatabases bieden met name snelle en nauwkeurige dot-productberekeningen om een vector-overeenkomstenquery uit te voeren.
Vector gelijkeniszoekopdrachten hebben verschillende toepassingen.
- afbeeldingen zoeken die vergelijkbaar zijn met het insluiten van de queryafbeelding
- documenten zoeken die semantisch lijken op de querytekst
- producten zoeken met vergelijkbare functies en classificaties voor een aanbevelingssysteem
Semantische zoekopdrachten doorzoeken de vectordatabase om de gelijkenis tussen de query-embedding en elke opgeslagen embedding vast te stellen. Toepassingen kunnen vervolgens de gegevens ophalen die overeenkomen met de insluitingen.
Er zijn veel systeemeigen vectordatabases en database-extensies waaruit u kunt kiezen. Met de volgende Azure-services kunt u voldoen aan de behoeften van uw vectordatabase: