Redigera

Dela via


BErikningsfas för RAG-segment

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

När du har brutit upp dina dokument i en samling segment är nästa steg att berika varje segment genom att rensa det och utöka det med metadata. Genom att rensa segmenten kan du uppnå bättre matchningar för semantiska frågor i en vektorsökning. Genom att lägga till metadata kan du stödja sökningar av segment som går utöver semantiska sökningar. Både rensning och förstoring innebär att utöka schemat för segmentet.

Den här artikeln beskriver olika sätt att utöka dina segment, inklusive några vanliga rengöringsåtgärder som du kan utföra på segment för att förbättra vektorjämförelser. Den beskriver också några vanliga metadatafält som du kan lägga till i dina segment för att utöka ditt sökindex.

Den här artikeln är en del av en serie. Här är den introduktionen.

Följande kodexempel visar segment som är berikade med data.

diagram som visar JSON-poster. Ett enda fält utökas.

Rensa data

Genom att segmentera dina data kan arbetsbelastningen hitta de mest relevanta segmenten, vanligtvis genom att vektorisera dessa segment och lagra dem i en vektordatabas. En optimerad vektorsökning returnerar endast de rader i databasen som har de närmaste semantiska matchningarna till frågan. Målet med att rensa data är att stödja närhetsmatchningar genom att eliminera potentiella skillnader som inte är material för textens semantik. Följande är några vanliga rengöringsprocedurer.

Not

Du bör returnera det ursprungliga, orenade segmentet som frågeresultat, så du bör lägga till ytterligare ett fält för att lagra de rensade och vektoriserade data.

  • Implementera strategier för lägre indelning. Med gemener kan ord med versaler, till exempel ord i början av en mening, matcha motsvarande ord i en mening. Inbäddningar är vanligtvis skiftlägeskänsliga, så "Cheetah" och "gepard" skulle resultera i en annan vektor för samma logiska ord. För den inbäddade frågan "vad är snabbare, en gepard eller en puma?" är inbäddningen "geparder snabbare än pumas" en närmare matchning än "Geparder är snabbare än pumas". Vissa gemenerande strategier innehåller gemener av alla ord, inklusive lämpliga substantiv, medan andra strategier bara innehåller de första orden i meningar.

  • Ta bort stoppord. Stoppord är ord som "a", "an" och "the". Du kan ta bort stoppord för att minska den resulterande vektorns dimension. Om du tar bort stoppord i föregående exempel är "en gepard snabbare än en puma" och "geparden är snabbare än puma" vektoriellt lika med "gepard snabbare puma". Det är dock viktigt att förstå att vissa stoppord har semantisk betydelse. Till exempel kan "inte" betraktas som ett stoppord, men det har betydande semantisk betydelse. Du måste testa för att fastställa effekten av att ta bort stoppord.

  • Åtgärda stavfel. Ett felstavat ord matchar inte det korrekt stavade ordet i inbäddningsmodellen. Till exempel är "cheatah" inte detsamma som "gepard" i inbäddningen. Du bör åtgärda stavfel för att lösa problemet.

  • Ta bort Unicode-tecken. Om du tar bort Unicode-tecken kan du minska bruset i segmenten och minska dimensionaliteten. Precis som stoppord kan vissa Unicode-tecken innehålla relevant information. Det är viktigt att utföra tester för att förstå effekten av att ta bort Unicode-tecken.

  • Normalisera text. Att normalisera text enligt standarder som att utöka förkortningar, konvertera tal till ord och expandera sammandragningar, till exempel att expandera "I'm" till "I am", kan hjälpa till att öka prestandan för vektorsökningar.

Utöka segment

Semantiska sökningar mot de vektoriserade segmenten fungerar bra för vissa typer av frågor, men inte lika bra för andra. Beroende på vilka typer av frågor du behöver stöd för kan du behöva utöka segmenten med ytterligare information. De ytterligare metadatafälten lagras alla på samma rad som dina inbäddningar och kan användas i söklösningen antingen som filter eller som en del av en sökning.

Följande bild visar JSON för fullständigt berikat innehåll och beskriver hur metadata kan användas av en sökplattform.

diagram som visar JSON för fullständigt berikat innehåll och hur metadata kan användas av en sökplattform.

De metadatakolumner som du behöver lägga till beror på din problemdomän, inklusive vilken typ av data du har och vilka typer av frågor du vill stödja. Du måste analysera användarupplevelsen, tillgängliga data och resultatkvaliteten som du försöker uppnå. Därifrån kan du avgöra vilka metadata som kan hjälpa dig att uppfylla arbetsbelastningens krav.

Här följer några vanliga metadatafält, tillsammans med den ursprungliga segmenttexten, viss vägledning om deras potentiella användningsområden samt verktyg eller tekniker som ofta används för att generera metadatainnehållet.

  • ID. Ett ID identifierar unikt ett segment. Ett unikt ID är användbart under bearbetningen för att avgöra om ett segment redan finns i arkivet. Ett ID kan vara en hash för något nyckelfält. Tools: Ett hash-bibliotek.

  • Titel. En rubrik är ett användbart returvärde för ett segment. Den innehåller en snabb sammanfattning av innehållet i segmentet. Sammanfattningen kan också vara användbar för att fråga med en indexerad sökning eftersom den kan innehålla nyckelord för matchning. Tools: En språkmodell.

  • Sammanfattning. Sammanfattningen liknar rubriken eftersom den är ett vanligt returvärde och kan användas i indexerade sökningar. Sammanfattningar är vanligtvis längre än rubriker. Tools: En språkmodell.

  • Omformulering av segmentet. Omformning av ett segment kan vara användbart som ett vektorsökfält eftersom omformning fångar variationer i språket, till exempel synonymer och parafraser. Tools: En språkmodell.

  • Nyckelord. Nyckelordssökningar är användbara för data som inte är kontextuella, för att söka efter en exakt matchning och när en specifik term eller ett visst värde är viktigt. En biltillverkare kan till exempel ha granskningar eller prestandadata för var och en av sina modeller i flera år. "Review for product X for year 2009" är semantiskt som "Review for product X for 2010" och "Review for product Y for 2009" (Granskning för produkt X för 2010) och "Review for product Y for 2009". I det här fallet är det effektivare att matcha nyckelord för produkten och året. Tools: A language model, RAKE, KeyBERT, multi-rake.

  • Enheter. Entiteter är specifika informationsdelar, till exempel personer, organisationer och platser. Precis som nyckelord är entiteter bra för exakta matchningssökningar eller när specifika entiteter är viktiga. Tools: spaCy, Stanford Named Entity Recognizer (Stanford NER), scikit-learn, Natural Language Toolkit (NLTK).

  • Rensad segmenttext. Texten i det rensade segmentet. Tools: En språkmodell.

  • Frågor som segmentet kan besvara. Ibland är frågan som är inbäddad inte en nära matchning till det segment som är inbäddat. Frågan kan till exempel vara liten i förhållande till segmentstorleken. Det kan vara bättre att formulera de frågor som segmentet kan besvara och göra en vektorsökning mellan användarens faktiska fråga och de förformulerade frågorna. Tools: En språkmodell.

  • Källa. Källan till segmentet kan vara värdefull som en retur för frågor. När källan returneras kan frågeobjektet citera den ursprungliga källan.

  • Språk. Språket i segmentet kan vara användbart som ett filter i frågor.

Kostnaden för att utöka

Det kan vara dyrt att använda vissa språkmodeller för att utöka segment. Du måste beräkna kostnaden för varje berikning som du överväger och multiplicera den med det uppskattade antalet segment över tid. Du bör använda den här informationen, tillsammans med din testning av de berikade fälten, för att fastställa det bästa affärsbeslutet.

Nästa steg