Beágyazások létrehozása keresési lekérdezésekhez és dokumentumokhoz

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az Azure AI Keresés nem üzemeltet beágyazási modelleket, ezért Ön felelős a lekérdezési bemenetek és kimenetek vektorainak létrehozásáért. Válasszon az alábbi módszerek közül:

Megközelítés Leírás
Integrált vektorizáció Az Azure AI Keresés beépített adattömb-készítést és vektorizálást használ. Ez a megközelítés függőséget alkalmaz az indexelők, a készségkészletek és a beépített vagy egyéni képességek között, amelyek külső beágyazási modellekre mutatnak, például a Microsoft Foundryben.
Manuális vektorizálás Saját maga kezelheti az adattömbkezelést és a vektorizálást. Az indexeléshez előre elkészített dokumentumokat a keresési index vektormezőibe kell leküldeni. A lekérdezéshez előre lefordított vektorokat kell megadnia a keresőmotornak. Ennek a megközelítésnek a bemutatóit az azure-search-vector-samples GitHub-adattárban tekintheti meg.

A legtöbb forgatókönyv esetében javasoljuk az integrált vektorizálást. Bár bármilyen támogatott beágyazási modellt használhat, ez a cikk az Azure OpenAI-modelleket használja illusztrációként.

Modellek beágyazása vektoros lekérdezésekben

A beágyazási modellek vektorokat hoznak létre mind a lekérdezési bemenetekhez, mind a lekérdezéskimenetekhez. A lekérdezési bemenetek a következők:

  • A lekérdezésfeldolgozás során vektorokká konvertált szöveg vagy képek. Az integrált vektorizálás részeként a vektorosító végrehajtja ezt a feladatot.

  • Előre lefordított vektorok. Ezeket a vektorokat úgy hozhatja létre, hogy átadja a lekérdezés bemenetét egy tetszőleges beágyazási modellnek. A sebességkorlátozás elkerülése érdekében implementáljon újrapróbálkozási logikát a számítási feladatban. A Python-demónk a tenacity könyvtárat használja.

A lekérdezési bemenet alapján a keresőmotor lekéri az egyező dokumentumokat a keresési indexből. Ezek a dokumentumok a lekérdezés kimenetei.

A keresési indexnek már tartalmaznia kell egy vagy több, beágyazással kitöltött vektormezővel rendelkező dokumentumot. Ezeket a beágyazásokat integrált vagy manuális vektorizálással hozhatja létre. A pontos eredmények biztosításához használja ugyanazt a beágyazási modellt az indexeléshez és a lekérdezéshez.

Tippek a modellintegráció beágyazásához

  • Használati esetek azonosítása. Értékelje ki azokat a konkrét használati eseteket, amikor a vektorkeresési funkciók modellintegrációjának beágyazása értéket ad a keresési megoldásnak. Ilyen például a többmodális keresés vagy a képtartalom szöveges tartalommal való egyeztetése, a többnyelvű keresés és a hasonlóság keresése.

  • Tervezzen meg egy darabolási stratégiát. A beágyazási modellek esetében korlátos az elfogadott tokenek száma, ezért nagy fájlok esetén szükség van az adatok részekre bontására.

  • Költség és teljesítmény optimalizálása. A vektorkeresés erőforrás-igényes, és maximális korlátoknak van kitéve, ezért csak a szemantikai jelentést tartalmazó mezőket vektorizálja. Csökkentse a vektorméretet , hogy több vektort tároljon ugyanahhoz az árhoz.

  • Válassza ki a megfelelő beágyazási modellt. Válasszon ki egy modellt a használati esethez, például a szövegalapú keresésekhez használt szóbeágyazásokhoz vagy a vizualizációs keresésekhez tartozó képbeágyazásokhoz. Fontolja meg az előre betanított modelleket, például az OpenAI-ból származó text-embedding-ada-002 vagy az Azure Vision in Foundry Tools rendszerkép-lekérési REST API-jának használatát.

  • Vektorhosszok normalizálása. A hasonlósági keresés pontosságának és teljesítményének javítása érdekében normalizálja a vektorhosszokat, mielőtt a keresési indexben tárolja őket. A legtöbb előre betanított modell már normalizálva van.

  • A modell finomhangolása. Szükség esetén finomhangolhatja a modellt a tartományspecifikus adatokon, hogy javítsa a keresési alkalmazás teljesítményét és relevanciáját.

  • Tesztelje és iterálja. A beágyazási modell integrációjának folyamatos tesztelése és finomítása a kívánt keresési teljesítmény és felhasználói elégedettség elérése érdekében.

Erőforrások létrehozása ugyanabban a régióban

Bár az Azure OpenAI-beágyazási modellek integrált vektorizálása nem igényli az erőforrások ugyanabban a régióban való használatát, az azonos régió használata javíthatja a teljesítményt és csökkentheti a késést.

Ha ugyanazt a régiót szeretné használni az erőforrásokhoz:

  1. Ellenőrizze a szövegbeágyazási modellek regionális elérhetőségét.

  2. Ellenőrizze az Azure AI Keresés regionális elérhetőségét.

  3. Hozzon létre egy Azure OpenAI-erőforrást és egy Azure AI Keresés szolgáltatást ugyanabban a régióban.

Jótanács

Szeretne szemantikai rangsorolást használni hibrid lekérdezésekhez vagy gépi tanulási modellhez az AI-bővítésegyéni képességében? Válasszon ki egy Azure AI Keresés-régiót, amely ezeket a funkciókat biztosítja.

Beágyazási modell kiválasztása a Foundryben

Ha tudást ad hozzá egy ügynök munkafolyamatához az Foundry portálon, lehetősége van keresési index létrehozására. Egy varázsló végigvezeti a lépéseken.

Az egyik lépés egy beágyazási modell kiválasztása az egyszerű szöveges tartalom vektorizálásához. A következő modellek támogatottak:

  • szöveg-beágyazás-3-kicsi
  • szöveg-beágyazás-3-nagy
  • text-embedding-ada-002
  • Cohere-embed-v3-english
  • Cohere-embed-v3-többnyelvű

A modellnek már telepítve kell lennie, és rendelkeznie kell a hozzáféréséhez szükséges engedéllyel. További információ: Az Öntödei modellek üzembe helyezési áttekintése.

Beágyazás létrehozása alkalmi lekérdezéshez

Ha nem szeretne integrált vektorizálást használni, manuálisan létrehozhat beágyazást, és beillesztheti azt egy vectorQueries.vector vektoros lekérdezés tulajdonságába. További információ: Vektoros lekérdezés létrehozása az Azure AI Keresésben.

Az alábbi példák a text-embedding-ada-002 modellt feltételezik. Cserélje le a(z) YOUR-API-KEY és YOUR-OPENAI-RESOURCE elemet az Azure OpenAI-erőforrás adataira.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static async Task Main(string[] args)
    {
        var apiKey = "YOUR-API-KEY";
        var apiBase = "https://YOUR-OPENAI-RESOURCE.openai.azure.com";
        var apiVersion = "2024-02-01";
        var engine = "text-embedding-ada-002";

        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

        var requestBody = new
        {
            input = "How do I use C# in VS Code?"
        };

        var response = await client.PostAsync(
            $"{apiBase}/openai/deployments/{engine}/embeddings?api-version={apiVersion}",
            new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json")
        );

        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
    }
}

A kimenet egy 1536 dimenzióból álló vektortömb.