Bewerken

Delen via


Insluitingen genereren

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Nu u uw documenten in segmenten hebt opgesplitst en de segmenten hebt verrijkt, is de volgende stap het genereren van insluitingen voor deze segmenten en metagegevensvelden waarvoor u vectorzoekopdrachten wilt uitvoeren. Een insluiting is een wiskundige weergave van een object, zoals tekst. Wanneer een neuraal netwerk wordt getraind, worden veel representaties van een object gemaakt en heeft elke weergave verbindingen met andere objecten in het netwerk. Een insluiting is een van de weergaven van het object dat is geselecteerd, omdat hiermee de semantische betekenis van het object wordt vastgelegd.

Omdat een insluiting een wiskundige weergave van dat object is en die weergave verbindingen heeft met representaties van andere objecten, kunt u objecten wiskundig vergelijken. Een beroemd voorbeeld om te laten zien hoe insluitingen semantische betekenis en relaties tussen elkaar vastleggen:

embedding("king") - embedding("man") + embedding("vrouw") ≈ embedding("queen")

Insluitingen worden vergeleken met elkaar met behulp van de noties van overeenkomsten en afstand. In het volgende diagram ziet u hoe insluitingen kunnen worden vergeleken.

Diagram waarin wordt getoond hoe vectoren worden vergeleken.

Figuur 1. Insluitingen vergelijken

In een RAG-oplossing (Retrieval-Augmented Generation) sluit u de gebruikersquery vaak in met hetzelfde insluitingsmodel als uw segmenten en zoekt u naar relevante vectoren uit uw database om de meest semantisch relevante segmenten te retourneren. De oorspronkelijke tekst van de relevante segmenten wordt vervolgens als basisgegevens doorgegeven aan het grote taalmodel.

Notitie

Deze functie van vectoren benadrukt het belang van het reinigen van de segmenten, zodat wiskundige nabijheid nauwkeuriger kan worden bijgehouden met semantische relevantie.

Dit artikel maakt deel uit van een serie. Lees de inleiding.

Belang van het insluitmodel

Het insluitmodel dat u kiest, kan een aanzienlijk effect hebben op de relevantie van uw vectorzoekresultaten. Een van de belangrijkste factoren die u moet overwegen bij het kiezen van een insluitmodel is het vocabulaire van het model. Elk insluitmodel wordt getraind met een specifieke woordenlijst. De woordenlijstgrootte van BERT is bijvoorbeeld ongeveer 30.000 woorden.

Het vocabulaire van een insluitmodel is belangrijk vanwege de wijze waarop insluitmodellen woorden behandelen die niet in hun woordenschat voorkomen. Hoewel het woord zich niet in de woordenlijst bevindt, moet het model nog steeds een vector hiervoor berekenen. Om dit te doen, splitsen veel modellen de woorden op in subwoorden, die ze behandelen als afzonderlijke tokens of aggregeren ze de vectoren voor de subwoorden om één insluiting te maken.

Diagram met het woord histogram dat wordt onderverdeeld in de volgende subwoorden: zijn, ta en de mijne.

Figuur 2. Een onbekend woord opsplitsen in subwoorden

Laten we een fictief voorbeeld nemen waarin het woord 'histamine' zich niet in de woordenlijst van het insluitende model bevindt. "Histamine" heeft een semantische betekenis als een chemische stof die uw lichaam vrijgeeft, wat veel symptomen van allergieën veroorzaakt. Omdat het insluitmodel geen 'histamine' bevat, kan het worden opgesplitst in subwoorden die zich in de woordenschat bevinden, zoals 'his', 'ta' en 'mine'. De semantische betekenissen van deze subwoorden zijn nergens dicht bij de betekenis van 'histamine'. De afzonderlijke of geaggregeerde vectorwaarden van de subwoorden produceren slechtere vectorovereenkomsten dan als 'histamine' zich in de woordenlijst van het model bevindt.

Een insluitmodel kiezen

Het bepalen van het juiste insluitingsmodel voor uw use-case is een menselijke activiteit. De overlapping met de woorden van het insluitmodel met de woorden van uw gegevens moet een belangrijke factor zijn die u moet overwegen bij het kiezen van uw insluitingsmodel.

Diagram de stroom van het kiezen van een insluitmodel.

Figuur 3. Een stroom voor het insluiten van een model kiezen

Het eerste wat u moet bepalen, is of uw inhoud domeinspecifiek is. Zijn uw documenten bijvoorbeeld specifiek voor een use-case, uw organisatie of een branche? Een goede manier om domeinspecifiekheid te bepalen, is om te zien of de entiteiten en trefwoorden in uw inhoud algemeen beschikbaar of vindbaar zijn op internet. Als dat het geval is, is het waarschijnlijk dat een algemeen insluitmodel dat wel doet.

Algemene of niet-domeinspecifieke inhoud

Wanneer u een algemeen insluitingsmodel kiest, kunt u beginnen met het leaderboard van Hugging Face. Deze site biedt een up-to-date rangschikking van insluitmodellen. Evalueer hoe de modellen met uw gegevens werken, te beginnen met de topclassificatiemodellen.

Domeinspecifieke inhoud

Voor inhoud die specifiek is voor een domein, is de eerste stap om te bepalen of er een domeinspecifiek model beschikbaar is dat u kunt gebruiken. Stel dat uw gegevens zich in het bio-domein bevinden. U moet overwegen om het BioGPT-model te gebruiken. Dit is een taalmodel dat vooraf is getraind op een groot scala aan bioliteratuur. Dit model is bedoeld voor bio-tekstanalyse en -generatie. Als er domeinmodellen beschikbaar zijn, begint u met het evalueren van de werking van deze modellen met uw gegevens.

Als er geen domeinspecifieke modellen beschikbaar zijn of als de domeinspecifieke modellen niet goed presteren, is de volgende optie het verfijnen van een algemeen insluitmodel met uw domeinspecifieke woordenlijst.

Belangrijk

Voor elk model dat u kiest, moet u controleren of de licentie geschikt is voor uw behoeften en het model de benodigde taalondersteuning biedt.

Insluitingsmodellen evalueren

Twee effectieve methoden voor het evalueren van een insluitmodel zijn het visualiseren van de insluitingen en het evalueren van de afstand tussen vraag- en segmentvectoren.

Insluitingen visualiseren

U kunt bibliotheken zoals t-SNE gebruiken om de vectoren voor uw segmenten en uw vraag in een X-Y-grafiek te tekenen. Vervolgens kunt u bepalen hoe ver de segmenten van elkaar liggen en de vraag. In de afbeelding ziet u segmentvectoren die zijn uitgezet. De twee pijlen in de buurt van elkaar vertegenwoordigen twee segmenten vectoren terwijl de andere pijl een vraagvector vertegenwoordigt. U kunt deze visualisatie gebruiken om te begrijpen hoe ver de vraag zich van de segmenten bevindt.

Visualisatie van een insluiting. In de afbeelding ziet u een aantal blauwe stippen die zijn getekend op een X-Y-schaal.

Figuur 4. Insluitingen tekenen

De insluitingsafstanden berekenen

Een programmatisch middel om te evalueren hoe goed uw insluitmodel werkt met uw vragen en segmenten is het berekenen van de afstand tussen de vraagvectoren en de segmentvectoren. U kunt de Euclidische afstand of de Manhattan-afstand gebruiken.

Economie insluiten

Bij het kiezen van een insluitmodel is er een afweging tussen prestaties en kosten. Grotere insluitingsmodellen hebben meestal betere prestaties voor benchmarkinggegevenssets. De verbeterde prestaties zijn echter kosten. Voor grotere vectoren is meer ruimte nodig om op te slaan in een vectordatabase en meer rekenresources en -tijd nodig bij het vergelijken van insluitingen. Kleinere insluitingsmodellen hebben meestal lagere prestaties op dezelfde benchmarks. Ze vereisen minder ruimte in uw vectordatabase en vereisen minder rekenkracht en tijd bij het vergelijken van insluitingen.

Bij het ontwerpen van uw systeem moet u rekening houden met de kosten voor het insluiten van opslag, rekenkracht en prestatievereisten. Het valideren van de prestaties van de modellen via experimenten is van cruciaal belang. De openbaar beschikbare benchmarks zijn voornamelijk academische gegevenssets. De meeste resultaten kunnen niet rechtstreeks worden omgezet in zakelijke gegevens en gebruiksvoorbeelden. Afhankelijk van de vereisten kunt u de prestaties ten opzichte van de kosten bevorderen of een afweging van goede prestaties accepteren in ruil voor lagere kosten.

Volgende stappen