Redigera

Dela via


RAG-generering av inbäddningsfas

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

I föregående steg i din Retrieval-Augmented Generation-lösning (RAG) delade du upp dina dokument i segment och berikade segmenten. I det här steget genererar du inbäddningar för dessa segment och eventuella metadatafält som du planerar att utföra vektorsökningar på.

Den här artikeln är en del av en serie. Läs introduktionen.

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. Varje representation har anslutningar till andra objekt i nätverket. En inbäddning är viktig eftersom den fångar upp objektets semantiska innebörd.

Representationen av ett objekt har anslutningar till representationer av andra objekt, så du kan jämföra objekt matematiskt. I följande exempel visas hur inbäddningar fångar semantisk betydelse och relationer mellan varandra:

embedding (king) - embedding (man) + embedding (woman) = embedding (queen)

Inbäddningar jämförs med varandra genom att använda begreppen likhet och avstånd. Följande rutnät visar en jämförelse av inbäddningar.

diagram som visar en jämförelse av vektorer.

I en RAG-lösning bäddar du ofta in användarfrågan med hjälp av samma inbäddningsmodell som dina segment. Sedan söker du i databasen efter relevanta vektorer för att returnera de mest semantiskt relevanta segmenten. Den ursprungliga texten för relevanta segment skickas till språkmodellen som grunddata.

Not

Vektorer representerar den semantiska betydelsen av text på ett sätt som möjliggör matematisk jämförelse. Du måste rensa segmenten så att den matematiska närheten mellan vektorer korrekt återspeglar deras semantiska relevans.

Inbäddningsmodellens betydelse

Den inbäddningsmodell som du väljer kan avsevärt påverka relevansen för dina vektorsökresultat. Du måste tänka på ordlistan för inbäddningsmodellen. Varje inbäddningsmodell tränas med ett specifikt ordförråd. Till exempel är ordförrådets storlek på BERT-modell cirka 30 000 ord.

Vokabulären för en inbäddningsmodell är viktig eftersom den hanterar ord som inte finns i dess vokabulär på ett unikt sätt. Om ett ord inte finns i modellens vokabulär beräknar det fortfarande en vektor för det. För att göra detta delar många modeller upp orden i underord. De behandlar underorden som distinkta token eller aggregerar vektorerna för underorden för att skapa en enda inbäddning.

Till exempel kanske ordet histamin inte finns i en inbäddningsmodells vokabulär. Ordet histamin har en semantisk betydelse som en kemikalie som kroppen släpper ut, vilket orsakar allergisymtom. Inbäddningsmodellen innehåller inte histamin. Så det kan skilja ordet i underord som finns i dess ordförråd, till exempel hans, taoch min.

diagram som visar ordet histogram uppdelat i följande underord: hans, ta och mina.

De semantiska betydelserna i dessa underord är långt ifrån innebörden av histamin. De enskilda eller kombinerade vektorvärdena i underorden resulterar i sämre vektormatchningar jämfört med om histamin fanns i modellens vokabulär.

Välj en inbäddningsmodell

Fastställ rätt inbäddningsmodell för ditt användningsfall. Överlappningen mellan inbäddningsmodellens vokabulär och dina datas ord när du väljer en inbäddningsmodell.

diagram som visar flödet för hur du väljer en inbäddningsmodell.

Kontrollera först om du har domänspecifikt innehåll. Ä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 kontrollera om du kan hitta entiteter och nyckelord i ditt innehåll på Internet. Om du kan kan en allmän inbäddningsmodell sannolikt också göra det.

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

När du väljer en allmän inbäddningsmodell börjar du med Hugging Face leaderboard. Hämta up-to-date embedding model rankings. Utvärdera hur modellerna fungerar med dina data och börja med de översta modellerna.

Domänspecifikt innehåll

För domänspecifikt innehåll avgör du om du kan använda en domänspecifik modell. Dina data kan till exempel finnas i den biomedicinska domänen, så du kan använda BioGPT-modellen. Den här språkmodellen är förtränad för en stor samling biomedicinsk litteratur. Du kan använda den för biomedicinsk textutvinning och generering. Om domänspecifika modeller är tillgängliga utvärderar du hur dessa modeller fungerar med dina data.

Om du inte har en domänspecifik modell eller om den domänspecifika modellen inte fungerar bra kan du finjustera en allmän inbäddningsmodell med din domänspecifika vokabulär.

Viktig

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

Utvärdera inbäddningsmodeller

Om du vill utvärdera en inbäddningsmodell visualiserar du inbäddningarna och utvärderar avståndet mellan frågan och segmentvektorerna.

Visualisera inbäddningar

Du kan använda bibliotek, till exempel 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 segmenten är från varandra och från frågan. I följande diagram visas segmentvektorer ritade. De två pilarna nära varandra representerar två segmentvektorer. 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.

Graph som visar en visualisering av en inbäddning. Bilden visar flera blå punkter som ritas på en X-Y-skala.

Två pilar pekar på ritpunkter nära varandra, och en annan pil visar en ritpunkt långt borta från de andra två.

Beräkna inbäddningsavstånd

Du kan använda en programmatisk metod för att utvärdera hur väl inbäddningsmodellen fungerar med dina frågor och segment. 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 måste du navigera i en kompromiss mellan prestanda och kostnad. Stora inbäddningsmodeller har vanligtvis bättre prestanda vid benchmarking av datauppsättningar. Men den ökade prestandan tillför kostnader. Stora vektorer kräver mer utrymme i en vektordatabas. De kräver också mer beräkningsresurser och tid för att jämföra inbäddningar. Små inbäddningsmodeller har vanligtvis lägre prestanda på samma prestandamått. De kräver mindre utrymme i vektordatabasen och mindre beräkning och tid för att jämföra inbäddningar.

När du utformar systemet bör du överväga kostnaden för inbäddning när det gäller krav på lagring, beräkning och prestanda. Du måste verifiera modellernas prestanda genom experimentering. De offentligt tillgängliga riktmärkena är huvudsakligen akademiska datamängder och kanske inte direkt gäller för dina affärsdata och användningsfall. Beroende på kraven kan du gynna prestanda jämfört med kostnad eller acceptera en kompromiss med tillräckligt bra prestanda för lägre kostnad.

Nästa steg