Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozszerzenie azure_ai dodaje możliwość korzystania z dużych modeli językowych (LLMs) i tworzenia aplikacji generacyjnych sztucznej inteligencji w bazie danych 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. Za pomocą azure_ai rozszerzenia można używać funkcji generacyjnych sztucznej inteligencji do przetwarzania zapytań języka naturalnego bezpośrednio z bazy danych.
W tym artykule przedstawiono, jak dodać zaawansowane funkcje AI do elastycznego serwera usługi Azure Database for PostgreSQL przy użyciu rozszerzenia azure_ai. Pokazano w nim, jak można zintegrować usługę Azure OpenAI i Azure AI Language service z bazą danych przy użyciu rozszerzenia .
Wymagania wstępne
Subskrypcja platformy Azure. Utwórz je bezpłatnie.
Dostęp jest udzielany usłudze Azure OpenAI w żądanej subskrypcji platformy Azure. Obecnie aplikacja udziela dostępu do tej usługi. Możesz ubiegać się o dostęp do usługi Azure OpenAI, wypełniając formularz w obszarze Ograniczony dostęp do usługi Azure OpenAI Service.
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.Zasób języka sztucznej inteligencji platformy Azure. Jeśli nie masz zasobu językowego, możesz go utworzyć w portalu Azure, postępując zgodnie z instrukcjami podanymi w przewodniku Szybki start do 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 tego zasobu, zobacz Tworzenie usługi Azure Database for PostgreSQL.
Nawiązywanie połączenia z bazą danych przy użyciu narzędzia psql w usłudze Azure Cloud Shell
Otwórz usługę Azure Cloud Shell w przeglądarce internetowej. Wybierz pozycję Bash jako środowisko. Jeśli zostanie wyświetlony monit, wybierz subskrypcję, której używasz dla bazy danych usługi Azure Database for PostgreSQL, a następnie kliknij Utwórz magazyn.
Aby pobrać szczegóły połączenia z bazą danych:
W witrynie Azure Portal przejdź do wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Połącz. Skopiuj blok Szczegóły połączenia .
Wklej skopiowane wiersze deklaracji zmiennych środowiskowych do terminalu usługi Azure Cloud Shell. Zastąp
{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}"Nawiąż połączenie z bazą danych przy użyciu narzędzia wiersza polecenia psql. Wprowadź następujące polecenie w wierszu polecenia:
psql
Instalowanie rozszerzenia azure_ai
Za pomocą azure_ai rozszerzenia można zintegrować usługi Azure OpenAI i Azure Cognitive Services z bazą danych. Aby uzyskać więcej informacji, zobacz Generate vector embeddings with Azure OpenAI in Azure Database for PostgreSQL (Generowanie osadzania wektorów za pomocą usługi Azure OpenAI w usłudze Azure Database for PostgreSQL).
Aby włączyć rozszerzenie w bazie danych:
Dodaj rozszerzenie do listy dozwolonych zgodnie z opisem w sekcji Zezwalaj na rozszerzenia.
W bazie danych, w której planujesz używać
azure_airozszerzenia, zainstaluj rozszerzenie zgodnie z opisem w temacie Tworzenie rozszerzeń.
Sprawdzanie obiektów w rozszerzeniu azure_ai
Przeglądanie obiektów, które azure_ai zawiera rozszerzenie, może zapewnić lepsze zrozumienie możliwości oferowanych przez to rozszerzenie. W wierszu polecenia możesz użyć \dx meta-poleceniapsql, aby wyświetlić listę obiektów 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 opisano schematy, które dodaje rozszerzenie:
| Schemat | opis |
|---|---|
azure_ai |
Udostępnia główny schemat, w którym znajduje się tabela konfiguracji oraz funkcje zdefiniowane przez użytkownika umożliwiające interakcję z tą tabelą. |
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 meta-polecenia \df. Określ schemat, którego funkcje powinny być wyświetlane. Polecenia \x auto przed poleceniem \df automatycznie włączają i wyłączają rozwinięty wyświetlacz, aby ułatwić przeglądanie danych wyjściowych w Azure Cloud Shell.
\x auto
\df+ azure_ai.*
azure_ai.set_setting() Użyj funkcji , aby ustawić punkt końcowy i wartości krytyczne 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, które ustawiono za pomocą funkcji set_setting(). Akceptuje klucz ustawienia, które chcesz wyświetlić. W przypadku obu metod klucz musi być jednym z następujących elementów:
| Klawisz | opis |
|---|---|
azure_openai.endpoint |
Obsługiwany punkt końcowy usługi Azure OpenAI (na przykład https://example.openai.azure.com). |
azure_openai.subscription_key |
Klucz subskrypcji zasobu usługi Azure 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 API, są przechowywane w tabeli konfiguracyjnej w bazie danych, azure_ai rozszerzenie definiuje rolę określaną jako azure_ai_settings_manager, aby zapewnić, że te informacje są chronione i dostępne wyłącznie dla użytkowników posiadających tę rolę. 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() . W usłudze Azure Database for PostgreSQL wszyscy użytkownicy administracyjni mają rolę azure_ai_settings_manager .
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. Za pomocą tego schematu można wygenerować osadzanie za pomocą usługi Azure OpenAI bezpośrednio z bazy danych, aby utworzyć wektorowe reprezentacje tekstu wejściowego. Te reprezentacje mogą być następnie używane w wyszukiwaniach podobieństwa wektorów 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, dzięki czemu algorytmy mogą identyfikować wzorce i tworzyć dokładne przewidywania.
Ustawianie punktu końcowego i klucza usługi Azure OpenAI
Przed użyciem azure_openai funkcji skonfiguruj rozszerzenie za pomocą punktu końcowego i klucza usługi Azure OpenAI:
W witrynie Azure Portal przejdź do zasobu azure OpenAI. W 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
KEY1lubKEY2. 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 tokeny
{endpoint}i{api-key}wartościami pobranymi z portalu Azure. Następnie uruchom polecenia zpsqlwiersza 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 artykule użyto małego podzestawu zestawu danych BillSum w celu udostępnienia przykładowych danych tekstowych do generowania wektorów. Ten zestaw danych zawiera listę projektów ustaw Kongresu Stanów Zjednoczonych oraz stanowych Kalifornii. Możesz pobrać bill_sum_data.csv plik zawierający te dane z repozytorium GitHub dla przykładów 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śl, ż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
Za pomocą azure_ai rozszerzenia można wygenerować osadzanie dla tekstu wejściowego. Aby umożliwić przechowywanie wygenerowanych wektorów obok pozostałych danych w bazie danych, należy zainstalować pgvector rozszerzenie. Postępuj zgodnie ze wskazówkami w dokumentacji dotyczącymi włączania obsługi wektorów w bazie danych.
Dzięki dodaniu obsługi wektorów do bazy danych, dodaj nową kolumnę do tabeli bill_summaries przy użyciu typu danych vector do przechowywania embeddingów 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. Za pomocą azure_openai.create_embeddings() funkcji tworzysz wektory dla bill_text pola i wstawiasz je do nowo utworzonej bill_vectorbill_summaries kolumny w tabeli.
Przed użyciem create_embeddings() funkcji uruchom następujące polecenie, aby go sprawdzić 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:
| Argumentacja | Typ | Domyślny | opis |
|---|---|---|---|
deployment_name |
text |
Nazwa wdrożenia w portalu usługi Azure AI Foundry, które 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 |
true |
Flaga wskazująca, czy funkcja, w przypadku błędu, powinna zgłaszać wyjątek, który powoduje wycofanie transakcji opakowujących. |
Pierwszym argumentem deployment_name jest wartość przypisana podczas wdrażania modelu osadzania na koncie usługi Azure OpenAI. Aby pobrać tę wartość:
Przejdź do zasobu azure OpenAI w witrynie Azure Portal.
W menu po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Wdrożenia modelu , aby otworzyć portal usługi Azure AI Foundry.
W portalu azure AI Foundry wybierz pozycję Wdrożenia. W okienku Wdrożenia skopiuj wartość Nazwa wdrożenia skojarzona z wdrożeniem
text-embedding-ada-002modelu.
Korzystając z tych informacji, uruchom zapytanie, aby zaktualizować każdy rekord w bill_summaries tabeli. Wstaw wygenerowane wektory osadzeń dla pola bill_text do kolumny bill_vector przy użyciu funkcji azure_openai.create_embeddings(). Zastąp {your-deployment-name} ciąg wartością Nazwa wdrożenia skopiowaną z okienka Wdrożenia portalu usługi Azure AI Foundry. Następnie uruchom następujące polecenie:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Uruchom 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. Odległość między dwoma osadzaniami w przestrzeni wektorowej jest 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 pomiaru podobieństwa dwóch elementów poprzez ich reprezentację jako wektory. Wektory są serią liczb. Są one często używane do wykonywania wyszukiwań za pośrednictwem LLM-ów.
Podobieństwo wektorów jest często obliczane za pomocą metryk odległości, takich jak:
- Odległość euklidesowa: Mierzy odległość linii prostej między dwoma wektorami w przestrzeni nwymiarowej.
- Podobieństwo cosinusu: Mierzy cosinus kąta między dwoma wektorami.
Umożliwia bardziej wydajne wyszukiwanie w vector polu, tworząc indeks na bill_summaries podstawie odległości cosinusu i hierarchicznego nawigowalnego małego świata (HNSW). 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 cosinusowego względem bazy danych.
W poniższym zapytaniu osadzenia są generowane dla pytania wejściowego, a następnie są rzutowane na tablicę wektorową (::vector). Tablica wektorów umożliwia porównywanie pytania 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 <=>. Ten operator reprezentuje operator odległości 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, do których można uzyskać dostęp 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 możliwościami sztucznej inteligencji platformy Azure, do których można uzyskać dostęp za pośrednictwem rozszerzenia, zobacz Integrowanie usługi Azure Database for PostgreSQL z usługami Azure Cognitive Services.
Ustawianie punktu końcowego i klucza usługi językowej azure AI
Podobnie jak w przypadku funkcji azure_openai, aby pomyślnie wykonywać wywołania w stosunku do usług Azure AI przy użyciu rozszerzenia azure_ai, należy podać adres URL punktu końcowego i klucz zasobu usługi językowej Azure AI.
W witrynie Azure Portal przejdź do zasobu usługi językowej.
W 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
KEY1lubKEY2.psqlW wierszu polecenia uruchom następujące polecenia, aby dodać wartości do tabeli konfiguracji. Zastąp tokeny{endpoint}i{api-key}wartościami pobranymi z portalu Azure.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, możesz wygenerować podsumowanie każdego rachunku. Schemat azure_cognitive zawiera dwie funkcje podsumowania tekstu:
-
summarize_abstractive: Podsumowanie abstrakcyjne tworzy podsumowanie, które przechwytuje główne pojęcia z tekstu wejściowego, ale może nie używać identycznych słów. -
summarize_extractive: Podsumowanie wyodrębniające tworzy skrót, wyodrębniając kluczowe zdania 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. Użyj ponownie meta-polecenia \df z psql, tym razem, aby przyjrzeć się funkcji azure_cognitive.summarize_abstractive konkretnej:
\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:
| Argumentacja | Typ | Domyślny | opis |
|---|---|---|---|
text |
text |
Tekst wejściowy do podsumowania. | |
language |
text |
Dwuliterowa reprezentacja języka ISO 639-1, w którym jest zapisywany tekst wejściowy. Aby uzyskać dozwolone wartości, zobacz Obsługa funkcji językowych. | |
timeout_ms |
integer |
3600000 |
Limit czasu w milisekundach, po którym operacja jest zatrzymana. |
throw_on_error |
boolean |
true |
Flaga wskazująca, czy funkcja, w przypadku błędu, powinna zgłaszać wyjątek, który powoduje wycofanie transakcji opakowujących. |
sentence_count |
integer |
3 |
Maksymalna liczba zdań do uwzględnienia w wygenerowanych podsumowaniach. |
disable_service_logs |
boolean |
false |
Ustawienie wyłączające dzienniki usługi językowej. 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 Informacje o zgodności i ochronie prywatności usług Cognitive Services oraz zasady odpowiedzialnej sztucznej inteligencji firmy Microsoft. |
Funkcja summarize_abstractive wymaga następujących argumentów: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).
Poniższe zapytanie względem tabeli bill_summaries używa funkcji summarize_abstractive do wygenerowania nowego, jednozdaniowego podsumowania tekstu ustawy. Umożliwia ona 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';
Możesz również użyć funkcji 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 zapytaniu argument throw_on_error jest 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 poprzednim zapytaniu. Jeśli ta flaga zostałaby ustawiona na wartość domyślną true, zapytanie zakończy się niepowodzeniem, a żadne podsumowania nie zostaną zapisane w bazie danych. Aby wyświetlić rekord, który rzucił ostrzeżenie, uruchom następujące polecenie:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Następnie możesz wysyłać zapytania do tabeli bill_summaries, aby wyświetlić nowe, jednostrzałowe podsumowania generowane przez rozszerzenie azure_ai 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 możliwości generowania sztucznej inteligencji w bazie danych.
Powiązana zawartość
- Zezwalaj na rozszerzenia w usłudze Azure Database for PostgreSQL
- Dowiedz się, jak wygenerować osadzanie za pomocą usługi Azure OpenAI
- Azure OpenAI w modelach rozwiązania Azure AI Foundry
- Omówienie osadzania w usłudze Azure OpenAI w modelach usługi Azure AI Foundry
- Co to jest język sztucznej inteligencji platformy Azure?
- Co to jest usługa Azure OpenAI w modelach rozwiązania Azure AI Foundry?