Inteligentne aplikacje z usługą Azure SQL Database

Dotyczy:Azure SQL Database

Ten artykuł zawiera omówienie korzystania z opcji sztucznej inteligencji ( AI), takich jak OpenAI i wektory, w celu tworzenia inteligentnych aplikacji za pomocą usługi Azure SQL Database.

Przykłady i przykłady można znaleźć w repozytorium Przykładów sztucznej inteligencji SQL.

Obejrzyj ten film wideo z serii Podstawy usługi Azure SQL Database, aby uzyskać krótkie omówienie tworzenia aplikacji gotowej do użycia sztucznej inteligencji :

Omówienie

Duże modele językowe (LLM) umożliwiają deweloperom tworzenie aplikacji opartych na sztucznej inteligencji ze znanym środowiskiem użytkownika.

Korzystanie z funkcji LLMs w aplikacjach zapewnia większą wartość i ulepszone środowisko użytkownika, gdy modele mogą uzyskiwać dostęp do odpowiednich danych w odpowiednim czasie z bazy danych aplikacji. Ten proces jest znany jako Pobieranie rozszerzonej generacji (RAG), a usługa Azure SQL Database ma wiele funkcji, które obsługują ten nowy wzorzec, dzięki czemu jest to świetna baza danych do tworzenia inteligentnych aplikacji.

Poniższe linki zawierają przykładowy kod różnych opcji usługi Azure SQL Database do tworzenia inteligentnych aplikacji:

Opcja sztucznej inteligencji opis
Azure OpenAI Generuj osadzanie dla rozwiązania RAG i integruj się z dowolnym modelem obsługiwanym przez usługę Azure OpenAI.
Wektory Dowiedz się, jak przechowywać wektory zapytań i wykonywać zapytania w usłudze Azure SQL Database.
Azure AI Search Użyj usługi Azure SQL Database razem z usługą Azure AI Search, aby wytrenować rozwiązanie LLM na danych.
Inteligentne aplikacje Dowiedz się, jak utworzyć kompleksowe rozwiązanie przy użyciu wspólnego wzorca, który można replikować w dowolnym scenariuszu.
Umiejętności copilot w usłudze Azure SQL Database Dowiedz się więcej o zestawie środowisk wspomaganych przez sztuczną inteligencję zaprojektowanych w celu usprawnienia projektowania, działania, optymalizacji i kondycji aplikacji opartych na usłudze Azure SQL Database.

Najważniejsze pojęcia

Ta sekcja zawiera kluczowe pojęcia, które mają kluczowe znaczenie dla implementacji rozwiązania RAG za pomocą usług Azure SQL Database i Azure OpenAI.

Pobieranie rozszerzonej generacji (RAG)

RAG to technika, która zwiększa zdolność LLM do tworzenia odpowiednich i informacyjnych odpowiedzi przez pobieranie dodatkowych danych ze źródeł zewnętrznych. Na przykład usługa RAG może wysyłać zapytania do artykułów lub dokumentów zawierających wiedzę specyficzną dla domeny związane z pytaniem lub monitem użytkownika. Usługa LLM może następnie użyć tych pobranych danych jako odwołania podczas generowania odpowiedzi. Na przykład prosty wzorzec RAG korzystający z usługi Azure SQL Database może być:

  1. Wstawianie danych do tabeli usługi Azure SQL Database.
  2. Łączenie usługi Azure SQL Database z usługą Azure AI Search.
  3. Utwórz model GPT4 usługi Azure OpenAI i połącz go z usługą Azure AI Search.
  4. Porozmawiaj i zadaj pytania dotyczące danych przy użyciu wytrenowanego modelu usługi Azure OpenAI z poziomu aplikacji i z usługi Azure SQL Database.

Wzorzec RAG, z monitem inżynieryjnym, służy do zwiększania jakości odpowiedzi, oferując bardziej kontekstowe informacje do modelu. Program RAG umożliwia modelowi zastosowanie szerszej bazy wiedzy poprzez włączenie odpowiednich źródeł zewnętrznych do procesu generowania, co skutkuje bardziej kompleksowymi i świadomymi odpowiedziami. Aby uzyskać więcej informacji na temat uziemienia LLMs, zobacz Grounding LLMs — Microsoft Community Hub.

Monity i monity inżynieryjne

Monit odnosi się do określonego tekstu lub informacji, które służą jako instrukcje dla usługi LLM lub jako danych kontekstowych, na których może opierać się usługa LLM. Monit może przyjmować różne formy, takie jak pytanie, instrukcja, a nawet fragment kodu.

Przykładowe monity, których można użyć do wygenerowania odpowiedzi z poziomu usługi LLM:

  • Instrukcje: dostarczanie dyrektyw do usługi LLM
  • Zawartość podstawowa: zawiera informacje dotyczące usługi LLM na potrzeby przetwarzania
  • Przykłady: pomoc w warunku modelu dla określonego zadania lub procesu
  • Wskazówki: kierowanie danych wyjściowych llM we właściwym kierunku
  • Zawartość pomocnicza: reprezentuje informacje uzupełniające, których usługa LLM może używać do generowania danych wyjściowych

Proces tworzenia dobrych monitów dotyczących scenariusza jest nazywany inżynierią monitu. Aby uzyskać więcej informacji na temat monitów i najlepszych rozwiązań dotyczących inżynierii monitów, zobacz Azure OpenAI Service.

Tokeny

Tokeny są małymi fragmentami tekstu generowanymi przez podzielenie tekstu wejściowego na mniejsze segmenty. Te segmenty mogą być wyrazami lub grupami znaków, różniąc się długością od pojedynczego znaku do całego wyrazu. Na przykład słowo hamburger zostanie podzielone na tokeny, takie jak ham, bur, i ger choć krótkie i typowe słowo będzie pear traktowane jako pojedynczy token.

W usłudze Azure OpenAI tekst wejściowy udostępniany interfejsowi API jest przekształcany w tokeny (tokenizowane). Liczba tokenów przetwarzanych w każdym żądaniu interfejsu API zależy od czynników, takich jak długość parametrów wejściowych, wyjściowych i żądań. Ilość przetwarzanych tokenów wpływa również na czas odpowiedzi i przepływność modeli. Istnieją limity liczby tokenów, które każdy model może przyjąć w jednym żądaniu/odpowiedzi z usługi Azure OpenAI. Aby dowiedzieć się więcej, zobacz Limity przydziału i limity usługi Azure OpenAI.

Wektory

Wektory są uporządkowanymi tablicami liczb (zazwyczaj zmiennoprzecinkowymi), które mogą reprezentować informacje o niektórych danych. Na przykład obraz może być reprezentowany jako wektor wartości pikseli lub ciąg tekstu może być reprezentowany jako wektor lub wartości ASCII. Proces przekształcania danych w wektor jest nazywany wektoryzacją.

Osadzanie

Osadzanie to wektory reprezentujące ważne funkcje danych. Osadzanie jest często używane przy użyciu modelu uczenia głębokiego, a modele uczenia maszynowego i sztucznej inteligencji wykorzystują je jako funkcje. Osadzanie może również przechwytywać semantyczną podobieństwo między podobnymi pojęciami. Na przykład podczas generowania osadzania dla wyrazów person i human, spodziewalibyśmy się, że ich osadzanie (reprezentacja wektorowa) będzie podobne w wartości, ponieważ wyrazy są również semantycznie podobne.

Modele funkcji usługi Azure OpenAI do tworzenia osadzania na podstawie danych tekstowych. Usługa dzieli tekst na tokeny i generuje osadzanie przy użyciu modeli wstępnie wytrenowanych przez interfejs OpenAI. Aby dowiedzieć się więcej, zobacz Tworzenie osadzania za pomocą usługi Azure OpenAI.

Wyszukiwanie wektorowe odnosi się do procesu znajdowania wszystkich wektorów w zestawie danych, które są semantycznie podobne do określonego wektora zapytania. W związku z tym wektor zapytania dla wyrazu human wyszukuje cały słownik pod kątem semantycznie podobnych słów i powinien znaleźć słowo person jako bliskie dopasowanie. Ta bliskość lub odległość jest mierzona przy użyciu metryki podobieństwa, takiej jak podobieństwo cosinusu. Bliżej wektory znajdują się w podobieństwie, tym mniejsza jest odległość między nimi.

Rozważmy scenariusz, w którym uruchamiasz zapytanie dotyczące milionów dokumentów, aby znaleźć najbardziej podobne dokumenty w danych. Możesz tworzyć osadzanie dla danych i wykonywać zapytania dotyczące dokumentów przy użyciu usługi Azure OpenAI. Następnie możesz wykonać wyszukiwanie wektorów, aby znaleźć najbardziej podobne dokumenty z zestawu danych. Jednak wykonywanie wyszukiwania wektorowego w kilku przykładach jest proste. Wykonanie tego samego wyszukiwania w tysiącach lub milionach punktów danych staje się trudne. Istnieją również kompromisy między wyczerpującym wyszukiwaniem a przybliżonymi metodami wyszukiwania najbliższego sąsiada (ANN), w tym opóźnieniami, przepływnością, dokładnością i kosztami, z których wszystkie zależą od wymagań aplikacji.

Ponieważ osadzanie usługi Azure SQL Database może być efektywnie przechowywane i odpytywane przy użyciu funkcji obsługi indeksów magazynu kolumn, co pozwala na dokładne wyszukiwanie najbliższych sąsiadów o wysokiej wydajności, nie musisz decydować o dokładności i szybkości: możesz mieć obie te funkcje. Przechowywanie osadzania wektorów wraz z danymi w zintegrowanym rozwiązaniu minimalizuje potrzebę zarządzania synchronizacją danych i przyspiesza czas opracowywania aplikacji sztucznej inteligencji.

Azure OpenAI

Osadzanie to proces reprezentowania świata rzeczywistego jako danych. Tekst, obrazy lub dźwięki można konwertować na osadzanie. Modele usługi Azure OpenAI umożliwiają przekształcanie rzeczywistych informacji w osadzanie. Modele są dostępne jako punkty końcowe REST i dlatego można je łatwo używać z usługi Azure SQL Database przy użyciu sp_invoke_external_rest_endpoint procedury składowanej systemu:

DECLARE @retval INT, @response NVARCHAR(MAX);
DECLARE @payload NVARCHAR(MAX);

SET @payload = JSON_OBJECT('input': @text);

EXEC @retval = sp_invoke_external_rest_endpoint @url = 'https://<openai-url>/openai/deployments/<model-name>/embeddings?api-version=2023-03-15-preview',
    @method = 'POST',
    @credential = [https://<openai-url>/openai/deployments/<model-name>],
    @payload = @payload,
    @response = @response OUTPUT;

SELECT CAST([key] AS INT) AS [vector_value_id],
    CAST([value] AS FLOAT) AS [vector_value]
FROM OPENJSON(JSON_QUERY(@response, '$.result.data[0].embedding'));

Użycie wywołania usługi REST w celu pobrania osadzania jest tylko jedną z opcji integracji, które masz podczas pracy z usługami SQL Database i OpenAI. Dowolny z dostępnych modeli może uzyskiwać dostęp do danych przechowywanych w usłudze Azure SQL Database w celu utworzenia rozwiązań, w których użytkownicy mogą wchodzić w interakcje z danymi, na przykład w poniższym przykładzie.

Zrzut ekranu przedstawiający bota sztucznej inteligencji odpowiadającego na pytanie przy użyciu danych przechowywanych w usłudze Azure SQL Database.

Aby uzyskać dodatkowe przykłady dotyczące korzystania z usług SQL Database i OpenAI, zobacz następujące artykuły:

Wektory

Chociaż usługa Azure SQL Database nie ma natywnego typu wektora , wektor nie jest czymś więcej niż uporządkowaną krotką, a relacyjne bazy danych doskonale nadają się do zarządzania krotkami. Krotkę można traktować jako formalny termin dla wiersza w tabeli.

Usługa Azure SQL Database obsługuje również indeksy magazynu kolumn i wykonywanie trybu wsadowego. Podejście oparte na wektorach jest używane do przetwarzania w trybie wsadowym, co oznacza, że każda kolumna w partii ma własną lokalizację pamięci, w której jest przechowywana jako wektor. Dzięki temu można szybciej i wydajniej przetwarzać dane w partiach.

W poniższym przykładzie pokazano, jak można przechowywać wektor w usłudze SQL Database:

CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
    [article_id] [int] NOT NULL,
    [vector_value_id] [int] NOT NULL,
    [vector_value] [float] NOT NULL
)
GO

CREATE CLUSTERED COLUMNSTORE INDEX ixc
    ON dbo.wikipedia_articles_embeddings_titles_vector
    ORDER (article_id);
GO

Aby zapoznać się z przykładem, który używa wspólnego podzbioru artykułów Wikipedii z osadzanymi już wygenerowanymi przy użyciu interfejsu OpenAI, zobacz Wyszukiwanie podobieństwa wektorów w usługach Azure SQL Database i OpenAI.

Inną opcją korzystania z wyszukiwania wektorowego w bazie danych Azure SQL Database jest integracja z usługą Azure AI przy użyciu zintegrowanych możliwości wektoryzacji: wyszukiwanie wektorowe z usługą Azure SQL Database i usługą Azure AI Search

Zaimplementuj wzorce RAG za pomocą usług Azure SQL Database i Azure AI Search. Obsługiwane modele czatów można uruchamiać na danych przechowywanych w usłudze Azure SQL Database bez konieczności trenowania lub dostosowywania modeli dzięki integracji usługi Azure AI Search z usługami Azure OpenAI i Azure SQL Database. Uruchamianie modeli na danych umożliwia czatowanie na bieżąco i analizowanie danych z większą dokładnością i szybkością.

Inteligentne aplikacje

Usługa Azure SQL Database może służyć do tworzenia inteligentnych aplikacji, które obejmują funkcje sztucznej inteligencji, takie jak rekomendacje, i pobieranie rozszerzonej generacji (RAG), jak pokazano na poniższym diagramie:

Diagram przedstawiający różne funkcje sztucznej inteligencji do tworzenia inteligentnych aplikacji za pomocą usługi Azure SQL Database.

Aby uzyskać kompleksowe przykładowe tworzenie aplikacji obsługującej sztuczną inteligencję przy użyciu sesji abstrakcyjnych jako przykładowego zestawu danych, zobacz:

Integracja aplikacji LangChain

LangChain to dobrze znana platforma do tworzenia aplikacji opartych na modelach językowych.

Przykład pokazujący, jak można użyć biblioteki LangChain do utworzenia czatbota na własnych danych, zobacz Tworzenie własnego rozwiązania DB Copilot dla usługi Azure SQL przy użyciu interfejsu GPT-4 usługi Azure OpenAI.

Integracja jądra semantycznego

Semantyczne jądro to zestaw SDK typu open source, który umożliwia łatwe tworzenie agentów, którzy mogą wywoływać istniejący kod. Jako wysoce rozszerzalny zestaw SDK można używać semantycznego jądra z modelami z poziomu usług OpenAI, Azure OpenAI, Hugging Face i nie tylko! Łącząc istniejący kod C#, Python i Java z tymi modelami, możesz tworzyć agentów, którzy odpowiadają na pytania i automatyzują procesy.

Umiejętności platformy Microsoft Copilot w usłudze Azure SQL Database

Umiejętności firmy Microsoft Copilot w usłudze Azure SQL Database (wersja zapoznawcza) to zestaw środowisk wspomaganych przez sztuczną inteligencję zaprojektowanych w celu usprawnienia projektowania, operacji, optymalizacji i kondycji aplikacji opartych na usłudze Azure SQL Database. Copilot może zwiększyć produktywność, oferując język naturalny konwersji SQL i samodzielnej pomocy w zakresie administrowania bazą danych.

Copilot zapewnia odpowiednie odpowiedzi na pytania użytkowników, upraszczając zarządzanie bazami danych, korzystając z kontekstu bazy danych, dokumentacji, dynamicznych widoków zarządzania, magazynu zapytań i innych źródeł wiedzy. Na przykład:

  • Administratorzy baz danych mogą niezależnie zarządzać bazami danych i rozwiązywać problemy lub dowiedzieć się więcej o wydajności i możliwościach bazy danych.
  • Deweloperzy mogą zadawać pytania dotyczące swoich danych tak, jak w tekście lub konwersacji w celu wygenerowania zapytania T-SQL. Deweloperzy mogą również nauczyć się szybciej pisać zapytania dzięki szczegółowym objaśnieniom wygenerowanego zapytania.

Uwaga

Umiejętności firmy Microsoft Copilot w usłudze Azure SQL Database są obecnie dostępne w wersji zapoznawczej dla ograniczonej liczby wczesnych użytkowników. Aby zarejestrować się w tym programie, odwiedź stronę Request Access to Copilot in Azure SQL Database: Preview (Żądanie dostępu do aplikacji Copilot w usłudze Azure SQL Database: wersja zapoznawcza).

Wersja zapoznawcza narzędzia Copilot dla usługi Azure SQL Database obejmuje dwa środowiska witryny Azure Portal:

Lokalizacja portalu Środowiska
Edytor Power Query witryny Azure Portal Język naturalny do języka SQL: to środowisko w edytorze zapytań witryny Azure Portal dla usługi Azure SQL Database tłumaczy zapytania języka naturalnego na język SQL, dzięki czemu interakcje z bazą danych są bardziej intuicyjne. Aby zapoznać się z samouczkiem i przykładami funkcji języka naturalnego do języka SQL, zobacz Język naturalny do języka SQL w edytorze zapytań w witrynie Azure Portal (wersja zapoznawcza).
Microsoft Copilot dla platformy Azure Integracja z rozwiązaniem Azure Copilot: to środowisko dodaje umiejętności usługi Azure SQL do rozwiązania Microsoft Copilot dla platformy Azure, zapewniając klientom samodzielną pomoc, umożliwiając im zarządzanie bazami danych i samodzielne rozwiązywanie problemów.

Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące umiejętności platformy Microsoft Copilot w usłudze Azure SQL Database (wersja zapoznawcza).