Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A azure_ai bővítmény nagy nyelvi modellek (LLM-ek) használatát és generatív AI-alkalmazások létrehozását teszi lehetővé egy Azure Database for PostgreSQL-adatbázisban az Azure AI-szolgáltatások képességeinek integrálásával.
A Generatív AI a mesterséges intelligencia egyik formája, amelyben az LLM-eket arra tanítják be, hogy természetes nyelvi bemeneten alapuló eredeti tartalmat generáljanak. A bővítmény használatával a azure_ai generatív AI képességeit használhatja a természetes nyelvi lekérdezések közvetlenül az adatbázisból történő feldolgozásához.
Ez a cikk bemutatja, hogy a bővítmény használatával gazdag AI-képességeket adhat hozzá egy azure_ai rugalmas Azure Database for PostgreSQL-kiszolgálópéldányhoz. Bemutatja, hogyan integrálhatja az Azure OpenAI-t és az Azure AI Language szolgáltatást az adatbázisba a bővítmény használatával.
Előfeltételek
Egy Azure-előfizetés. Hozzon létre egyet ingyen.
Hozzáférés az Azure OpenAI-hoz a kívánt Azure-előfizetésben. Az alkalmazás jelenleg hozzáférést biztosít ehhez a szolgáltatáshoz. Az Azure OpenAI-hoz való hozzáféréshez az Korlátozott hozzáférés az Azure OpenAI szolgáltatáshoz űrlap kitöltésével kérhet hozzáférést.
Egy Azure OpenAI-erőforrás az
text-embedding-ada-002(2. verzió) modell üzembe helyezésével. Ez a modell jelenleg csak bizonyos régiókban érhető el. Ha nem rendelkezik erőforrással, a létrehozás folyamatát az Azure OpenAI erőforrás-telepítési útmutatója dokumentálja.Azure AI Language-erőforrás . Ha nem rendelkezik nyelvi erőforrással, létrehozhat egyet az Azure Portalon az összegzéshez szükséges rövid útmutató utasításait követve. Az ingyenes szint (
Free F0) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre üzemeltetéshez.Rugalmas Azure Database for PostgreSQL-kiszolgálópéldány az Azure-előfizetésben. Ha nem rendelkezik ezzel az erőforrással, tekintse meg az Azure Database for PostgreSQL létrehozását.
Csatlakozás az adatbázishoz psql használatával az Azure Cloud Shellben
Nyissa meg az Azure Cloud Shellt egy webböngészőben. Válassza a Basht környezetként. Ha a rendszer kéri, válassza ki az Azure Database for PostgreSQL-adatbázishoz használt előfizetést, majd válassza a Tárterület létrehozása lehetőséget.
Az adatbázis kapcsolati adatainak lekérése:
Az Azure Portalon nyissa meg a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt.
A bal oldali menü Beállítások területén válassza a Csatlakozás lehetőséget. Másolja ki a Kapcsolat részletei blokkot.
Illessze be a környezeti változók másolt deklarációs sorait az Azure Cloud Shell-terminálba. Cserélje le a
{your-password}tokent az adatbázis létrehozásakor beállított jelszóra.export PGHOST={your-server-name}.postgresql.database.azure.com export PGUSER={your-user-name} export PGPORT=5432 export PGDATABASE={your-database-name} export PGPASSWORD="{your-password}"Csatlakozzon az adatbázishoz a psql parancssori eszközzel. Írja be a következő parancsot a parancssorba:
psql
A azure_ai bővítmény telepítése
A bővítmény használatával integrálhatja az azure_ai Azure OpenAI-t és az Azure Cognitive Servicest az adatbázisba. További információ: Vektoros beágyazások létrehozása az Azure OpenAI-val az Azure Database for PostgreSQL-ben.
A bővítmény engedélyezése az adatbázisban:
Adja hozzá a bővítményt az engedélyezési listához az Engedélyezés bővítmények című cikkben leírtak szerint.
Abban az adatbázisban, amelyben a
azure_aibővítményt használni kívánja, telepítse a bővítményt a Bővítmények létrehozása című szakaszban leírtak szerint.
Az azure_ai bővítmény objektumainak vizsgálata
A azure_ai bővítmény által tartalmazott objektumok áttekintése segíthet jobban megérteni az általa kínált képességeket. A parancssor metaparancsával\dxpsql listázhatja a bővítmény objektumait:
\dx+ azure_ai
A metaparancs kimenete azt mutatja, hogy a azure_ai bővítmény három sémát, több felhasználó által definiált függvényt (UDF-et) és több összetett típust hoz létre az adatbázisban. Az alábbi táblázat a bővítmény által hozzáadott sémákat ismerteti:
| Séma | Leírás |
|---|---|
azure_ai |
Megadja azt az egyszerű sémát, amelyben a konfigurációs tábla és a vele való interakcióhoz használt UDF-ek találhatók. |
azure_openai |
Az Azure OpenAI-végpont meghívását lehetővé tevő UDF-eket tartalmazza. |
azure_cognitive |
Az adatbázis és az Azure Cognitive Services integrálásához kapcsolódó UDF-eket és összetett típusokat biztosít. |
A függvények és a típusok az egyik sémához vannak társítva. A sémában azure_ai definiált függvények áttekintéséhez használja a \df metaparancsot. Adja meg azt a sémát, amelynek a függvényét meg kell jeleníteni. A \x auto parancs előtti \df parancsok automatikusan be- és kikapcsolják a kibontott megjelenítést, hogy a parancs kimenete könnyebben megtekinthető legyen az Azure Cloud Shellben.
\x auto
\df+ azure_ai.*
A függvény használatával azure_ai.set_setting() beállíthatja az Azure AI-szolgáltatások végpontját és kritikus értékeit. Elfogadja a kulcsokat és a hozzárendelendő értéket . A azure_ai.get_setting() függvény lehetővé teszi azoknak az értékeknek a lekérését, amelyeket a set_setting() függvénnyel állított be. Elfogadja a megtekinteni kívánt beállítás kulcsát. Mindkét módszer esetében a kulcsnak a következők egyikének kell lennie:
| Kulcs | Leírás |
|---|---|
azure_openai.endpoint |
Egy támogatott Azure OpenAI-végpont (például https://example.openai.azure.com). |
azure_openai.subscription_key |
Egy Azure OpenAI-erőforrás előfizetési kulcsa. |
azure_cognitive.endpoint |
Támogatott Cognitive Services-végpont (például https://example.cognitiveservices.azure.com). |
azure_cognitive.subscription_key |
Egy Cognitive Services-erőforrás előfizetési kulcsa. |
Fontos
Mivel az Azure AI-szolgáltatások kapcsolati adatai, beleértve az API-kulcsokat is, az adatbázis konfigurációs táblájában vannak tárolva, a azure_ai bővítmény meghatároz egy szerepkört azure_ai_settings_manager , amelynek segítségével biztosítható, hogy ezek az információk csak az adott szerepkörrel rendelkező felhasználók számára legyenek védve és elérhetők. Ez a szerepkör lehetővé teszi a bővítményhez kapcsolódó beállítások olvasását és írását.
Csak a felügyelők és a azure_ai_settings_manager szerepkör tagjai hívhatják meg a azure_ai.get_setting() és a azure_ai.set_setting() függvényeket. Az Azure Database for PostgreSQL-ben minden rendszergazdai felhasználó rendelkezik a azure_ai_settings_manager szerepkörével.
Vektoros beágyazások létrehozása az Azure OpenAI-val
A azure_ai bővítmény sémája azure_openai lehetővé teszi az Azure OpenAI használatát a szöveges értékek vektoros beágyazásának létrehozásához. Ezzel a sémával közvetlenül az adatbázisból hozhat létre beágyazásokat az Azure OpenAI-val a bemeneti szöveg vektoros ábrázolásának létrehozásához. Ezek a reprezentációk ezután használhatók vektoros hasonlósági keresésekben, és gépi tanulási modellek által felhasználhatók.
A beágyazások gépi tanulási modellek használatával értékelik a szorosan kapcsolódó információkat. Ez a technika lehetővé teszi az adatok közötti kapcsolatok és hasonlóságok hatékony azonosítását, hogy az algoritmusok azonosítani tudják a mintákat és pontos előrejelzéseket készítsenek.
Az Azure OpenAI-végpont és -kulcs beállítása
A függvények használata azure_openai előtt konfigurálja a bővítményt az Azure OpenAI szolgáltatásvégponttal és -kulccsal:
Az Azure Portalon nyissa meg az Azure OpenAI-erőforrást. A bal oldali menü Erőforrás-kezelés területén válassza a Kulcsok és végpont lehetőséget.
Másolja ki a végpontot és a hozzáférési kulcsot. A következők bármelyikét használhatja:
KEY1vagyKEY2. Ha mindig két kulccsal rendelkezik, biztonságosan rotálhatja és ismét létrehozhatja a kulcsokat anélkül, hogy az szolgáltatáskimaradást okozna.Az alábbi parancsban cserélje le a
{endpoint}és{api-key}tokeneket az Azure portálról lekért értékekre. Ezután futtassa a parancssor parancsait azpsqlértékek konfigurációs táblához való hozzáadásához.SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');Ellenőrizze a konfigurációs táblában írt beállításokat:
SELECT azure_ai.get_setting('azure_openai.endpoint'); SELECT azure_ai.get_setting('azure_openai.subscription_key');
A azure_ai bővítmény most már csatlakozik az Azure OpenAI-fiókhoz, és készen áll a vektoros beágyazások létrehozására.
Az adatbázis feltöltése mintaadatokkal
Ez a cikk a BillSum-adatkészlet egy kis részhalmazát használja a vektorok generálásához szükséges szöveges mintaadatok megadásához. Ez az adatkészlet az Egyesült Államok kongresszusi és kaliforniai államszámláinak listáját tartalmazza. Az adatokat tartalmazó fájlt az bill_sum_data.csv töltheti le.
A mintaadatok adatbázisbeli tárolásához hozzon létre egy táblát bill_summaries:
CREATE TABLE bill_summaries
(
id bigint PRIMARY KEY,
bill_id text,
bill_text text,
summary text,
title text,
text_len bigint,
sum_len bigint
);
A PostgreSQL COPY parancsával a parancssorból töltse be a CSV-fájlból mintaadatokat a psql táblába. Adja meg, hogy a CSV-fájl első sora egy fejlécsor.
\COPY bill_summaries (id, bill_id, bill_text, summary, title, text_len, sum_len) FROM PROGRAM 'curl "https://raw.githubusercontent.com/Azure-Samples/Azure-OpenAI-Docs-Samples/main/Samples/Tutorials/Embeddings/data/bill_sum_data.csv"' WITH CSV HEADER ENCODING 'UTF8'
Vektortámogatás engedélyezése
A bővítmény használatával azure_ai beágyazásokat hozhat létre a bemeneti szöveghez. Ahhoz, hogy a generált vektorok az adatbázis többi adatával együtt legyenek tárolva, telepítenie kell a bővítményt pgvector . Kövesse a vektorok adatbázisbeli támogatásának engedélyezésével kapcsolatos dokumentáció útmutatását.
Ha vektortámogatást ad hozzá az adatbázishoz, adjon hozzá egy új oszlopot a bill_summaries táblához az vector adattípus használatával a beágyazások táblázaton belüli tárolásához. A text-embedding-ada-002 modell 1536 dimenziójú vektorokat hoz létre, ezért a vektorméretet meg kell adnia 1536 .
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Vektorok létrehozása és tárolása
A bill_summaries tábla készen áll a beágyazások tárolására. A függvény használatával azure_openai.create_embeddings() vektorokat hozhat létre a bill_text mezőhöz, és beszúrhatja őket a bill_vector tábla újonnan létrehozott bill_summaries oszlopába.
A függvény használata create_embeddings() előtt futtassa a következő parancsot annak vizsgálatához és a szükséges argumentumok áttekintéséhez:
\df+ azure_openai.*
A Argument data types parancs kimenetében \df+ azure_openai.* lévő tulajdonság megjeleníti a függvény által várt argumentumok listáját:
| érvelés | Típus | Alapértelmezett | Leírás |
|---|---|---|---|
deployment_name |
text |
A modellt tartalmazó text-embeddings-ada-002 Azure AI Foundry portálon található üzembe helyezés neve. |
|
input |
text |
Beágyazások létrehozásához használt beviteli szöveg. | |
timeout_ms |
integer |
3600000 |
Időtúllépés ezredmásodpercben, amely után a művelet leáll. |
throw_on_error |
boolean |
true |
Jelző, amely jelzi, hogy a függvény hiba esetén kivételt dobjon-e, amely a csomagoló tranzakciók visszaállítását eredményezheti. |
Az első argumentum az az deployment_name érték, amely a beágyazási modell Azure OpenAI-fiókban való üzembe helyezésekor lett hozzárendelve. Az érték lekérése:
Nyissa meg az Azure OpenAI-erőforrást az Azure Portalon.
A bal oldali menü Resource Management területén válassza a Modelltelepítések lehetőséget az Azure AI Foundry portál megnyitásához.
Az Azure AI Foundry portálon válassza a Telepítések lehetőséget. Az Üzembe helyezés panelen másolja ki a modell üzembe helyezéséhez társított üzembe helyezési névértéket
text-embedding-ada-002.
Ezen információk használatával futtasson egy lekérdezést a tábla összes rekordjának frissítéséhez bill_summaries . A bill_text függvény használatával szúrja be a bill_vector mező generált vektor embeddingeket az azure_openai.create_embeddings() oszlopba. Cserélje le {your-deployment-name} az Azure AI Foundry portál Üzembe helyezések paneljéről másolt üzembehelyezési névértékre. Ezt követően futtassa a következő parancsot:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Futtassa a következő lekérdezést a tábla első rekordjához létrehozott beágyazás megtekintéséhez. Először futtathatja a \x, ha a kimenet nehezen olvasható.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Minden beágyazás lebegőpontos számok vektora. A két beágyazás közötti távolság a vektortérben korrelál két bemenet szemantikai hasonlóságával az eredeti formátumban.
Vektoros hasonlósági keresés végrehajtása
A vektoros hasonlóság egy módszer a két elem hasonlóságának mérésére vektorként való ábrázolásával. A vektorok számok sorozatai. Gyakran használják őket llm-en keresztüli keresésekhez.
A vektorok hasonlóságát általában távolsági metrikák alapján számítják ki, például:
- Euklideszi távolság: Az n dimenziós tér két vektora közötti egyenes egyenes távolságot méri.
- Koszinusz-hasonlóság: Két vektor közötti szög koszinuszát méri.
A mezőben történő hatékonyabb keresés érdekében hozzon létre egy indexet koszinusz távolság és hierarchikus navigálható kis világ (HNSW) alapján. A HNSW lehetővé teszi pgvector a legújabb gráfalapú algoritmusok használatát a legközelebbi szomszéd lekérdezések közelítéséhez.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Ha már minden a helyén van, készen áll arra, hogy végrehajtsa a cosine hasonlósági keresési lekérdezést az adatbázison.
A következő lekérdezésben a beágyazások egy bemeneti kérdéshez jönnek létre, majd egy vektortömbbe (::vector) kerülnek. A vektortömb lehetővé teszi a kérdés összehasonlítását a bill_summaries táblázatban tárolt vektorokkal.
SELECT bill_id, title FROM bill_summaries
ORDER BY bill_vector <=> azure_openai.create_embeddings('embeddings', 'Show me bills relating to veterans entrepreneurship.')::vector
LIMIT 3;
A lekérdezés a <=> használja. Ez az operátor azt a koszinusz távolság operátort jelöli, amely egy többdimenziós tér két vektora közötti távolság kiszámítására szolgál.
Az Azure Cognitive Services integrálása
A bővítmény sémájában azure_cognitiveazure_ai szereplő Azure AI-szolgáltatások integrációi számos olyan AI-nyelvi funkciót biztosítanak, amelyeket közvetlenül az adatbázisból érhet el. A funkciók közé tartozik a hangulatelemzés, a nyelvészlelés, a kulcskifejezések kinyerése, az entitásfelismerés és a szövegösszesítés. Ezekhez a képességekhez az Azure AI Language szolgáltatáson keresztül lehet hozzáférni.
A bővítményen keresztül elérhető teljes Azure AI-képességek áttekintéséhez lásd: Azure Database for PostgreSQL integrálása az Azure Cognitive Services szolgáltatással.
Az Azure AI Language szolgáltatás végpontjának és kulcsának beállítása
A azure_openai függvényekhez hasonlóan, az azure_ai kiterjesztés használatával történő sikeres hívásokhoz az Azure AI-szolgáltatások területén meg kell adni a végpontot, illetve a saját Azure AI Language szolgáltatás erőforrásához tartozó kulcsot.
Az Azure Portalon nyissa meg a Language service-erőforrást.
A bal oldali menü Erőforrás-kezelés területén válassza a Kulcsok és végpont lehetőséget.
Másolja ki a végpontot és a hozzáférési kulcsot. A következők bármelyikét használhatja:
KEY1vagyKEY2.A parancssorban
psqlfuttassa az alábbi parancsokat az értékek konfigurációs táblához való hozzáadásához. Cserélje le a{endpoint}és{api-key}tokeneket az Azure Portálról lekért értékekre.SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Számlák összegzése
A azure_cognitiveazure_ai bővítmény néhány képességét bemutatásához létrehozhatja az egyes számlák összegzését. A azure_cognitive séma két függvényt biztosít a szöveg összegzéséhez:
-
summarize_abstractive: Az absztraktív összegzés olyan összegzést hoz létre, amely rögzíti a bemeneti szöveg fő fogalmait, de nem feltétlenül használ azonos szavakat. -
summarize_extractive: A kivonatoló összegzés egy összefoglalót állít össze a bemeneti szöveg kritikus mondatainak kinyerésével.
Ha az Azure AI Language szolgáltatás új, eredeti tartalom létrehozására való képességét szeretné használni, a függvény használatával létrehozhatja a summarize_abstractive szöveges bemenetek összegzését. Használja ismét a \df metaparancsot a psql-ból, ezúttal kifejezetten a azure_cognitive.summarize_abstractive függvényre.
\df azure_cognitive.summarize_abstractive
A Argument data types parancs kimenetében \df azure_cognitive.summarize_abstractive lévő tulajdonság megjeleníti a függvény által várt argumentumok listáját:
| érvelés | Típus | Alapértelmezett | Leírás |
|---|---|---|---|
text |
text |
Összegezni kívánt beviteli szöveg. | |
language |
text |
Az ISO 639-1 kétbetűs ábrázolása annak a nyelvnek, amelyben a bemeneti szöveg meg van írva. Az engedélyezett értékekért ellenőrizze a nyelvi funkciók nyelvi támogatását. | |
timeout_ms |
integer |
3600000 |
Időtúllépés ezredmásodpercben, amely után a művelet leáll. |
throw_on_error |
boolean |
true |
Jelző, amely jelzi, hogy a függvény hiba esetén kivételt dobjon-e, amely a csomagoló tranzakciók visszaállítását eredményezheti. |
sentence_count |
integer |
3 |
A generált összegzésbe belefoglalandó mondatok maximális száma. |
disable_service_logs |
boolean |
false |
A Nyelvi szolgáltatásnaplókat letiltó beállítás. A Language szolgáltatás 48 órán keresztül naplózza a bemeneti szöveget, hogy elhárítsa a problémákat. Ennek a tulajdonságnak a beállításával letilthatja a true bemeneti naplózást, és korlátozhatja a felmerülő problémák kivizsgálásának lehetőségét. További információkért tekintse meg a Cognitive Services megfelelőségi és adatvédelmi megjegyzéseit , valamint a Microsoft Felelős AI alapelveit. |
A summarize_abstractive függvényhez a következő argumentumok szükségesek: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).
A következő lekérdezés a bill_summaries táblában a summarize_abstractive függvény használatával hoz létre egy új egymondatos összefoglalót egy törvényjavaslat szövegéhez. Lehetővé teszi, hogy közvetlenül a lekérdezésekbe beépítse a generatív AI erejét.
SELECT
bill_id,
azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
A függvény használatával adatokat is írhat az adatbázistáblákba. Módosítsa a bill_summaries táblát úgy, hogy új oszlopot adjon hozzá az adatbázis egy mondatos összegzéseinek tárolásához:
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Ezután frissítse a táblát az összegzésekkel. A summarize_abstractive függvény egy szövegtömböt (text[]) ad vissza. A array_to_string függvény a visszaadott értéket sztring-ábrázolássá alakítja. Az alábbi lekérdezésben az throw_on_error argumentum be van állítva false. Ez a beállítás lehetővé teszi, hogy hiba esetén az összegzési folyamat folytatódjon.
UPDATE bill_summaries b
SET one_sentence_summary = array_to_string(azure_cognitive.summarize_abstractive(b.bill_text, 'en', throw_on_error => false, sentence_count => 1), ' ', '')
where one_sentence_summary is NULL;
A kimenetben figyelmeztetés jelenhet meg egy érvénytelen dokumentumra vonatkozóan, amelyhez nem sikerült megfelelő összegzést létrehozni. Ez a figyelmeztetés abból adódik, hogy az előző lekérdezésben throw_on_error értéket false-re állították be. Ha a jelölőt az alapértelmezett értékre truehagyja, a lekérdezés sikertelen lesz, és az adatbázisba nem íródik összegzés. A figyelmeztetést tartalmazó rekord megtekintéséhez futtassa ezt a parancsot:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Ezután lekérdezheti a bill_summaries táblát az új, egymondatos összegzések megtekintéséhez, amelyeket a azure_ai bővítmény a tábla többi rekordja számára hoz létre:
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Következtetés
Gratulálok! Most megtanulta, hogyan integrálhat nagy nyelvi modelleket és generatív AI-képességeket az adatbázisba a azure_ai bővítmény használatával.
Kapcsolódó tartalom
- Bővítmények engedélyezése az Azure Database for PostgreSQL-ben
- Ismerje meg, hogyan hozhat létre beágyazásokat az Azure OpenAI-val
- Azure OpenAI az Azure AI Foundry-modellekben
- Az Azure OpenAI-beli beágyazások ismertetése az Azure AI Foundry-modellekben
- Mi az Az Azure AI Nyelv?
- Mi az Azure OpenAI az Azure AI Foundry-modellekben?