Dela via


Generera inbäddningar för sökfrågor och dokument

Azure AI Search är inte värd för vektoriseringsmodeller, så en av dina utmaningar är att skapa inbäddningar för frågeindata och utdata. Du kan använda valfri inbäddningsmodell som stöds, men i den här artikeln förutsätts inbäddningsmodeller för Azure OpenAI för stegen.

Vi rekommenderar integrerad vektorisering, som ger inbyggd datasegmentering och vektorisering. Integrerad vektorisering är beroende av indexerare, kompetensuppsättningar och inbyggda eller anpassade kunskaper som pekar på en modell som körs externt från Azure AI Search.

Om du vill hantera datasegmentering och vektorisering själv tillhandahåller vi demonstrationer på exempellagringsplatsen som visar hur du integrerar med andra community-lösningar.

Så här används inbäddningsmodeller i vektorfrågor

  • Frågeindata är antingen vektorer eller text eller bilder som konverteras till vektorer under frågebearbetningen. Den inbyggda lösningen i Azure AI Search är att använda en vektoriserare.

    Du kan också hantera konverteringen själv genom att skicka frågeindata till valfri inbäddningsmodell. För att undvika hastighetsbegränsning kan du implementera omprövningslogik i din arbetsbelastning. För Python-demonstrationen använde vi envishet.

  • Frågeutdata är matchande dokument som finns i ett sökindex. Ditt sökindex måste ha lästs in tidigare med dokument med ett eller flera vektorfält med inbäddningar. Oavsett vilken inbäddningsmodell du använde för indexering använder du samma modell för frågor.

Skapa resurser i samma region

Integrerad vektorisering kräver att resurser finns i samma region:

  1. Kontrollera regioner för en textinbäddningsmodell.

  2. Hitta samma region för Azure AI Search.

  3. Om du vill stödja hybridfrågor som inkluderar semantisk rangordning eller om du vill prova integrering av maskininlärningsmodeller med hjälp av en anpassad färdighet i en AI-berikande pipeline väljer du en Azure AI Search-region som tillhandahåller dessa funktioner.

Generera en inbäddning för en improviserad fråga

Följande Python-kod genererar en inbäddning som du kan klistra in i egenskapen "values" för en vektorfråga.

!pip install openai

import openai

openai.api_type = "azure"
openai.api_key = "YOUR-API-KEY"
openai.api_base = "https://YOUR-OPENAI-RESOURCE.openai.azure.com"
openai.api_version = "2024-02-01"

response = openai.Embedding.create(
    input="How do I use Python in VSCode?",
    engine="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
print(embeddings)

Utdata är en vektormatris med 1 536 dimensioner.

Tips och rekommendationer för integrering av inbäddningsmodeller

  • Identifiera användningsfall: Utvärdera de specifika användningsfall där inbäddningsmodellintegrering för vektorsökningsfunktioner kan ge värde till din söklösning. Detta kan omfatta multimodalt eller matchande bildinnehåll med textinnehåll, flerspråkig sökning eller likhetssökning.

  • Utforma en segmenteringsstrategi: Inbäddningsmodeller har gränser för hur många token de kan acceptera, vilket inför ett datasegmenteringskrav för stora filer. Mer information finns i Segment stora dokument för vektorsökningslösningar.

  • Optimera kostnader och prestanda: Vektorsökning kan vara resurskrävande och omfattas av maximala gränser, så överväg att endast vektorisera fälten som innehåller semantisk betydelse. Minska vektorstorleken så att du kan lagra fler vektorer till samma pris.

  • Välj rätt inbäddningsmodell: Välj en lämplig modell för ditt specifika användningsfall, till exempel ordinbäddningar för textbaserade sökningar eller bildinbäddningar för visuella sökningar. Överväg att använda förtränad modeller som textinbäddning-ada-002 från OpenAI eller REST API för bildhämtning från Azure AI-Visuellt innehåll.

  • Normalisera vektorlängder: Kontrollera att vektorlängderna normaliseras innan du lagrar dem i sökindexet för att förbättra noggrannheten och prestandan för likhetssökning. De flesta förtränad modeller är redan normaliserade men inte alla.

  • Finjustera modellen: Finjustera den valda modellen på dina domänspecifika data om det behövs för att förbättra dess prestanda och relevans för ditt sökprogram.

  • Testa och iterera: Testa och förfina integreringen av inbäddningsmodellen kontinuerligt för att uppnå önskad sökprestanda och användarnöjdhet.

Nästa steg