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:
Na webu Azure Portal přejděte k prostředku flexibilního serveru Azure Database for PostgreSQL.
V levé navigační nabídce vyberte Připojit v části Nastavení a zkopírujte blok podrobností připojení.
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
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ě:
Přidejte rozšíření do seznamu povolených, jak je popsáno v rozšířeních – Flexibilní server Azure Database for PostgreSQL.
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;
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í:
Nakonfigurujte rozšíření pomocí koncového bodu služby Azure OpenAI a klíče.
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ů.
Zkopírujte koncový bod a přístupový klíč. Použít můžete předponu
KEY1
neboKEY2
. 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_name
je , 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.
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.
Hledání vektorové podobnosti
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 false
hodnotu . 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.