Beágyazások létrehozása az Azure AI-bővítményrel

Befejeződött

Szemantikai keresés futtatásához össze kell hasonlítania a lekérdezés beágyazását a keresett elemek beágyazásával. A azure_ai rugalmas Azure Database for PostgreSQL-kiszolgáló bővítménye integrálható az Azure OpenAI-val beágyazási vektorok létrehozásához.

Az Azure OpenAI beágyazási API-nak küldött

Az azure_ai és az Azure OpenAI bemutatása

Az Azure AI rugalmas Azure Database for PostgreSQL-bővítménye felhasználó által definiált funkciókat biztosít a Microsoft Foundryvel való integrációhoz, beleértve az Azure OpenAI-t és az Azure AI Searchet.

Az Azure OpenAI Embeddings API létrehozza a bemeneti szöveg beágyazási vektorát. Ezzel az API-val beállíthatja az összes keresett elem beágyazását. A azure_ai bővítmény sémája azure_openai megkönnyíti az API meghívását az SQL-ből beágyazások létrehozásához, akár elembeágyazások inicializálásához, akár menet közbeni lekérdezésbe ágyazás létrehozásához. Ezek a beágyazások ezután vektoros hasonlósági keresés, más szóval szemantikai keresés végrehajtására használhatók.

A bővítmény használata az azure_ai Azure OpenAI-val

Az Azure OpenAI Embeddings API PostgreSQL-ből való meghívásához engedélyeznie kell és konfigurálnia kell a azure_ai bővítményt, hozzáférést kell adni az Azure OpenAI-hoz, és üzembe kell helyeznie egy Azure OpenAI-modellt. További információkért tekintse meg az Azure OpenAI on Azure Database for PostgreSQL rugalmas kiszolgáló dokumentációját.

Ha a környezet készen áll, és a bővítmény engedélyezve van, futtassa ezt az SQL-t:

/* Enable the extension. */
CREATE EXTENSION azure_ai;

Emellett konfigurálnia kell az OpenAI-szolgáltatás erőforrásának végpont- és hozzáférési kulcsát is:

SELECT azure_ai.set_setting('azure_openai.endpoint', '{your-endpoint-url}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{your-api-key}}');

Miután azure_ai és az Azure OpenAI konfigurálva van, a beágyazások beolvasása és tárolása egyszerű feladat, ha függvényt hív meg az SQL-lekérdezésben. Feltételezve egy táblázatot listings, amely rendelkezik egy description oszloppal és egy listing_vector oszloppal, az alábbi lekérdezéssel létrehozhatja és tárolhatja a beágyazást az összes listához. Cserélje le a {your-deployment-name} elemet az Azure OpenAI Studio üzembehelyezési nevével a létrehozott modellhez.

UPDATE listings
SET listing_vector = azure_openai.create_embeddings('{your-deployment-name}', description, max_attempts => 5, retry_delay_ms => 500)
WHERE listing_vector IS NULL;

A listing_vector vektoroszlopnak ugyanannyi dimenzióval kell rendelkeznie, mint amennyit a nyelvi modell állít elő.

A dokumentumok beágyazásának megtekintéséhez futtassa a következő lekérdezést:

SELECT listing_vector FROM listings LIMIT 1;

Az eredmény a lebegőpontos számok vektora. Először futtassa a \x parancsot, hogy az eredmény olvashatóbb legyen.

Dinamikusan beágyazó lekérdezés létrehozása

Miután beágyazta a keresni kívánt dokumentumokat, futtathat szemantikai keresési lekérdezést. Ehhez létre kell hoznia egy beágyazást is a lekérdezés szövegéhez.

A azure_openai bővítmény azure_ai sémájával képes beágyazásokat létrehozni az SQL-ben. Ha például meg szeretné keresni az első három olyan listát, amelynek szövege szemantikailag leginkább hasonlít a "Keress meg helyeket egy járható környéken" lekérdezéshez, futtassa a következő SQL-t:

SELECT id, description FROM listings
ORDER BY listing_vector <=> azure_openai.create_embeddings('{your-deployment-name}', 'Find me places in a walkable neighborhood.')::vector
LIMIT 3;

Az <=> operátor kiszámítja a két vektor közötti koszinusz távolságot , a szemantikai hasonlóság metrikát. Minél közelebb a vektorok, annál szemantikailag hasonló; minél tovább a vektorok, annál szemantikailag eltérő.

Az ::vector operátor a létrehozott beágyazásokat PostgreSQL-vektortömbökké alakítja.

A lekérdezés az első három listaazonosítót és leírást adja vissza, kisebbtől eltérőre (többről kevésbé hasonlóra) rangsorolva.