Integrerad datasegmentering och inbäddning i Azure AI Search

Viktigt!

Den här funktionen är i offentlig förhandsversion under kompletterande användningsvillkor. REST API:et 2023-10-01-Preview stöder den här funktionen.

Integrerad vektorisering lägger till datasegmentering och text-till-vektor-inbäddning till färdigheter i indexerbaserad indexering. Den lägger också till text-till-vektorkonverteringar till frågor.

Den här funktionen är endast förhandsgranskning. I den allmänt tillgängliga versionen av vektorsökning och i tidigare förhandsversioner förlitar sig datasegmentering och vektorisering på externa komponenter för segmentering och vektorer, och programkoden måste hantera och samordna varje steg. I den här förhandsversionen är segmentering och vektorisering inbyggda i indexering via kunskaper och indexerare. Du kan konfigurera en kompetensuppsättning som segmenterar data med hjälp av färdigheten Textdelning och sedan anropa en inbäddningsmodell med hjälp av antingen AzureOpenAIEmbedding-färdigheten eller en anpassad färdighet. Alla vektoriserare som används under indexering kan också anropas på frågor för att konvertera text till vektorer.

För indexering kräver integrerad vektorisering:

För frågor:

  • En vektoriserare som definierats i indexschemat, tilldelats till ett vektorfält och som används automatiskt vid frågetillfället för att konvertera en textfråga till en vektor.

Vektorkonverteringar är enkelriktade: text-till-vektor. Det finns ingen vektor-till-text-konvertering för frågor eller resultat (du kan till exempel inte konvertera ett vektorresultat till en sträng som kan läsas av människor).

Komponentdiagram

Följande diagram visar komponenterna i integrerad vektorisering.

Diagram över komponenter i ett integrerat vektoriseringsarbetsflöde.

Här är en checklista över de komponenter som ansvarar för integrerad vektorisering:

  • En datakälla som stöds för indexerarbaserad indexering.
  • Ett index som anger vektorfält och en vektoriserardefinition tilldelad till vektorfält.
  • En kompetensuppsättning som ger en färdighet för textdelning för datasegmentering och en färdighet för vektorisering (antingen AzureOpenAiEmbedding-färdigheten eller en anpassad färdighet som pekar på en extern inbäddningsmodell).
  • Du kan också använda indexprojektioner (även definierade i en kompetensuppsättning) för att skicka segmenterade data till ett sekundärt index
  • En inbäddningsmodell, distribuerad i Azure OpenAI eller tillgänglig via en HTTP-slutpunkt.
  • En indexerare för att köra processen från slutpunkt till slutpunkt. En indexerare anger också ett schema, fältmappningar och egenskaper för ändringsidentifiering.

Den här checklistan fokuserar på integrerad vektorisering, men din lösning är inte begränsad till den här listan. Du kan lägga till fler kunskaper för AI-berikning, skapa ett kunskapslager, lägga till semantisk rangordning, lägga till relevansjustering och andra frågefunktioner.

Tillgänglighet och priser

Integrerad vektoriseringstillgänglighet baseras på inbäddningsmodellen. Om du använder Azure OpenAI kontrollerar du regional tillgänglighet.

Om du använder en anpassad färdighet och en Azure-värdmekanism (till exempel en Azure-funktionsapp, Azure Web App och Azure Kubernetes) kontrollerar du produkt för region för funktionstillgänglighet.

Datasegmentering (textdelningsfärdighet) är kostnadsfri och tillgänglig för alla Azure AI-tjänster i alla regioner.

Kommentar

Vissa äldre söktjänster som skapats före den 1 januari 2019 distribueras på infrastruktur som inte stöder vektorarbetsbelastningar. Om du försöker lägga till ett vektorfält i ett schema och få ett fel är det ett resultat av inaktuella tjänster. I det här fallet måste du skapa en ny söktjänst för att testa vektorfunktionen.

Vilka scenarier kan stöd för integrerad vektorisering stödja?

  • Dela upp stora dokument i segment, vilket är användbart för scenarier med vektorer och icke-vektorer. För vektorer hjälper segment dig att uppfylla indatabegränsningarna för inbäddningsmodeller. För scenarier som inte är vektorer kan du ha en sökapp i chattformat där GPT samlar in svar från indexerade segment. Du kan använda vektoriserade eller icke-vektoriserade segment för sökning i chattformat.

  • Skapa ett vektorlager där alla fält är vektorfält och dokument-ID (krävs för ett sökindex) är det enda strängfältet. Fråga vektorarkivet för att hämta dokument-ID:t och skicka sedan dokumentets vektorfält till en annan modell.

  • Kombinera vektor- och textfält för hybridsökning med eller utan semantisk rangordning. Integrerad vektorisering förenklar alla scenarier som stöds av vektorsökning.

När du ska använda integrerad vektorisering

Vi rekommenderar att du använder det inbyggda vektoriseringsstödet för Azure AI Studio. Om den här metoden inte uppfyller dina behov kan du skapa indexerare och kompetensuppsättningar som anropar integrerad vektorisering med hjälp av programmatiska gränssnitt i Azure AI Search.

Använda integrerad vektorisering

För endast frågevektorisering:

  1. Lägg till en vektoriserare i ett index. Det bör vara samma inbäddningsmodell som används för att generera vektorer i indexet.
  2. Tilldela vektoriseraren till en vektorprofil och tilldela sedan en vektorprofil till vektorfältet.
  3. Formulera en vektorfråga som anger vilken textsträng som ska vektoriseras.

Ett vanligare scenario – datasegmentering och vektorisering under indexering:

  1. Skapa en datakällaanslutning till en datakälla som stöds för indexerarbaserad indexering.
  2. Skapa en kompetensuppsättning som anropar kompetens för textdelning för segmentering och AzureOpenAIEmbeddingModel eller en anpassad färdighet för att vektorisera segmenten.
  3. Skapa ett index som anger en vektoriserare för frågetid och tilldela den till vektorfält.
  4. Skapa en indexerare för att driva allt, från datahämtning till körning av kompetensuppsättningar, via indexering.

Du kan också skapa sekundära index för avancerade scenarier där segmenterat innehåll finns i ett index och inte segmenteras i ett annat index. Segmenterade index (eller sekundära index) är användbara för RAG-appar.

Dricks

Prova den nya guiden Importera och vektorisera data i Azure-portalen för att utforska integrerad vektorisering innan du skriver någon kod.

Du kan också konfigurera en Jupyter-anteckningsbok så att den kör samma arbetsflöde, cell för cell, för att se hur varje steg fungerar.

Begränsningar

Kontrollera att du känner till Azure OpenAI-kvoter och -gränser för inbäddningsmodeller. Azure AI Search har återförsöksprinciper, men om kvoten är slut misslyckas återförsöken.

Gränser för Azure OpenAI-token per minut är per modell, per prenumeration. Tänk på detta om du använder en inbäddningsmodell för både fråge- och indexeringsarbetsbelastningar. Följ om möjligt metodtipsen. Ha en inbäddningsmodell för varje arbetsbelastning och försök distribuera dem i olika prenumerationer.

Kom ihåg att det finns tjänstbegränsningar per nivå och arbetsbelastningar i Azure AI Search.

Slutligen stöds inte följande funktioner för närvarande:

Fördelar med integrerad vektorisering

Här är några av de viktigaste fördelarna med den integrerade vektoriseringen:

  • Ingen separat pipeline för datasegmentering och vektorisering. Kod är enklare att skriva och underhålla.

  • Automatisera indexering från slutpunkt till slutpunkt. När data ändras i källan (till exempel i Azure Storage, Azure SQL eller Cosmos DB) kan indexeraren flytta uppdateringarna via hela pipelinen, från hämtning till dokumentsprickor, via valfri AI-berikande, datasegmentering, vektorisering och indexering.

  • Projicera segmenterat innehåll till sekundära index. Sekundära index skapas på samma sätt som för alla sökindex (ett schema med fält och andra konstruktioner), men de fylls i tillsammans med ett primärt index av en indexerare. Innehåll från varje källdokument flödar till fält i primära och sekundära index under samma indexeringskörning.

    Sekundära index är avsedda för datasegmentering och RAG-appar (Retrieval Augmented Generation). Om du antar en stor PDF som ett källdokument kan det primära indexet ha grundläggande information (rubrik, datum, författare, beskrivning) och ett sekundärt index har innehållssegmenten. Vektorisering på datasegmentnivå gör det enklare att hitta relevant information (varje segment är sökbart) och returnera ett relevant svar, särskilt i en sökapp i chattstil.

Segmenterade index

Segmentering är en process för att dela upp innehåll i mindre hanterbara delar (segment) som kan bearbetas oberoende av varandra. Segmentering krävs om källdokumenten är för stora för den maximala indatastorleken för inbäddning eller stora språkmodeller, men du kanske tycker att det ger dig en bättre indexstruktur för RAG-mönster och sökning i chattstil.

Följande diagram visar komponenterna i segmenterad indexering.

Diagram över arbetsflödet för segmentering och vektorisering.

Nästa steg