Integrowanie możliwości sztucznej inteligencji platformy Azure z usługą Azure Database for PostgreSQL — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Rozszerzenie azure_ai
dodaje możliwość korzystania z dużych modeli językowych (LLMs) i tworzenia aplikacji generujących sztuczną inteligencję w ramach elastycznej bazy danych serwera usługi Azure Database for PostgreSQL przez zintegrowanie możliwości usług Azure AI. Generowanie sztucznej inteligencji to forma sztucznej inteligencji, w której maszyny LLM są trenowane w celu generowania oryginalnej zawartości na podstawie danych wejściowych języka naturalnego. azure_ai
Użycie rozszerzenia umożliwia korzystanie z funkcji przetwarzania zapytań języka naturalnego w języku naturalnym generowania sztucznej inteligencji bezpośrednio z bazy danych.
W tym samouczku przedstawiono dodawanie zaawansowanych funkcji sztucznej inteligencji do wystąpienia elastycznego serwera usługi Azure Database for PostgreSQL przy użyciu azure_ai
rozszerzenia . Obejmuje ona integrację zarówno usługi Azure OpenAI, jak i usługi Azure AI Language z bazą danych przy użyciu rozszerzenia .
Wymagania wstępne
Subskrypcja platformy Azure — utwórz bezpłatnie.
Dostęp jest udzielany usłudze Azure OpenAI w żądanej subskrypcji platformy Azure. Obecnie dostęp do tej usługi jest udzielany przez aplikację. Możesz ubiegać się o dostęp do usługi Azure OpenAI, wypełniając formularz pod adresem https://aka.ms/oai/access.
Zasób usługi Azure OpenAI z wdrożonym modelem
text-embedding-ada-002
(wersja 2). Ten model jest obecnie dostępny tylko w niektórych regionach. Jeśli nie masz zasobu, proces tworzenia zasobu jest udokumentowany w przewodniku wdrażania zasobów usługi Azure OpenAI.Usługa językowa azure AI. Jeśli nie masz zasobu, możesz utworzyć zasób language w witrynie Azure Portal, postępując zgodnie z instrukcjami podanymi w dokumencie Szybki start na potrzeby podsumowania . Możesz użyć warstwy cenowej bezpłatna (
Free F0
), aby wypróbować usługę i uaktualnić ją później do warstwy płatnej dla środowiska produkcyjnego.Elastyczne wystąpienie serwera usługi Azure Database for PostgreSQL w ramach subskrypcji platformy Azure. Jeśli nie masz zasobu, zobacz Tworzenie wystąpienia usługi Azure Database for PostgreSQL — serwer elastyczny.
Nawiązywanie połączenia z bazą danych przy użyciu psql
usługi Azure Cloud Shell
Otwórz usługę Azure Cloud Shell w przeglądarce internetowej. Wybierz pozycję Bash jako środowisko, a jeśli zostanie wyświetlony monit, wybierz subskrypcję używaną dla elastycznej bazy danych serwera usługi Azure Database for PostgreSQL, a następnie wybierz pozycję Utwórz magazyn.
Aby pobrać szczegóły połączenia z bazą danych:
Przejdź do zasobu serwera elastycznego usługi Azure Database for PostgreSQL w witrynie Azure Portal.
W menu nawigacji po lewej stronie wybierz pozycję Połącz w obszarze Ustawienia i skopiuj blok Szczegóły połączenia.
Wklej skopiowane wiersze deklaracji zmiennej środowiskowej do otwartego powyżej terminalu usługi Azure Cloud Shell, zastępując
{your-password}
token hasłem ustawionym podczas tworzenia bazy danych.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}"
Połącz się z bazą danych przy użyciu narzędzia wiersza polecenia psql, wprowadzając następujące polecenie w wierszu polecenia.
psql
azure_ai
Instalowanie rozszerzenia
Rozszerzenie usługi Azure AI i interfejs OpenAI
azure_ai
Rozszerzenie umożliwia integrację usług Azure OpenAI i Azure Cognitive Services z bazą danych. Aby włączyć rozszerzenie w bazie danych, wykonaj poniższe kroki:
Dodaj rozszerzenie do listy dozwolonych zgodnie z opisem w sekcji Zezwalaj na rozszerzenia.
W bazie danych, w której planujesz używać
azure_ai
rozszerzenia, zainstaluj je zgodnie z opisem w temacie Tworzenie rozszerzeń
Sprawdzanie obiektów zawartych w azure_ai
rozszerzeniu
Przeglądanie obiektów zawartych w azure_ai
rozszerzeniu może zapewnić lepsze zrozumienie możliwości oferowanych przez nią. Meta-command można użyć \dx
w psql
wierszu polecenia, aby wyświetlić listę obiektów zawartych w rozszerzeniu.
\dx+ azure_ai
Dane wyjściowe meta-polecenia pokazują, że azure_ai
rozszerzenie tworzy trzy schematy, wiele funkcji zdefiniowanych przez użytkownika (UDF) i kilka typów złożonych w bazie danych. W poniższej tabeli wymieniono schematy dodane przez rozszerzenie i opisano każdy z nich.
Schemat | opis |
---|---|
azure_ai |
Schemat główny, w którym znajduje się tabela konfiguracji i funkcje zdefiniowane przez użytkownika do interakcji z nim. |
azure_openai |
Zawiera funkcje zdefiniowane przez użytkownika, które umożliwiają wywoływanie punktu końcowego usługi Azure OpenAI. |
azure_cognitive |
Udostępnia funkcje zdefiniowane przez użytkownika i typy złożone związane z integracją bazy danych z usługami Azure Cognitive Services. |
Wszystkie funkcje i typy są skojarzone z jednym ze schematów. Aby przejrzeć funkcje zdefiniowane w schemacie azure_ai
, użyj \df
meta-polecenia, określając schemat, którego funkcje powinny być wyświetlane. Polecenia \x auto
przed \df
przełączenia rozwiniętego wyświetlania i wyłączania automatycznie, aby dane wyjściowe polecenia było łatwiejsze do wyświetlenia w usłudze Azure Cloud Shell.
\x auto
\df+ azure_ai.*
Funkcja azure_ai.set_setting()
umożliwia ustawianie punktów końcowych i wartości krytycznych dla usług Azure AI. Akceptuje klucz i wartość, która ma zostać przypisana. Funkcja azure_ai.get_setting()
zapewnia sposób pobierania wartości ustawionych za set_setting()
pomocą funkcji . Akceptuje klucz ustawienia, które chcesz wyświetlić. W przypadku obu metod klucz musi być jednym z następujących elementów:
Key | opis |
---|---|
azure_openai.endpoint |
Obsługiwany punkt końcowy openAI (na przykład https://example.openai.azure.com ). |
azure_openai.subscription_key |
Klucz subskrypcji dla zasobu OpenAI. |
azure_cognitive.endpoint |
Obsługiwany punkt końcowy usług Cognitive Services (na przykład https://example.cognitiveservices.azure.com ). |
azure_cognitive.subscription_key |
Klucz subskrypcji dla zasobu usług Cognitive Services. |
Ważne
Ponieważ informacje o połączeniu usług azure AI, w tym klucze interfejsu API, są przechowywane w tabeli konfiguracji w bazie danych, azure_ai
rozszerzenie definiuje rolę wywoływaną azure_ai_settings_manager
w celu zapewnienia, że te informacje są chronione i dostępne tylko dla użytkowników przypisanych do tej roli. Ta rola umożliwia odczytywanie i zapisywanie ustawień związanych z rozszerzeniem. Tylko superużytkownicy i członkowie azure_ai_settings_manager
roli mogą wywoływać azure_ai.get_setting()
funkcje i azure_ai.set_setting()
. Na serwerze elastycznym usługi Azure Database for PostgreSQL wszyscy użytkownicy administracyjni mają przypisaną azure_ai_settings_manager
rolę.
Generowanie osadzania wektorów za pomocą usługi Azure OpenAI
azure_ai
Schemat rozszerzenia azure_openai
umożliwia korzystanie z usługi Azure OpenAI do tworzenia wektorowych osadzeń dla wartości tekstowych. Przy użyciu tego schematu można wygenerować osadzanie za pomocą usługi Azure OpenAI bezpośrednio z bazy danych, aby utworzyć wektorowe reprezentacje tekstu wejściowego, które następnie mogą być używane w wyszukiwaniach podobieństw wektorowych i używane przez modele uczenia maszynowego.
Osadzanie to technika używania modeli uczenia maszynowego do oceny, jak ściśle powiązane są informacje. Ta technika umożliwia wydajną identyfikację relacji i podobieństw między danymi, umożliwiając algorytmom identyfikowanie wzorców i dokonywanie dokładnych przewidywań.
Ustawianie punktu końcowego i klucza usługi Azure OpenAI
Przed użyciem azure_openai
funkcji:
Skonfiguruj rozszerzenie przy użyciu punktu końcowego i klucza usługi Azure OpenAI.
Przejdź do zasobu usługi Azure OpenAI w witrynie Azure Portal i wybierz pozycję Klucze i punkt końcowy w obszarze Zarządzanie zasobami z menu po lewej stronie.
Skopiuj punkt końcowy i klucz dostępu. Możesz użyć wartości
KEY1
lubKEY2
. Posiadanie zawsze dwóch kluczy pozwala bezpiecznie rotować i ponowne generować klucze bez powodowania przerw w działaniu usługi.
W poniższym poleceniu zastąp {endpoint}
wartości i {api-key}
wartościami pobranymi z witryny Azure Portal, a następnie uruchom polecenia z psql
wiersza polecenia, aby dodać wartości do tabeli konfiguracji.
SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');
Sprawdź ustawienia zapisane w tabeli konfiguracji:
SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.get_setting('azure_openai.subscription_key');
Rozszerzenie azure_ai
jest teraz połączone z kontem usługi Azure OpenAI i jest gotowe do generowania osadzania wektorów.
Wypełnienie bazy danych przykładowymi danymi
W tym samouczku użyto małego podzestawu zestawu danych BillSum, który zawiera listę Stany Zjednoczone rachunki stanów Kongresu i Kalifornii, aby dostarczyć przykładowe dane tekstowe do generowania wektorów. Plik bill_sum_data.csv
zawierający te dane można pobrać z repozytorium GitHub Przykłady platformy Azure.
Aby hostować przykładowe dane w bazie danych, utwórz tabelę o nazwie 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
);
Za pomocą polecenia COPY postgreSQL z psql
wiersza polecenia załaduj przykładowe dane z pliku CSV do bill_summaries
tabeli, określając, że pierwszy wiersz pliku CSV jest wierszem nagłówka.
\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'
Włączanie obsługi wektorów
Rozszerzenie azure_ai
umożliwia generowanie osadzania dla tekstu wejściowego. Aby umożliwić przechowywanie wygenerowanych wektorów wraz z resztą danych w bazie danych, należy zainstalować pgvector
rozszerzenie, postępując zgodnie ze wskazówkami zawartymi w dokumentacji dotyczącej włączania wektorów.
Po dodaniu wektora do bazy danych dodaj nową kolumnę do bill_summaries
tabeli przy użyciu vector
typu danych do przechowywania osadzania w tabeli. Model text-embedding-ada-002
tworzy wektory o wymiarach 1536, więc należy określić 1536
jako rozmiar wektora.
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Generowanie i przechowywanie wektorów
Tabela bill_summaries
jest teraz gotowa do przechowywania osadzania. azure_openai.create_embeddings()
Za pomocą funkcji tworzysz wektory dla bill_text
pola i wstawiasz je do nowo utworzonej bill_vector
kolumny w bill_summaries
tabeli.
Przed użyciem create_embeddings()
funkcji uruchom następujące polecenie, aby sprawdzić go i przejrzeć wymagane argumenty:
\df+ azure_openai.*
Właściwość Argument data types
w danych wyjściowych \df+ azure_openai.*
polecenia wyświetla listę argumentów, których oczekuje funkcja.
Argument | Typ | Domyślny | opis |
---|---|---|---|
deployment_name | text |
Nazwa wdrożenia w programie Azure OpenAI Studio, który zawiera text-embeddings-ada-002 model. |
|
input | text |
Tekst wejściowy używany do tworzenia osadzania. | |
timeout_ms | integer |
3600000 | Limit czasu w milisekundach, po którym operacja jest zatrzymana. |
throw_on_error | boolean |
prawda | Flaga wskazująca, czy funkcja powinna po błędzie zgłosić wyjątek powodujący wycofanie transakcji opakowujących. |
Pierwszy argument to deployment_name
, przypisany podczas wdrażania modelu osadzania na koncie usługi Azure OpenAI. Aby pobrać tę wartość, przejdź do zasobu usługi Azure OpenAI w witrynie Azure Portal. Następnie w menu nawigacji po lewej stronie w obszarze Zarządzanie zasobami wybierz element Wdrożenia modelu, aby otworzyć program Azure OpenAI Studio. W usłudze Azure OpenAI Studio na karcie Wdrożenia skopiuj wartość Nazwa wdrożenia skojarzona z wdrożeniem text-embedding-ada-002
modelu.
Korzystając z tych informacji, uruchom zapytanie, aby zaktualizować każdy rekord w bill_summaries
tabeli, wstawiając wygenerowane wektory osadzania dla bill_text
pola w bill_vector
kolumnie przy użyciu azure_openai.create_embeddings()
funkcji . Zastąp {your-deployment-name}
wartość nazwą wdrożenia skopiowaną z karty Wdrożenia programu Azure OpenAI Studio, a następnie uruchom następujące polecenie:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Wykonaj następujące zapytanie, aby wyświetlić osadzanie wygenerowane dla pierwszego rekordu w tabeli. Możesz uruchomić \x
najpierw, jeśli dane wyjściowe są trudne do odczytania.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Każde osadzanie jest wektorem liczb zmiennoprzecinkowych, tak aby odległość między dwoma osadzaniami w przestrzeni wektorowej została skorelowana z podobieństwem semantycznym między dwoma danymi wejściowymi w oryginalnym formacie.
Wykonywanie wyszukiwania podobieństwa wektorów
Podobieństwo wektorów to metoda służąca do mierzenia, jak podobne dwa elementy są reprezentowane jako wektory, które są seriami liczb. Wektory są często używane do przeprowadzania wyszukiwania przy użyciu funkcji LLMs. Podobieństwo wektorów jest często obliczane przy użyciu metryk odległości, takich jak odległość euklidesowa lub podobieństwo cosinusu. Odległość euklidesowa mierzy odległość linii prostej między dwoma wektorami w przestrzeni nwymiarowej, podczas gdy podobieństwo cosinusu mierzy cosinus kąta między dwoma wektorami.
Aby umożliwić bardziej wydajne wyszukiwanie w vector
polu, tworząc indeks na bill_summaries
podstawie odległości cosinusu i HNSW, który jest skrótem od hierarchicznej nawigacji mały świat. Usługa HNSW umożliwia pgvector
używanie najnowszych algorytmów opartych na grafach do przybliżonych zapytań najbliższych sąsiadów.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Teraz wszystko jest gotowe do wykonania zapytania wyszukiwania podobieństwa cosinus względem bazy danych.
W poniższym zapytaniu osadzanie jest generowane dla pytania wejściowego, a następnie rzutowane do tablicy wektorowej (::vector
), która umożliwia porównywanie ich z wektorami przechowywanymi w bill_summaries
tabeli.
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;
Zapytanie używa operatora wektora <=>
, który reprezentuje operator "odległość cosinus" używany do obliczania odległości między dwoma wektorami w przestrzeni wielowymiarowej.
Integrowanie usług Azure Cognitive Services
Integracje usług Azure AI zawarte w azure_cognitive
schemacie azure_ai
rozszerzenia zapewniają bogaty zestaw funkcji języka sztucznej inteligencji dostępnych bezpośrednio z bazy danych. Funkcje obejmują analizę tonacji, wykrywanie języka, wyodrębnianie kluczowych fraz, rozpoznawanie jednostek i podsumowywanie tekstu. Dostęp do tych funkcji jest włączony za pośrednictwem usługi językowej Azure AI.
Aby zapoznać się z pełnymi funkcjami sztucznej inteligencji platformy Azure dostępnymi za pośrednictwem rozszerzenia, zobacz integrowanie usługi Azure Database for PostgreSQL — serwer elastyczny z usługami Azure Cognitive Services.
Ustawianie punktu końcowego i klucza usługi językowej azure AI
Podobnie jak w przypadku azure_openai
funkcji, aby pomyślnie wykonywać wywołania usług Azure AI przy użyciu azure_ai
rozszerzenia, musisz podać punkt końcowy i klucz dla usługi językowej Azure AI. Pobierz te wartości, przechodząc do zasobu usługi językowej w witrynie Azure Portal z menu po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucze i punkt końcowy . Skopiuj punkt końcowy i klucz dostępu. Możesz użyć wartości KEY1
lub KEY2
.
W poniższym poleceniu zastąp {endpoint}
wartości i {api-key}
wartościami pobranymi z witryny Azure Portal, a następnie uruchom polecenia z psql
wiersza polecenia, aby dodać wartości do tabeli konfiguracji.
SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}');
SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Podsumowywanie rachunków
Aby zademonstrować niektóre możliwości azure_cognitive
funkcji azure_ai
rozszerzenia, należy wygenerować podsumowanie każdego rachunku. Schemat azure_cognitive
zawiera dwie funkcje podsumowywania tekstu summarize_abstractive
i summarize_extractive
. Podsumowanie abstrakcyjne tworzy podsumowanie, które przechwytuje główne pojęcia z tekstu wejściowego, ale może nie używać identycznych słów. Podsumowanie wyodrębniające jest sumaryczne, wyodrębniając zdania krytyczne z tekstu wejściowego.
Aby użyć możliwości usługi językowej Azure AI do generowania nowej, oryginalnej zawartości, użyj summarize_abstractive
funkcji , aby utworzyć podsumowanie danych wejściowych tekstu. \df
Użyj ponownie meta-poleceniapsql
, tym razem, aby przyjrzeć się konkretnie azure_cognitive.summarize_abstractive
funkcji.
\df azure_cognitive.summarize_abstractive
Właściwość Argument data types
w danych wyjściowych \df azure_cognitive.summarize_abstractive
polecenia wyświetla listę argumentów, których oczekuje funkcja.
Argument | Typ | Domyślny | opis |
---|---|---|---|
text | text |
Tekst wejściowy do podsumowania. | |
język | text |
Dwuliterowa reprezentacja języka ISO 639-1, w którym jest zapisywany tekst wejściowy. Sprawdź obsługę języka pod kątem dozwolonych wartości. | |
timeout_ms | integer |
3600000 | Limit czasu w milisekundach, po którym operacja jest zatrzymana. |
throw_on_error | boolean |
prawda | Flaga wskazująca, czy funkcja powinna po błędzie zgłosić wyjątek powodujący wycofanie transakcji opakowujących. |
sentence_count | integer |
3 | Maksymalna liczba zdań do uwzględnienia w wygenerowanych podsumowaniach. |
disable_service_logs | boolean |
fałsz | Usługa językowa rejestruje tekst wejściowy przez 48 godzin wyłącznie w celu umożliwienia rozwiązywania problemów. Ustawienie tej właściwości w celu true wyłączenia rejestrowania danych wejściowych i może ograniczyć możliwość badania występujących problemów. Aby uzyskać więcej informacji, zobacz Cognitive Services Compliance and Privacy notes at and Microsoft Responsible AI principles at https://aka.ms/cs-compliance https://www.microsoft.com/ai/responsible-ai. |
Funkcja summarize_abstractive
wymaga następujących argumentów: azure_cognitive.summarize_abstractive(text TEXT, language TEXT)
.
Poniższe zapytanie względem bill_summaries
tabeli używa summarize_abstractive
funkcji , aby wygenerować nowe jedno zdanie podsumowania tekstu rachunku, co umożliwia włączenie możliwości generowania sztucznej inteligencji bezpośrednio do zapytań.
SELECT
bill_id,
azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
Funkcja może również służyć do zapisywania danych w tabelach bazy danych. Zmodyfikuj tabelę, bill_summaries
aby dodać nową kolumnę do przechowywania podsumowań z jednym zdaniem w bazie danych.
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Następnie zaktualizuj tabelę za pomocą podsumowań. Funkcja summarize_abstractive
zwraca tablicę tekstu (text[]
). Funkcja array_to_string
konwertuje wartość zwracaną na reprezentację ciągu. W poniższym throw_on_error
zapytaniu argument został ustawiony na false
wartość . To ustawienie umożliwia kontynuowanie procesu podsumowania w przypadku wystąpienia błędu.
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;
W danych wyjściowych może zostać wyświetlone ostrzeżenie dotyczące nieprawidłowego dokumentu, dla którego nie można wygenerować odpowiedniego podsumowania. To ostrzeżenie wynika z ustawienia throw_on_error
na false
w powyższym zapytaniu. Jeśli ta flaga została pozostawiona domyślnie true
, zapytanie zakończy się niepowodzeniem, a żadne podsumowania nie zostałyby zapisane w bazie danych. Aby wyświetlić rekord, który rzucił ostrzeżenie, wykonaj następujące polecenie:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Następnie możesz wysłać zapytanie bill_summaries
do tabeli, aby wyświetlić nowe, jedno zdanie podsumowania wygenerowane przez azure_ai
rozszerzenie dla innych rekordów w tabeli.
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Podsumowanie
Gratulacje. Wiesz już, jak używać azure_ai
rozszerzenia do integrowania dużych modeli językowych i generowania możliwości sztucznej inteligencji w bazie danych.
Powiązana zawartość
- Jak używać rozszerzeń PostgreSQL w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Dowiedz się, jak wygenerować osadzanie za pomocą usługi Azure OpenAI.
- Modele osadzania usługi Azure OpenAI Service.
- Omówienie osadzania w usłudze Azure OpenAI Service.
- Co to jest język sztucznej inteligencji platformy Azure?.
- Co to jest usługa Azure OpenAI Service?.