Megosztás a következőn keresztül:


Azure AI-képességek integrálása az Azure Database for PostgreSQL-be

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

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:

  1. Az Azure Portalon nyissa meg a rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt.

  2. 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.

  3. 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}"
    
  4. 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:

  1. 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.

  2. Abban az adatbázisban, amelyben a azure_ai bő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:

  1. 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.

  2. Másolja ki a végpontot és a hozzáférési kulcsot. A következők bármelyikét használhatja: KEY1 vagy KEY2. 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.

  3. 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 az psql é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}');
    
  4. 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:

  1. Nyissa meg az Azure OpenAI-erőforrást az Azure Portalon.

  2. 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.

  3. 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ékettext-embedding-ada-002.

Képernyőkép az AI integrálásához szükséges üzembe helyezések beágyazásáról.

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.

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.

  1. Az Azure Portalon nyissa meg a Language service-erőforrást.

  2. A bal oldali menü Erőforrás-kezelés területén válassza a Kulcsok és végpont lehetőséget.

  3. Másolja ki a végpontot és a hozzáférési kulcsot. A következők bármelyikét használhatja: KEY1 vagy KEY2.

  4. A parancssorban psql futtassa 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.