Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozšíření azure_ai přidává možnost používat velké jazykové modely (LLM) a vytvářet generování aplikací umělé inteligence v databázi 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 Pomocí rozšíření můžete použít možnosti generující umělé inteligence pro zpracování dotazů v přirozeném jazyce přímo z databáze.
Tento článek představuje přidání bohatých funkcí umělé inteligence do instance flexibilního serveru Azure Database for PostgreSQL pomocí azure_ai rozšíření. Ukazuje, jak pomocí rozšíření integrovat Službu Azure OpenAI i službu Azure AI Language do databáze.
Požadavky
Předplatné služby 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ář v omezeném přístupu pro službu Azure OpenAI.
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.Prostředek Azure AI Language . Pokud nemáte jazykový prostředek, můžete vytvořit ho v Azure portálu podle pokynů uvedených v průvodci rychlým spuštěním pro shrnutí. 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 tento prostředek nemáte, přečtěte si téma Vytvoření služby Azure Database for PostgreSQL.
Připojení k databázi pomocí psql v Azure Cloud Shellu
Otevřete Azure Cloud Shell ve webovém prohlížeči. Jako prostředí vyberte Bash . Pokud se zobrazí výzva, vyberte předplatné, které jste použili pro 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 do instance flexibilního serveru Azure Database for PostgreSQL.
V nabídce vlevo v části Nastavení vyberte Připojit. Zkopírujte blok podrobností připojení .
Vložte zkopírované řádky deklarace pro proměnné prostředí do terminálu Azure Cloud Shell.
{your-password}Token nahraďte 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. Na příkazovém řádku zadejte následující příkaz:
psql
Instalace rozšíření azure_ai
Rozšíření můžete použít azure_ai k integraci Azure OpenAI a Azure Cognitive Services do vaší databáze. Další informace najdete v tématu Generování vektorových vkládání pomocí Azure OpenAI ve službě Azure Database for PostgreSQL.
Povolení rozšíření v databázi:
Přidejte rozšíření do seznamu povolených, jak je popsáno v části Povolit rozšíření.
V databázi, ve které plánujete rozšíření používat
azure_ai, nainstalujte rozšíření, jak je popsáno v tématu Vytvoření rozšíření.
Kontrola objektů v rozšíření azure_ai
Kontrola objektů, které azure_ai rozšíření obsahuje, může poskytnout lepší přehled o možnostech, které nabízí. Meta-příkaz \dx můžete použít z příkazového psql řádku k výpisu objektů 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 popisuje schémata, která rozšíření přidává:
| Schéma | Popis |
|---|---|
azure_ai |
Poskytuje hlavní schéma, ve kterém se nachází konfigurační tabulka a uživatelem definované funkce (UDFs) pro interakci s ní. |
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\df , použijte meta-command. Zadejte schéma, jehož funkce by se měly zobrazit. Příkazy \x auto před \df zapnutím a vypnutím rozšířeného zobrazení automaticky usnadní zobrazení příkazu v Azure Cloud Shellu.
\x auto
\df+ azure_ai.*
azure_ai.set_setting() Pomocí funkce nastavte koncový bod a kritické hodnoty pro služby Azure AI. Přijme klíč a hodnotu , kterou chcete přiřadit. Funkce azure_ai.get_setting() poskytuje způsob, jak načíst hodnoty, které jste nastavili pomocí set_setting() funkce. Přijímá klíč nastavení, které chcete zobrazit. Pro obě metody musí být klíč jedním z následujících způsobů:
| Klíč | Popis |
|---|---|
azure_openai.endpoint |
Podporovaný koncový bod Azure OpenAI (například https://example.openai.azure.com). |
azure_openai.subscription_key |
Klíč předplatného pro prostředek Azure 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 roli, azure_ai_settings_manager která pomáhá zajistit, aby tyto informace byly chráněné a přístupné jenom uživatelům, kteří tuto roli mají. Tato role umožňuje čtení a zápis nastavení souvisejících s rozšířením.
Tyto funkce azure_ai_settings_manager můžou vyvolat azure_ai.get_setting() pouze superuživatelé a členové azure_ai.set_setting() role. Ve službě Azure Database for PostgreSQL mají všichni správci roli azure_ai_settings_manager.
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. Tyto reprezentace se pak dají použít ve vyhledávání vektorové podobnosti a využívat je 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 relací a podobností mezi daty, aby algoritmy mohly 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. V nabídce vlevo v části Správa prostředků vyberte Klíče a koncový bod.
Zkopírujte koncový bod a přístupový klíč. Použít můžete předponu
KEY1neboKEY2. 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}a{api-key}tokeny hodnotami, které jste získali z webu Azure Portal. Potom spusťte příkazy z příkazovéhopsqlřá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.
Tento článek používá malou podmnožinu datové sady BillSum k poskytnutí ukázkových textových dat pro generování vektorů. Tato datová sada poskytuje seznam návrhů zákonů amerického kongresu a kalifornských státních návrhů zákonů. Soubor, který obsahuje tato data, si můžete stáhnout bill_sum_data.csv z úložiště GitHub pro ukázky Azure.
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 souboru CSV do bill_summaries tabulky. 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 můžete použít ke generování embeddingů pro vstupní text. Pokud chcete, aby se vygenerované vektory ukládaly společně se zbývajícími daty v databázi, musíte rozšíření nainstalovat pgvector . Postupujte podle pokynů v dokumentaci o povolení podpory vektorů ve vaší databázi.
S přidanou vektorovou podporou 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 1 536, 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ů. Pomocí azure_openai.create_embeddings() funkce vytvoříte vektory pro bill_text pole a vložíte je do nově vytvořeného bill_vectorbill_summaries sloupce v tabulce.
Než funkci použijete create_embeddings() , spusťte následující příkaz, abyste ji zkontrolovali a zkontrolovali 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á:
| Důvod | Typ | Výchozí | Popis |
|---|---|---|---|
deployment_name |
text |
Název nasazení na portálu Azure AI Foundry, který obsahuje text-embeddings-ada-002 model. |
|
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 při chybě vyvolat výjimku, která má za následek vrácení transakcí zabalení zpět. |
Prvním argumentem deployment_name je hodnota, která byla přiřazena při nasazení modelu vkládání do vašeho účtu Azure OpenAI. Chcete-li tuto hodnotu načíst:
Na webu Azure Portal přejděte k prostředku Azure OpenAI.
V nabídce vlevo v části Správa prostředků vyberte Nasazení modelu a otevřete portál Azure AI Foundry.
Na portálu Azure AI Foundry vyberte Nasazení. V podokně Nasazení zkopírujte hodnotu názvu nasazení přidruženou k
text-embedding-ada-002nasazení modelu.
Pomocí těchto informací spusťte dotaz, který aktualizuje každý záznam v bill_summaries tabulce. Vložte vygenerované vektorové vkládání 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 podokna Nasazení portálu Azure AI Foundry. Pak 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 vkládání 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é zapuštění je vektor čísel s plovoucí desetinnou čárkou. Vzdálenost mezi dvěma vkládáními ve vektorovém prostoru odpovídá sémantické podobnosti mezi dvěma vstupy v původním formátu.
Hledání vektorové podobnosti
Podobnost vektorů je metoda měření toho, jak podobné jsou dvě položky tím, že jsou reprezentovány jako vektory. Vektory jsou řady čísel. Často se používají k vyhledávání prostřednictvím LLM.
Podobnost vektorů se běžně počítá prostřednictvím metrik vzdálenosti, například:
- Euklidová vzdálenost: Měří přímočarou vzdálenost mezi dvěma vektory v ndimenzionálním prostoru.
- Kosinus podobnost: Měří kosinus úhlu mezi dvěma vektory.
Povolte efektivnější vyhledávání v poli vector vytvořením indexu na bill_summaries prostřednictvím kosinové vzdálenosti a Hierarchical Navigable Small World (HNSW). 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);
Díky všemu, co je teď na místě, jste připraveni spustit vyhledávací dotaz kosinusové podobnosti s databází.
V následujícím dotazu jsou embeddings vygenerovány pro vstupní otázku a převedeny na vektorové pole (::vector). Vektorové pole umožňuje porovnávat otázku 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á <=> operátor. Tento operátor představuje operátor kosinus vzdálenosti, 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 jazykových funkcí AI, ke kterým máte přístup 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, ke kterým máte přístup prostřednictvím rozšíření, přečtěte si téma Integrace azure Database for PostgreSQL se službami 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 prostředek služby Azure AI Language:
V Azure Portal přejděte na prostředek Language Service.
V nabídce vlevo v části Správa prostředků vyberte Klíče a koncový bod.
Zkopírujte koncový bod a přístupový klíč. Použít můžete předponu
KEY1neboKEY2.Na příkazovém
psqlřádku spusťte následující příkazy, které přidají hodnoty do konfigurační tabulky.{endpoint}Nahraďte tokeny{api-key}hodnotami, které jste získali z webu Azure Portal.SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Shrnutí faktur
Pokud chcete předvést některé funkce azure_cognitiveazure_ai rozšíření, můžete vygenerovat souhrn jednotlivých faktur. Schéma azure_cognitive poskytuje dvě funkce pro sumarizaci textu:
-
summarize_abstractive: Abstraktivní shrnutí vytvoří souhrn, který zachycuje hlavní koncepty ze vstupního textu, ale nemusí používat stejná slova. -
summarize_extractive: Extrakce souhrnu sestaví souhrn extrahováním kritický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. Znovu použijte příkaz \df meta-command z psql; tentokrát se podívejte konkrétně na funkci azure_cognitive.summarize_abstractive.
\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á:
| Důvod | Typ | Výchozí | Popis |
|---|---|---|---|
text |
text |
Zadejte text, který chcete shrnout. | |
language |
text |
Dvoumísmenná reprezentace jazyka iso 639-1, ve kterém je napsán vstupní text. U povolených hodnot zkontrolujte podporu jazyka pro funkce jazyka. | |
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 při chybě vyvolat výjimku, která má za následek vrácení transakcí zabalení zpět. |
sentence_count |
integer |
3 |
Maximální počet vět, které se mají zahrnout do vygenerovaného souhrnu. |
disable_service_logs |
boolean |
false |
Nastavení, které zakáže protokoly služby Language. 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 najdete v poznámkách k dodržování předpisů a ochraně osobních údajů služeb Cognitive Services a zásadách Microsoftu zodpovědné umělé inteligence. |
Funkce summarize_abstractive 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. Umožňuje 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 můžete 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 dotazu throw_on_error je argument nastaven na false. 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 předchozím dotazu. Pokud tento příznak ponecháte ve výchozím nastavení true, dotaz selže a do databáze se nezapíšou žádné souhrny. Pokud chcete zobrazit záznam, který zobrazil upozornění, spusťte tento příkaz:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Potom se můžete dotazem na bill_summaries tabulku zobrazit nové souhrny s jednou větou, které azure_ai rozšíření generuje pro ostatní záznamy v tabulce:
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Závěr
Gratulujeme! Právě jste se dozvěděli, jak pomocí azure_ai rozšíření integrovat velké jazykové modely a generovat do databáze funkce umělé inteligence.