Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tillägget azure_ai lägger till möjligheten att använda stora språkmodeller (LLMs) och skapa generativa AI-program i en Azure Database for PostgreSQL-databas genom att integrera kraften i Azure AI-tjänster.
Generativ AI är en form av artificiell intelligens där LLM:er tränas att generera originalinnehåll baserat på indata från naturligt språk. Med hjälp azure_ai av tillägget kan du använda generativ AI:s funktioner för att bearbeta frågor på naturligt språk direkt från databasen.
Den här artikeln visar hur du lägger till omfattande AI-funktioner i en flexibel Azure Database for PostgreSQL-serverinstans med hjälp azure_ai av tillägget. Den visar hur du kan integrera både Azure OpenAI och Azure AI Language-tjänsten i databasen med hjälp av tillägget.
Förutsättningar
- Ett Azure-abonnemang. Skapa en kostnadsfritt. 
- Åtkomst beviljad till Azure OpenAI i den önskade Azure-prenumerationen. För närvarande ger programmet åtkomst till den här tjänsten. Du kan ansöka om åtkomst till Azure OpenAI genom att fylla i formuläret i Begränsad åtkomst för Azure OpenAI Service. 
- En Azure OpenAI-resurs med - text-embedding-ada-002modellen (version 2) distribuerad. Den här modellen är för närvarande endast tillgänglig i vissa regioner. Om du inte har någon resurs dokumenteras processen för att skapa en i Azure OpenAI-resursdistributionsguiden.
- En Azure AI Language-resurs . Om du inte har en språkresurs kan du skapa en i Azure-portalen genom att följa anvisningarna i snabbstarten för sammanfattning. Du kan använda den kostnadsfria prisnivån ( - Free F0) för att prova tjänsten och uppgradera senare till en betald nivå för produktion.
- En flexibel serverinstans för Azure Database för PostgreSQL i din Azure-prenumeration. Om du inte har den här resursen kan du läsa Skapa en Azure Database for PostgreSQL. 
Ansluta till databasen med psql i Azure Cloud Shell
Öppna Azure Cloud Shell i en webbläsare. Välj Bash som miljö. Om du uppmanas att göra det väljer du den prenumeration som du använde för din Azure Database for PostgreSQL-databas och väljer sedan Skapa lagring.
Så här hämtar du information om databasanslutningen:
- I Azure-portalen går du till din flexibla serverinstans för Azure Database for PostgreSQL. 
- Välj Anslut under Inställningar på den vänstra menyn. Kopiera blocket Anslutningsinformation . 
- Klistra in de kopierade deklarationsraderna för miljövariabler i Azure Cloud Shell-terminalen. - {your-password}Ersätt token med det lösenord som du angav när du skapade databasen.- 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}"
- Anslut till databasen med hjälp av kommandoradsverktyget psql. Ange följande kommando i kommandotolken: - psql
Installera azure_ai-tillägget
Du kan använda azure_ai tillägget för att integrera Azure OpenAI och Azure Cognitive Services i databasen. Mer information finns i Generera vektorinbäddningar med Azure OpenAI i Azure Database for PostgreSQL.
Så här aktiverar du tillägget i databasen:
- Lägg till tillägget i listan över tillåtna tillägg enligt beskrivningen i Tillåt tillägg. 
- I databasen där du planerar att använda - azure_aitillägget installerar du tillägget enligt beskrivningen i Skapa tillägg.
Granska objekten i azure_ai-tillägget
Att granska de objekt som azure_ai tillägget innehåller kan ge en bättre förståelse för de funktioner som erbjuds. Du kan använda \dx metakommandot från psql kommandotolken för att visa objekten i tillägget:
\dx+ azure_ai
Metakommandoutdata visar att azure_ai tillägget skapar tre scheman, flera användardefinierade funktioner (UDF:er) och flera sammansatta typer i databasen. I följande tabell beskrivs de scheman som tillägget lägger till:
| Schemat | beskrivning | 
|---|---|
| azure_ai | Tillhandahåller huvudschemat där konfigurationstabellen och UDF:erna för att interagera med den finns. | 
| azure_openai | Innehåller de UDF:er som gör det möjligt att anropa en Azure OpenAI-slutpunkt. | 
| azure_cognitive | Tillhandahåller UDF:er och sammansatta typer som rör integrering av databasen med Azure Cognitive Services. | 
Funktionerna och typerna är alla associerade med ett av schemana. Om du vill granska funktionerna som definierats i azure_ai schemat använder du \df metakommandot. Ange det schema vars funktioner ska visas. Kommandona \x auto innan \df kommandot aktiverar och inaktiverar den expanderade skärmen automatiskt för att göra utdata från kommandot enklare att visa i Azure Cloud Shell.
\x auto
\df+ azure_ai.*
              azure_ai.set_setting() Använd funktionen för att ange slutpunkten och kritiska värden för Azure AI-tjänster. Den accepterar en nyckel och värdet för att tilldela den. Funktionen azure_ai.get_setting() ger ett sätt att hämta de värden som du anger med set_setting() funktionen. Den accepterar nyckeln för den inställning som du vill visa. För båda metoderna måste nyckeln vara något av följande:
| Nyckel | beskrivning | 
|---|---|
| azure_openai.endpoint | En Azure OpenAI-slutpunkt som stöds (till exempel https://example.openai.azure.com). | 
| azure_openai.subscription_key | En prenumerationsnyckel för en Azure OpenAI-resurs. | 
| azure_cognitive.endpoint | En Cognitive Services-slutpunkt som stöds (till exempel https://example.cognitiveservices.azure.com). | 
| azure_cognitive.subscription_key | En prenumerationsnyckel för en Cognitive Services-resurs. | 
Viktigt!
Eftersom anslutningsinformationen för Azure AI-tjänster, inklusive API-nycklar, lagras i en konfigurationstabell i databasen, azure_ai definierar tillägget en roll som anropas azure_ai_settings_manager för att säkerställa att den här informationen är skyddad och endast tillgänglig för användare som har den rollen. Den här rollen möjliggör läsning och skrivning av inställningar relaterade till tillägget.
Endast superanvändare och medlemmar i azure_ai_settings_manager rollen kan anropa azure_ai.get_setting() funktionerna och azure_ai.set_setting() . I Azure Database for PostgreSQL har alla administratörsanvändare rollen azure_ai_settings_manager.
Generera vektorinbäddningar med Azure OpenAI
Tilläggets azure_aiazure_openai schema möjliggör användning av Azure OpenAI för att skapa vektorinbäddningar för textvärden. Med det här schemat kan du generera inbäddningar med Azure OpenAI direkt från databasen för att skapa vektorrepresentationer av indatatext. Dessa representationer kan sedan användas i vektorlikhetssökningar och användas av maskininlärningsmodeller.
Inbäddningar är en teknik för att använda maskininlärningsmodeller för att utvärdera hur nära relaterad information är. Den här tekniken möjliggör effektiv identifiering av relationer och likheter mellan data, så att algoritmer kan identifiera mönster och göra korrekta förutsägelser.
Ange Azure OpenAI-slutpunkten och nyckeln
Innan du använder azure_openai funktionerna konfigurerar du tillägget med din Azure OpenAI-tjänstslutpunkt och nyckel:
- I Azure-portalen går du till din Azure OpenAI-resurs. På den vänstra menyn går du till Resurshanteringoch väljer Nycklar och slutpunkt. 
- Kopiera slutpunkten och åtkomstnyckeln. Du kan använda antingen - KEY1eller- KEY2. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
- I följande kommando ersätter - {endpoint}du token och- {api-key}med värden som du hämtade från Azure-portalen. Kör sedan kommandona från- psqlkommandotolken för att lägga till dina värden i konfigurationstabellen.- SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');
- Kontrollera inställningarna som skrivits i konfigurationstabellen: - SELECT azure_ai.get_setting('azure_openai.endpoint'); SELECT azure_ai.get_setting('azure_openai.subscription_key');
Tillägget azure_ai är nu anslutet till ditt Azure OpenAI-konto och är redo att generera vektorinbäddningar.
Fyll i databasen med exempeldata
Den här artikeln använder en liten delmängd av BillSum-datamängden för att tillhandahålla exempeltextdata för att generera vektorer. Den här datamängden innehåller en lista över amerikanska kongressförslag och kaliforniska delstatsförslag. Du kan ladda ned bill_sum_data.csv filen som innehåller dessa data från GitHub-lagringsplatsen för Azure-exempel.
Om du vill vara värd för exempeldata i databasen skapar du en tabell med namnet 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
);
Genom att använda kommandot PostgreSQL COPY från psql kommandotolken läser du in exempeldata från CSV-filen i bill_summaries tabellen. Ange att den första raden i CSV-filen är en rubrikrad.
\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'
Aktivera stöd för vektor
Du kan använda azure_ai tillägget för att generera inbäddningar för indatatext. Om du vill att de genererade vektorerna ska lagras tillsammans med resten av dina data i databasen måste du installera pgvector tillägget. Följ vägledningen i dokumentationen om att aktivera stöd för vektorer i databasen.
När vektorstöd har lagts till i databasen lägger du till en ny kolumn i bill_summaries tabellen med hjälp vector av datatypen för att lagra inbäddningar i tabellen. Modellen text-embedding-ada-002 producerar vektorer med 1 536 dimensioner, så du måste ange 1536 som vektorstorlek.
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Generera och lagra vektorer
Tabellen bill_summaries är nu redo att lagra inbäddningar. Med hjälp azure_openai.create_embeddings() av funktionen skapar du vektorer för bill_text fältet och infogar dem i den nyligen skapade bill_vector kolumnen i bill_summaries tabellen.
Innan du använder create_embeddings() funktionen kör du följande kommando för att inspektera den och granska de argument som krävs:
\df+ azure_openai.*
Egenskapen Argument data types i kommandots \df+ azure_openai.* utdata visar listan med argument som funktionen förväntar sig:
| Argumentation | Typ | Standardvärde | beskrivning | 
|---|---|---|---|
| deployment_name | text | Namnet på distributionen i Azure AI Foundry-portalen som innehåller text-embeddings-ada-002modellen. | |
| input | text | Indatatext som används för att skapa inbäddningar. | |
| timeout_ms | integer | 3600000 | Timeout i millisekunder, efter vilket åtgärden stoppas. | 
| throw_on_error | boolean | true | Flagga som anger om funktionen ska vid fel utlösa ett undantag som resulterar i en återställning av de omslutande transaktionerna. | 
Det första argumentet är värdet deployment_name som tilldelades när inbäddningsmodellen distribuerades i ditt Azure OpenAI-konto. Så här hämtar du det här värdet:
- Gå till din Azure OpenAI-resurs i Azure Portal. 
- På den vänstra menyn under Resurshantering väljer du Modelldistributioner för att öppna Azure AI Foundry-portalen. 
- I Azure AI Foundry-portalen väljer du Distributioner. I fönstret Distributioner kopierar du värdet Distributionsnamn som är associerat med modelldistributionen - text-embedding-ada-002.
              
               
              
              
            
Genom att använda den här informationen kör du en fråga för att uppdatera varje post i bill_summaries tabellen. Infoga de genererade vektorinbäddningarna för bill_text fältet i bill_vector kolumnen med hjälp azure_openai.create_embeddings() av funktionen . Ersätt {your-deployment-name} med värdet För distributionsnamn som du kopierade från Azure AI Foundry-portalens distributionsfönster . Kör följande kommando:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Kör följande fråga för att visa inbäddningen som genereras för den första posten i tabellen. Du kan köra \x först om utdata är svåra att läsa.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Varje inbäddning är en vektor med flyttalsnummer. Avståndet mellan två inbäddningar i vektorutrymmet korreleras med semantisk likhet mellan två indata i det ursprungliga formatet.
Utföra en vektorlikhetssökning
Vektorlikhet är en metod för att mäta hur lika två objekt är genom att representera dem som vektorer. Vektorer är en serie tal. De används ofta för att utföra sökningar via LLM:er.
Vektorlikhet beräknas ofta via avståndsmått, till exempel:
- Euklidiska avstånd: Mäter det räta avståndet mellan två vektorer i det n-dimensionella utrymmet.
- Cosinuslikhet: Mäter cosinus för vinkeln mellan två vektorer.
Aktivera effektivare sökning över vector fältet genom att skapa ett index på bill_summaries via cosinéavstånd och hierarkisk navigerbar liten värld (HNSW). Med HNSW kan pgvector du använda de senaste grafbaserade algoritmerna för att beräkna närmsta grannfrågor.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Nu när allt är på plats är du redo att köra en cosinuslikhetsfråga mot databasen.
I följande fråga genereras inbäddningarna för en indatafråga och skickas sedan till en vektormatris (::vector). Med vektormatrisen kan frågan jämföras med de vektorer som lagras i bill_summaries tabellen.
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;
Frågan använder <=>vektoroperatorn. Den här operatorn representerar den cosiniska avståndsoperator som används för att beräkna avståndet mellan två vektorer i ett flerdimensionellt utrymme.
Integrera Azure Cognitive Services
Integreringarna av Azure AI-tjänster som ingår i azure_cognitive schemat för azure_ai tillägget ger en omfattande uppsättning AI-språkfunktioner som du kan komma åt direkt från databasen. Funktionerna omfattar attitydanalys, språkidentifiering, extrahering av nyckelfraser, entitetsigenkänning och textsammanfattning. Åtkomst till dessa funktioner aktiveras via Azure AI Language-tjänsten.
Information om hur du granskar de fullständiga Azure AI-funktionerna som du kan komma åt via tillägget finns i Integrera Azure Database for PostgreSQL med Azure Cognitive Services.
Ange tjänstslutpunkten och nyckeln för Azure AI Language
Precis som med azure_openai funktionerna måste du ange slutpunkten och en nyckel för din Azure AI Language-tjänstresurs för att kunna göra anrop mot Azure AI-tjänster med hjälp azure_ai av tillägget:
- Gå till språktjänstresursen i Azure-portalen. 
- På den vänstra menyn går du till Resurshanteringoch väljer Nycklar och slutpunkt. 
- Kopiera slutpunkten och åtkomstnyckeln. Du kan använda antingen - KEY1eller- KEY2.
- psqlI kommandotolken kör du följande kommandon för att lägga till dina värden i konfigurationstabellen.- {endpoint}Ersätt token och- {api-key}med de värden som du hämtade från Azure-portalen.- SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Sammanfatta fakturor
För att visa några av azure_cognitive-funktionens möjligheter i azure_ai-tillägget kan du generera en sammanfattning av varje faktura. Schemat azure_cognitive innehåller två funktioner för att sammanfatta text:
- 
              summarize_abstractive: Abstrakt sammanfattning ger en sammanfattning som samlar in huvudbegreppen från indatatext men kanske inte använder identiska ord.
- 
              summarize_extractive: Extraherande sammanfattning sammanställer en sammanfattning genom att extrahera kritiska meningar från indatatexten.
Om du vill använda Azure AI Language-tjänstens möjlighet att generera nytt originalinnehåll använder summarize_abstractive du funktionen för att skapa en sammanfattning av textindata. 
              \df Använd metakommandot från psql igen, den här gången för att titta specifikt på azure_cognitive.summarize_abstractive funktionen:
\df azure_cognitive.summarize_abstractive
Egenskapen Argument data types i kommandots \df azure_cognitive.summarize_abstractive utdata visar listan med argument som funktionen förväntar sig:
| Argumentation | Typ | Standardvärde | beskrivning | 
|---|---|---|---|
| text | text | Textinmatning som ska sammanfattas. | |
| language | text | Iso 639-1-representation med två bokstäver av språket där indatatexten skrivs. Om du vill ha tillåtna värden kontrollerar du Språkstöd för Språkfunktioner. | |
| timeout_ms | integer | 3600000 | Timeout i millisekunder, efter vilket åtgärden stoppas. | 
| throw_on_error | boolean | true | Flagga som anger om funktionen ska vid fel utlösa ett undantag som resulterar i en återställning av de omslutande transaktionerna. | 
| sentence_count | integer | 3 | Maximalt antal meningar som ska inkluderas i den genererade sammanfattningen. | 
| disable_service_logs | boolean | false | Inställning som inaktiverar språktjänstloggar. Språktjänsten loggar indatatexten i 48 timmar enbart för att tillåta felsökningsproblem. Om du ställer in den här egenskapen så trueinaktiveras loggning av indata och det kan begränsa vår möjlighet att undersöka problem som inträffar. Mer information finns i efterlevnads- och sekretessanteckningarna för Cognitive Services och Principerna för Microsofts ansvarsfulla AI. | 
Funktionen summarize_abstractive kräver följande argument: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).
Följande fråga mot bill_summaries tabellen använder summarize_abstractive funktionen för att generera en ny sammanfattning med en mening för texten i en faktura. Det gör att du kan införliva kraften i generativ AI direkt i dina frågor.
SELECT
    bill_id,
    azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
Du kan också använda funktionen för att skriva data till dina databastabeller. 
              bill_summaries Ändra tabellen för att lägga till en ny kolumn för lagring av sammanfattningar med en mening i databasen:
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Uppdatera sedan tabellen med sammanfattningarna. Funktionen summarize_abstractive returnerar en matris med text (text[]). Funktionen array_to_string konverterar returvärdet till dess strängrepresentation. I följande fråga är argumentet inställt på throw_on_errorfalse. Med den här inställningen kan sammanfattningsprocessen fortsätta om ett fel inträffar.
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;
I utdata kanske du ser en varning om ett ogiltigt dokument som det inte gick att generera en lämplig sammanfattning för. Den här varningen beror på inställningen throw_on_error till false i föregående fråga. Om du lämnade flaggan till standardvärdet trueskulle frågan misslyckas och inga sammanfattningar skulle skrivas till databasen. Om du vill visa posten som utlöste varningen kör du det här kommandot:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Du kan sedan köra en fråga på bill_summaries-tabellen för att visa de nya enmeningssammanfattningarna som tillägget azure_ai genererar för de andra posterna i tabellen.
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Slutsats
Grattis! Du har precis lärt dig hur du använder azure_ai tillägget för att integrera stora språkmodeller och generativa AI-funktioner i databasen.