Udostępnij przez


Inteligentne aplikacje i sztuczna inteligencja

Dotyczy: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database w usłudze Microsoft Fabric

Ten artykuł zawiera omówienie korzystania z opcji sztucznej inteligencji, takich jak OpenAI i wektory, w celu tworzenia inteligentnych aplikacji za pomocą aparatu bazy danych SQL w programie SQL Server i usłudze Azure SQL Managed Instance.

W przypadku usługi Azure SQL Database zapoznaj się z artykułem Inteligentne aplikacje i sztuczna inteligencja.

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

Przegląd

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 Generowanie rozszerzonej generacji (RAG) i aparat bazy danych SQL 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 tworzenia inteligentnych aplikacji:

Opcja sztucznej inteligencji Description
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 i używać funkcji wektorów w bazie danych.
Azure AI Search Użyj bazy danych 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.

Kluczowe pojęcia dotyczące implementowania rozwiązania RAG za pomocą usługi Azure OpenAI

Ta sekcja zawiera kluczowe pojęcia, które mają kluczowe znaczenie dla zaimplementowania programu RAG z usługą Azure OpenAI w a aparatze bazy danych SQL.

Wspomagane generowanie przy użyciu pobierania danych (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 aparatu bazy danych SQL może być:

  1. Wstaw dane do tabeli.
  2. Połącz wystąpienie 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 zadawaj pytania dotyczące danych przy użyciu wytrenowanego modelu usługi Azure OpenAI z poziomu aplikacji i danych w twoim wystąpieniu.

Wzorzec RAG, z inżynierią poleceń, służy do zwiększania jakości odpowiedzi, oferując bardziej kontekstowe informacje dla 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.

Wskazówki i inżynieria wskazówek

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 promptów i najlepszych praktyk w zakresie inżynierii promptów, zobacz techniki inżynierii promptów.

Tokens

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 i ograniczenia dla Azure OpenAI w Azure AI Foundry Models.

Vectors

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 wartości ASCII. Proces przekształcania danych w wektor jest nazywany wektoryzacją. Aby uzyskać więcej informacji, zobacz Przykłady wektorów.

Praca z danymi wektorowymi jest łatwiejsza dzięki wprowadzeniu typów danych wektorowych i funkcji wektorów.

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. Osadzenia mogą również uchwycić semantyczne 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 oferowane przez usługę Azure OpenAI do tworzenia embeddingów na podstawie danych tekstowych. Usługa dzieli tekst na tokeny i generuje embeddingi przy użyciu modeli przetrenowanych przez OpenAI. Aby dowiedzieć się więcej, zobacz Understand embeddings in Azure OpenAI in Azure AI Foundry Models (Omówienie osadzania w usłudze Azure OpenAI w modelach usługi Azure AI Foundry).

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.

Wektory w a aparatze bazy danych SQL mogą być efektywnie przechowywane i odpytywane, zgodnie z opisem w następnych sekcjach, umożliwiając dokładne wyszukiwanie najbliższych sąsiadów z wielką wydajnością. Nie musisz decydować o dokładności i szybkości: możesz mieć obie te wartości. 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 w związku z tym można je łatwo używać z silnika bazy danych SQL przy użyciu systemowej procedury składowanej sp_invoke_external_rest_endpoint, dostępnej począwszy od SQL Server 2025 (17.x) i instancji zarządzanej Azure SQL Managed Instance skonfigurowanej z wykorzystaniem zasad aktualizacji Always-up-to-date.

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

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

EXECUTE
    @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;

DECLARE @e AS VECTOR(1536) = 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ługą SQL Managed Instance i OpenAI. Dowolny z dostępnych modeli może uzyskiwać dostęp do danych przechowywanych w a aparatze bazy danych SQL, aby tworzyć rozwiązania, 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 programie SQL Server.

Aby uzyskać dodatkowe przykłady dotyczące korzystania z usług Azure SQL i OpenAI, zobacz następujące artykuły, które dotyczą również programu SQL Server i usługi Azure SQL Managed Instance:

Przykłady wektorów

Dedykowany typ danych wektorów umożliwia wydajne i zoptymalizowane przechowywanie danych wektorowych oraz zestaw funkcji ułatwia deweloperom usprawnianie implementacji wyszukiwania wektorów i podobieństw. Obliczanie odległości między dwoma wektorami można wykonać w jednym wierszu kodu przy użyciu nowej VECTOR_DISTANCE funkcji. Aby uzyskać więcej informacji i przykładów, zapoznaj się z tematem Wyszukiwanie wektorowe i indeksy wektorowe w silniku bazy danych SQL.

Przykład:

CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
    [article_id] [int] NOT NULL,
    [embedding] [vector](1536) NOT NULL,
)
GO

SELECT TOP(10)
    *
FROM
    [dbo].[wikipedia_articles_embeddings_titles_vector]
ORDER BY
    VECTOR_DISTANCE('cosine', @my_reference_vector, embedding)

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

Aby dowiedzieć się więcej na temat integracji usługi Azure AI Search z usługą Azure OpenAI i aparatem bazy danych SQL, zobacz następujące artykuły, które dotyczą również programu SQL Server i usługi Azure SQL Managed Instance:

Inteligentne aplikacje

Aparat bazy danych SQL 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:

Uwaga / Notatka

Integracja LangChain i integracja Jądra Semantycznego polegają na typie danych wektora, który jest dostępny od wersji SQL Server 2025 (17.x) i w usłudze Azure SQL Managed Instance skonfigurowanej przy użyciu zasady Zawsze aktualne.

Integracja aplikacji LangChain

LangChain to dobrze znana platforma do tworzenia aplikacji opartych na modelach językowych. Przykłady pokazujące, jak można użyć biblioteki LangChain do utworzenia czatbota na własnych danych, zobacz:

Kilka przykładów dotyczących korzystania z usługi Azure SQL w języku LangChain:

Kompleksowe przykłady:

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 platformy 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.

Przykład łatwego działania jądra semantycznego ułatwia tworzenie rozwiązań z obsługą sztucznej inteligencji: