Beágyazások létrehozása az Azure AI-bővítményrel
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_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.