Redigera

Dela via


Generera inbäddningar

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

Nu när du har delat upp dina dokument i segment och berikat segmenten är nästa steg att generera inbäddningar för dessa segment och eventuella metadatafält som du planerar att utföra vektorsökningar över. En inbäddning är en matematisk representation av ett objekt, till exempel text. När ett neuralt nätverk tränas skapas många representationer av ett objekt och varje representation har anslutningar till andra objekt i nätverket. En inbäddning är en av representationerna av objektet som har valts eftersom det avbildar objektets semantiska innebörd.

Eftersom en inbäddning är en matematisk representation av objektet och representationen har anslutningar till representationer av andra objekt, kan du jämföra objekt matematiskt. Ett berömt exempel som visar hur inbäddningar fångar semantisk betydelse och relationer mellan varandra är:

embedding("king") – embedding("man") + embedding("woman") ≈ embedding("queen")

Inbäddningar jämförs med varandra med begreppen likhet och avstånd. Följande diagram visar hur inbäddningar kan jämföras.

Diagram som visar hur vektorer jämförs.

Figur 1. Jämföra inbäddningar

I en RAG-lösning (Retrieval-Augmented Generation) bäddar du ofta in användarfrågan med samma inbäddningsmodell som dina segment och söker efter relevanta vektorer från databasen för att returnera de mest semantiskt relevanta segmenten. Den ursprungliga texten för relevanta segment skickas sedan till den stora språkmodellen som grunddata.

Kommentar

Den här funktionen hos vektorer betonar vikten av att rensa segmenten så att matematisk närhet kan spåras närmare med semantisk relevans.

Den här artikeln ingår i en serie. Läs introduktionen.

Inbäddningsmodellens betydelse

Den inbäddningsmodell du väljer kan ha en betydande effekt på relevansen för dina vektorsökresultat. En av de viktigaste faktorerna du måste tänka på när du väljer en inbäddningsmodell är modellens vokabulär. Varje inbäddningsmodell tränas med ett specifikt ordförråd. Vokabulärstorleken för BERT är till exempel cirka 30 000 ord.

Vokabulären för en inbäddningsmodell är viktig på grund av hur inbäddningsmodeller behandlar ord som inte finns i deras vokabulär. Även om ordet inte finns i dess vokabulär behöver modellen fortfarande beräkna en vektor för det. För att göra detta delar många modeller upp orden i underord, som de behandlar som distinkta token eller aggregerar vektorerna för underorden för att skapa en enda inbäddning.

Diagram som visar ordet histogram som delas upp i följande underord: hans, ta och mina.

Figur 2. Dela upp ett okänt ord i underord

Låt oss ta ett fiktivt exempel där ordet "histamin" inte finns i inbäddningsmodellens vokabulär. "Histamin" har en semantisk betydelse som en kemikalie som din kropp släpper ut, vilket orsakar många symtom på allergier. Eftersom inbäddningsmodellen inte innehåller "histamin" kan den dela upp den i underord som finns i dess vokabulär, till exempel "his", "ta" och "mine". De semantiska betydelserna i dessa underord ligger inte i närheten av innebörden av "histamin". De enskilda eller aggregerade vektorvärdena i underorden ger sämre vektormatchningar än om "histamin" fanns i modellens vokabulär.

Välja en inbäddningsmodell

Att fastställa rätt inbäddningsmodell för ditt användningsfall är en mänsklig aktivitet. Överlappningen med inbäddningsmodellens vokabulär med dina datas ord bör vara en viktig faktor som du bör tänka på när du väljer din inbäddningsmodell.

Diagram flödet för att välja en inbäddningsmodell.

Figur 3. Välja ett inbäddningsmodellflöde

Det första du bör avgöra är om ditt innehåll är domänspecifikt. Är dina dokument till exempel specifika för ett användningsfall, din organisation eller en bransch? Ett bra sätt att fastställa domänspecifikhet är att se om entiteterna och nyckelorden i ditt innehåll är allmänt tillgängliga eller kan hittas på Internet. Om de är det är det troligt att en allmän inbäddningsmodell gör det.

Allmänt eller icke-domänspecifikt innehåll

När du väljer en allmän inbäddningsmodell är det bra att börja på hugging Face-rankningslistan. Den här webbplatsen innehåller en uppdaterad rangordning av inbäddningsmodeller. Utvärdera hur modellerna fungerar med dina data och börja med de översta modellerna.

Domänspecifikt innehåll

För innehåll som är domänspecifikt är det första steget att avgöra om det finns en domänspecifik modell som du kan använda. Anta till exempel att dina data finns i den biomedicinska domänen. Du bör överväga att använda BioGPT-modellen, som är en språkmodell som förtränats på en stor korpus av biomedicinsk litteratur. Den här modellen är avsedd för biomedicinsk textutvinning och generering. Om domänmodeller är tillgängliga börjar du med att utvärdera hur dessa modeller fungerar med dina data.

Om det inte finns några domänspecifika modeller tillgängliga, eller om de domänspecifika modellerna inte fungerar bra, är nästa alternativ att finjustera en allmän inbäddningsmodell med din domänspecifika vokabulär.

Viktigt!

För alla modeller du väljer måste du kontrollera att licensen är lämplig för dina behov och att modellen tillhandahåller det språkstöd som krävs.

Utvärdera inbäddningsmodeller

Två effektiva sätt att utvärdera en inbäddningsmodell är att visualisera inbäddningarna och utvärdera avståndet mellan fråge- och segmentvektorer.

Visualisera inbäddningar

Du kan använda bibliotek som t-SNE för att rita vektorerna för dina segment och din fråga i en X-Y-graf. Du kan sedan avgöra hur långt ifrån varandra segmenten är och frågan. Bilden visar segmentvektorer ritade. De två pilarna nära varandra representerar två segmentvektorer medan den andra pilen representerar en frågevektor. Du kan använda den här visualiseringen för att förstå hur långt frågan kommer från segmenten.

Visualisering av en inbäddning. Bilden visar ett gäng blå punkter ritade på en X-Y-skala.

Figur 4. Rita inbäddningar

Beräknar inbäddningsavstånd

Ett programmatiskt sätt att utvärdera hur väl inbäddningsmodellen fungerar med dina frågor och segment är att beräkna avståndet mellan frågevektorerna och segmentvektorerna. Du kan använda euklidiska avståndet eller Manhattan-avståndet.

Bädda in ekonomi

När du väljer en inbäddningsmodell finns det en kompromiss mellan prestanda och kostnad. Större inbäddningsmodeller har vanligtvis bättre prestanda vid benchmarking av datauppsättningar. Den ökade prestandan kommer dock till en kostnad. Större vektorer kräver mer utrymme för att lagras i en vektordatabas och kräver mer beräkningsresurser och tid vid jämförelse av inbäddningar. Mindre inbäddningsmodeller har vanligtvis lägre prestanda på samma prestandamått. De kräver mindre utrymme i vektordatabasen och kräver mindre beräkning och tid vid jämförelse av inbäddningar.

När du utformar systemet bör du ta hänsyn till kostnaden för inbäddning när det gäller både lagring, beräkning och prestandakrav. Det är viktigt att validera modellernas prestanda genom experimentering. De offentligt tillgängliga riktmärkena är huvudsakligen akademiska datamängder. De flesta resultat kan inte överföras direkt till affärsdata och användningsfall. Beroende på kraven kan du gynna prestanda framför kostnader eller acceptera en kompromiss med tillräckligt bra prestanda i utbyte mot lägre kostnader.

Nästa steg