Sdílet prostřednictvím


Integrace funkcí Azure AI do flexibilního serveru Azure Database for PostgreSQL

PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL

Rozšíření azure_ai přidává možnost používat velké jazykové modely (LLM) a vytvářet generující aplikace AI v rámci flexibilní serverové databáze Azure Database for PostgreSQL integrací výkonu služeb Azure AI. Generateive AI je forma umělé inteligence, ve které jsou LLM vytrénovány tak, aby generovaly původní obsah na základě vstupu přirozeného jazyka. azure_ai Použití rozšíření umožňuje použít možnosti zpracování dotazů v přirozeném jazyce v přirozeném jazyce generující umělé inteligence přímo z databáze.

Tento kurz předvádí přidání bohatých funkcí umělé inteligence do instance flexibilního serveru Azure Database for PostgreSQL pomocí azure_ai rozšíření. Zahrnuje integraci Azure OpenAI i služby Azure AI Language do vaší databáze pomocí rozšíření.

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma.

  • Přístup k Azure OpenAI je udělován v požadovaném předplatném Azure. Aplikace v současné době uděluje přístup k této službě. Pokud chcete získat přístup k Azure OpenAI, vyplňte formulář na adrese https://aka.ms/oai/access.

  • Prostředek Azure OpenAI s nasazeným modelem text-embedding-ada-002 (verze 2). Tento model je aktuálně k dispozici pouze v určitých oblastech. Pokud prostředek nemáte, proces jeho vytvoření je zdokumentovaný v průvodci nasazením prostředků Azure OpenAI.

  • Služba Azure AI Language. Pokud prostředek nemáte, můžete prostředek jazyka vytvořit na webu Azure Portal podle pokynů uvedených v rychlém startu pro dokument souhrnu . K vyzkoušení služby a pozdějšímu upgradu na placenou úroveň pro produkční prostředí můžete použít cenovou úroveň Free (Free F0).

  • Instance flexibilního serveru Azure Database for PostgreSQL ve vašem předplatném Azure Pokud prostředek nemáte, vytvořte ho pomocí webu Azure Portal nebo průvodce Azure CLI .

Připojení k databázi pomocí psql Azure Cloud Shellu

Otevřete Azure Cloud Shell ve webovém prohlížeči. Jako prostředí vyberte Bash a v případě výzvy vyberte předplatné, které jste použili pro flexibilní serverovou databázi Azure Database for PostgreSQL, a pak vyberte Vytvořit úložiště.

Načtení podrobností o připojení k databázi:

  1. Na webu Azure Portal přejděte k prostředku flexibilního serveru Azure Database for PostgreSQL.

  2. V levé navigační nabídce vyberte Připojit v části Nastavení a zkopírujte blok podrobností připojení.

  3. Vložte zkopírované řádky deklarace proměnné prostředí do terminálu Azure Cloud Shellu, který jste otevřeli výše, a nahraďte {your-password} token heslem, které jste nastavili při vytváření databáze.

    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}"
    

    Připojte se k databázi pomocí nástroje příkazového řádku psql zadáním následujícího příkazu na příkazovém řádku.

    psql
    

azure_ai Instalace rozšíření

Rozšíření Azure AI a OpenAI

Rozšíření azure_ai umožňuje integrovat Azure OpenAI a Azure Cognitive Services do vaší databáze. Pokud chcete rozšíření povolit ve vaší databázi, postupujte následovně:

  1. Přidejte rozšíření do seznamu povolených, jak je popsáno v rozšířeních – Flexibilní server Azure Database for PostgreSQL.

  2. Spuštěním následujícího příkazu z příkazového psql řádku ověřte, že se rozšíření úspěšně přidalo do seznamu povolených:

    SHOW azure.extensions;
    
  3. V databázi, ve které chcete rozšíření použít azure_ai , ho nainstalujte pomocí příkazu CREATE EXTENSION .

    CREATE EXTENSION azure_ai;
    

Kontrola objektů obsažených v azure_ai rozšíření

Kontrola objektů obsažených v azure_ai rozšíření může poskytnout lepší přehled o možnostech, které nabízí. Pomocí příkazu meta-command z příkazového psql řádku můžete \dx zobrazit seznam objektů obsažených v rozšíření.

\dx+ azure_ai

Výstup meta-příkazu ukazuje, že azure_ai rozšíření vytvoří tři schémata, několik uživatelem definovaných funkcí (UDF) a několik složených typů v databázi. Následující tabulka uvádí schémata přidaná rozšířením a popisuje jednotlivé schémata.

Schéma Popis
azure_ai Schéma objektu zabezpečení, ve kterém se nachází konfigurační tabulka a funkce definované uživatelem pro interakci.
azure_openai Obsahuje funkce definované uživatelem, které umožňují volání koncového bodu Azure OpenAI.
azure_cognitive Poskytuje funkce definované uživatelem a složené typy související s integrací databáze se službou Azure Cognitive Services.

Všechny funkce a typy jsou přidružené k jednomu ze schémat. Pokud chcete zkontrolovat funkce definované ve schématu azure_ai , použijte \df příkaz meta-command a určete schéma, jehož funkce by se měly zobrazit. Příkazy \x auto před příkazem \df přepínají rozbalené zobrazení automaticky, aby se výstup příkazu snadněji zobrazoval v Azure Cloud Shellu.

\x auto
\df+ azure_ai.*

Funkce azure_ai.set_setting() umožňuje nastavit koncový bod a kritické hodnoty pro služby Azure AI. Přijme klíč a hodnotu , kterou chcete přiřadit. Tato azure_ai.get_setting() funkce poskytuje způsob, jak načíst hodnoty, které jste nastavili pomocí set_setting() funkce. Přijme klíč nastavení, které chcete zobrazit. Pro obě metody musí být klíč jedním z následujících způsobů:

Key Popis
azure_openai.endpoint Podporovaný koncový bod OpenAI (například https://example.openai.azure.com).
azure_openai.subscription_key Klíč předplatného pro prostředek OpenAI.
azure_cognitive.endpoint Podporovaný koncový bod služeb Cognitive Services (například https://example.cognitiveservices.azure.com).
azure_cognitive.subscription_key Klíč předplatného pro prostředek Cognitive Services.

Důležité

Vzhledem k tomu, že informace o připojení pro služby Azure AI, včetně klíčů rozhraní API, jsou uložené v konfigurační tabulce v databázi, rozšíření definuje volanou azure_ai_settings_manager roli, azure_ai aby se zajistilo, že tyto informace jsou chráněné a přístupné jenom uživatelům přiřazeným této roli. Tato role umožňuje čtení a zápis nastavení souvisejících s rozšířením. Tyto funkce azure_ai.set_setting() můžou vyvolat azure_ai.get_setting() pouze superuživatelé a členové azure_ai_settings_manager role. Na flexibilním serveru Azure Database for PostgreSQL mají přiřazenou azure_ai_settings_manager roli všichni uživatelé správce.

Generování vektorových vkládání pomocí Azure OpenAI

Schéma azure_ai rozšíření azure_openai umožňuje použití Azure OpenAI k vytváření vektorových vkládání textových hodnot. Pomocí tohoto schématu můžete vygenerovat vkládání pomocí Azure OpenAI přímo z databáze a vytvořit vektorové reprezentace vstupního textu, které se pak dají použít ve vyhledáváních vektorové podobnosti a využívat modely strojového učení.

Vkládání je technika použití modelů strojového učení k vyhodnocení toho, jak úzce související informace jsou. Tato technika umožňuje efektivní identifikaci vztahů a podobností mezi daty, což umožňuje algoritmům identifikovat vzory a provádět přesné předpovědi.

Nastavení koncového bodu a klíče Azure OpenAI

Před použitím azure_openai funkcí:

  1. Nakonfigurujte rozšíření pomocí koncového bodu služby Azure OpenAI a klíče.

  2. Na webu Azure Portal přejděte k prostředku Azure OpenAI a v nabídce vlevo vyberte položku Klíče a koncový bod v části Správa prostředků.

  3. Zkopírujte koncový bod a přístupový klíč. Použít můžete předponu KEY1 nebo KEY2. Neustálé držení dvou klíčů vám umožní bezpečně klíče obměňovat a opakovaně je generovat, aniž by došlo k přerušení služeb.

V následujícím příkazu nahraďte {endpoint} hodnoty, {api-key} které jste získali z webu Azure Portal, a pak spusťte příkazy z příkazového psql řádku a přidejte hodnoty do konfigurační tabulky.

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

Ověřte nastavení napsaná v konfigurační tabulce:

SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.get_setting('azure_openai.subscription_key');

Toto azure_ai rozšíření je teď připojené k vašemu účtu Azure OpenAI a je připravené ke generování vložených vektorů.

Naplňte databázi ukázkovými daty.

V tomto kurzu se používá malá podmnožina datové sady BillSum, která poskytuje seznam USA kongresových a kaliforniových státních faktur, k poskytování ukázkových textových dat pro generování vektorů. Soubor bill_sum_data.csv obsahující tato data si můžete stáhnout z úložiště Azure Samples na GitHubu.

Pokud chcete hostovat ukázková data v databázi, vytvořte tabulku s názvem 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
);

Pomocí příkazu PostgreSQL COPY z příkazového psql řádku načtěte ukázková data ze sdíleného svazku clusteru bill_summaries do tabulky a určete, že první řádek souboru CSV je řádek záhlaví.

\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'

Povolení podpory vektorů

Rozšíření azure_ai umožňuje generovat vkládání pro vstupní text. Pokud chcete, aby se generované vektory ukládaly společně se zbývajícími daty v databázi, musíte rozšíření nainstalovat pgvector podle pokynů v dokumentaci k povolení vektoru.

S podporovaným vektorem přidaným do databáze přidejte do bill_summaries tabulky nový sloupec pomocí datového vector typu pro ukládání vložených objektů v tabulce. Model text-embedding-ada-002 vytváří vektory s rozměry 1536, takže je nutné zadat 1536 jako velikost vektoru.

ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);

Generování a ukládání vektorů

Tabulka bill_summaries je teď připravená k ukládání vložených objektů. azure_openai.create_embeddings() Pomocí funkce vytvoříte vektory pro bill_text pole a vložíte je do nově vytvořeného bill_vector bill_summaries sloupce v tabulce.

Před použitím create_embeddings() funkce spusťte následující příkaz, který ho zkontroluje a zkontroluje požadované argumenty:

\df+ azure_openai.*

Vlastnost Argument data types ve výstupu \df+ azure_openai.* příkazu odhalí seznam argumentů, které funkce očekává.

Argument Typ Výchozí Popis
deployment_name text Název nasazení v nástroji Azure OpenAI Studio, které tento model obsahuje text-embeddings-ada-002 .
input text Vstupní text použitý k vytváření vložených objektů
timeout_ms integer 3600000 Časový limit v milisekundách, po kterém je operace zastavena.
throw_on_error boolean true Příznak označující, zda má funkce v případě chyby vyvolat výjimku, která vede k vrácení zpět zabalených transakcí.

Prvním argumentem deployment_nameje , které je přiřazeno při nasazení modelu vložení do účtu Azure OpenAI. Pokud chcete tuto hodnotu načíst, přejděte na webu Azure Portal k prostředku Azure OpenAI. V levé navigační nabídce v části Správa prostředků vyberte položku Nasazení modelu a otevřete tak Azure OpenAI Studio. V Nástroji Azure OpenAI Studio na kartě Nasazení zkopírujte hodnotu názvu nasazení přidruženou k text-embedding-ada-002 nasazení modelu.

Snímek obrazovky s vkládáním nasazení pro integraci AI

Pomocí těchto informací spusťte dotaz, který aktualizuje každý záznam v bill_summaries tabulce a vloží vygenerované vektory pro bill_text pole do bill_vector sloupce pomocí azure_openai.create_embeddings() funkce. Nahraďte {your-deployment-name} hodnotou Názvu nasazení, kterou jste zkopírovali z karty Nasazení Sady Azure OpenAI Studio, a spusťte následující příkaz:

UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);

Spuštěním následujícího dotazu zobrazte vložené vygenerované pro první záznam v tabulce. Nejprve můžete spustit \x , pokud je výstup obtížně čitelný.

SELECT bill_vector FROM bill_summaries LIMIT 1;

Každé vložení je vektor čísel s plovoucí desetinou čárkou, aby vzdálenost mezi dvěma vkládáními ve vektorovém prostoru odpovídala sémantické podobnosti mezi dvěma vstupy v původním formátu.

Vektorová podobnost je metoda, která se používá k měření, jak podobné dvě položky představují jako vektory, což jsou řady čísel. Vektory se často používají k provádění hledání pomocí LLM. Podobnost vektorů se běžně počítá pomocí metrik vzdálenosti, jako je euklidová vzdálenost nebo kosinus podobnost. Euklidská vzdálenost měří přímočarou vzdálenost mezi dvěma vektory v ndimenzionálním prostoru, zatímco kosinus úhlu měří kosinus úhlu mezi dvěma vektory.

Pokud chcete povolit efektivnější vyhledávání v vector poli vytvořením indexu bill_summaries pomocí kosinusové vzdálenosti a HNSW, což je zkratka pro Hierarchický pohyb v malém světě. HNSW umožňuje pgvector používat nejnovější algoritmy založené na grafech k přibližným dotazům nejbližšího souseda.

CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);

S veškerým obsahem teď můžete spustit vyhledávací dotaz kosinusové podobnosti s databází.

V následujícím dotazu se vložené hodnoty vygenerují pro vstupní otázku a přetypují na vektorovou matici (::vector), která umožňuje porovnání s vektory uloženými v bill_summaries tabulce.

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;

Dotaz používá vektorový <=> operátor, který představuje operátor kosinusu, který se používá k výpočtu vzdálenosti mezi dvěma vektory v multidimenzionálním prostoru.

Integrace služeb Azure Cognitive Services

Integrace služeb Azure AI, které jsou součástí azure_cognitive schématu azure_ai rozšíření, poskytují bohatou sadu funkcí jazyka AI, které jsou přístupné přímo z databáze. Mezi funkce patří analýza mínění, rozpoznávání jazyka, extrakce klíčových frází, rozpoznávání entit a shrnutí textu. Přístup k těmto funkcím je povolený prostřednictvím služby Azure AI Language.

Pokud chcete zkontrolovat kompletní funkce Azure AI přístupné prostřednictvím rozšíření, podívejte se na flexibilní server Integrace Azure Database for PostgreSQL se službou Azure Cognitive Services.

Nastavení koncového bodu a klíče služby Azure AI Language

Stejně jako u azure_openai funkcí musíte k úspěšnému volání služeb Azure AI pomocí azure_ai rozšíření zadat koncový bod a klíč pro službu Azure AI Language. Načtěte tyto hodnoty tak, že přejdete na prostředek služby Language na webu Azure Portal v nabídce vlevo nebo na levé straně v části Správa prostředků a vyberete klíče a položku koncového bodu . Zkopírujte koncový bod a přístupový klíč. Použít můžete předponu KEY1 nebo KEY2.

V následujícím příkazu nahraďte {endpoint} hodnoty, {api-key} které jste získali z webu Azure Portal, a pak spusťte příkazy z příkazového psql řádku a přidejte hodnoty do konfigurační tabulky.

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

Shrnutí faktur

Abyste si mohli předvést některé funkce azure_cognitive azure_ai rozšíření, vygenerujete souhrn jednotlivých faktur. Schéma azure_cognitive poskytuje dvě funkce pro sumarizaci textu summarize_abstractive a summarize_extractive. Abstraktní shrnutí vytvoří souhrn, který zachycuje hlavní koncepty ze vstupního textu, ale nemusí používat stejná slova. Extrakce souhrnu sestaví souhrn extrahováním důležitých vět ze vstupního textu.

Pokud chcete použít schopnost služby Azure AI Language generovat nový, původní obsah, použijete summarize_abstractive funkci k vytvoření souhrnu textového vstupu. \df Znovu použijte příkaz meta-command, psql tentokrát se podívejte konkrétně na azure_cognitive.summarize_abstractive funkci.

\df azure_cognitive.summarize_abstractive

Vlastnost Argument data types ve výstupu \df azure_cognitive.summarize_abstractive příkazu odhalí seznam argumentů, které funkce očekává.

Argument Typ Výchozí Popis
text text Vstupní text, který se má shrnout.
jazyk text Dvoumísmenná reprezentace jazyka ISO 639-1, ve kterém je napsán vstupní text. Zkontrolujte podporu povolených hodnot v jazyce.
timeout_ms integer 3600000 Časový limit v milisekundách, po kterém je operace zastavena.
throw_on_error boolean true Příznak označující, zda má funkce v případě chyby vyvolat výjimku, která vede k vrácení zpět zabalených transakcí.
sentence_count integer 3 Maximální počet vět, které se mají zahrnout do vygenerovaného souhrnu.
disable_service_logs boolean false (nepravda) Služba Language zaprotokoluje váš vstupní text po dobu 48 hodin, aby umožňovala řešení problémů. Nastavením této vlastnosti zakážete true protokolování vstupu a můžeme omezit naši schopnost vyšetřovat problémy, ke kterým dochází. Další informace naleznete v tématu Cognitive Services Compliance and Privacy notes at https://aka.ms/cs-compliance and Microsoft Responsible AI principles at https://www.microsoft.com/ai/responsible-ai.

Funkce summarize_abstractive funkce vyžaduje následující argumenty: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).

Následující dotaz na bill_summaries tabulku používá summarize_abstractive funkci k vygenerování nového souhrnu jedné věty pro text faktury, což vám umožní začlenit výkon generující umělé inteligence přímo do dotazů.

SELECT
    bill_id,
    azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';

Funkci lze také použít k zápisu dat do databázových tabulek. bill_summaries Upravte tabulku tak, aby se přidal nový sloupec pro ukládání souhrnů s jednou větou do databáze.

ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;

V dalším kroku aktualizujte tabulku souhrny. Funkce summarize_abstractive vrátí matici textu (text[]). Funkce array_to_string převede návratovou hodnotu na řetězcové vyjádření. V následujícím throw_on_error dotazu byl argument nastaven na falsehodnotu . Toto nastavení umožňuje, aby proces souhrnu pokračoval, pokud dojde k chybě.

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;

Ve výstupu si můžete všimnout upozornění na neplatný dokument, pro který se nepodařilo vygenerovat odpovídající souhrn. Toto upozornění je výsledkem nastavení throw_on_error na false výše uvedený dotaz. Pokud by tento příznak zůstal ve výchozím nastavení true, dotaz selže a do databáze by nebyly zapsány žádné souhrny. Pokud chcete zobrazit záznam, který vyvolal upozornění, spusťte následující příkaz:

SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;

Potom můžete do tabulky zadat dotaz bill_summaries , aby se zobrazily nové souhrny s jednou větou vygenerované rozšířením azure_ai pro ostatní záznamy v tabulce.

SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;

Závěr

Blahopřejeme, právě jste se naučili, jak pomocí azure_ai rozšíření integrovat velké jazykové modely a generovat funkce AI do vaší databáze.