Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
AzureSQL Managed Instance
SQL SQL-Datenbank in Microsoft Fabric
Dieser Artikel enthält eine Übersicht über die Verwendung von KI-Optionen (Künstliche Intelligenz), z. B. OpenAI und Vektoren, um intelligente Anwendungen mit dem SQL-Datenbankmodul in SQL Server und azure SQL Managed Instance zu erstellen.
Überprüfen Sie für die Azure SQL-Datenbank intelligente Anwendungen und KI.
Beispiele und Beispiele finden Sie im SQL AI Samples-Repository.
Überblick
Mit großen Sprachmodellen (LLMs) können Entwickler KI-basierte Anwendungen mit einer vertrauten Benutzeroberfläche erstellen.
Die Verwendung von LLMs in Anwendungen bringt mehr Wert und eine verbesserte Benutzererfahrung, wenn die Modelle auf die richtigen Daten zugreifen können, zur richtigen Zeit aus der Datenbank Ihrer Anwendung. Dieser Prozess wird als "Retrieval Augmented Generation" (RAG) bezeichnet, und das SQL-Datenbankmodul verfügt über viele Features, die dieses neue Muster unterstützen, was es zu einer großartigen Datenbank macht, um intelligente Anwendungen zu erstellen.
Die folgenden Links enthalten Beispielcode verschiedener Optionen zum Erstellen intelligenter Anwendungen:
| KI-Option | Description |
|---|---|
| Azure OpenAI | Generieren Sie Einbettungen für RAG und integrieren Sie sie in jedes von Azure OpenAI unterstützte Modell. |
| Vektoren | Erfahren Sie, wie Sie Vektoren speichern und Vektorfunktionen in der Datenbank verwenden. |
| Azure AI Search | Verwenden Sie Ihre Datenbank zusammen mit Azure AI Search, um LLM für Ihre Daten zu trainieren. |
| Intelligente Anwendungen | Erfahren Sie, wie Sie eine End-to-End-Lösung mit einem gängigen Muster erstellen, das in jedem Szenario repliziert werden kann. |
Kernkonzepte für die Implementierung von RAG mit Azure OpenAI
Dieser Abschnitt enthält wichtige Konzepte, die für die Implementierung von RAG mit Azure OpenAI im SQL-Datenbankmodul wichtig sind.
Abrufen der erweiterten Generation (RAG)
RAG ist eine Technik, die die Fähigkeit des LLM verbessert, relevante und informative Antworten zu erzeugen, indem zusätzliche Daten aus externen Quellen abgerufen werden. Beispielsweise kann RAG Artikel oder Dokumente abfragen, die domänenspezifische Kenntnisse im Zusammenhang mit der Frage oder Aufforderung des Benutzers enthalten. Das LLM kann diese abgerufenen Daten dann als Verweis verwenden, wenn die Antwort generiert wird. Ein einfaches RAG-Muster mit dem SQL-Datenbankmodul kann z. B.:
- Fügen Sie Daten in eine Tabelle ein.
- Verknüpfen Sie Ihre Instanz mit Azure AI Search.
- Erstellen Sie ein Azure OpenAI GPT4-Modell, und verbinden Sie es mit Azure AI Search.
- Chatten Sie, und stellen Sie Fragen zu Ihren Daten mithilfe des trainierten Azure OpenAI-Modells aus Ihrer Anwendung und aus Daten in Ihrer Instanz.
Das RAG-Muster mit prompt engineering dient dazu, die Antwortqualität zu verbessern, indem dem Modell mehr kontextbezogene Informationen angeboten werden. RAG ermöglicht es dem Modell, eine breitere Wissensbasis anzuwenden, indem relevante externe Quellen in den Erzeugungsprozess einbezogen werden, was zu umfassenderen und fundierteren Antworten führt. Weitere Informationen zum Erding von LLMs finden Sie unter Grounding LLMs – Microsoft Community Hub.
Aufforderungen und Aufforderungs engineering
Eine Eingabeaufforderung bezieht sich auf bestimmten Text oder Informationen, die als Anweisung für ein LLM oder als Kontextdaten dienen, auf denen die LLM aufbauen kann. Eine Eingabeaufforderung kann verschiedene Formen annehmen, z. B. eine Frage, eine Anweisung oder sogar einen Codeausschnitt.
Beispielaufforderungen, die verwendet werden können, um eine Antwort von einer LLM zu generieren:
- Anweisungen: Bereitstellen von Direktiven an die LLM
- Primärer Inhalt: Gibt informationen an die LLM zur Verarbeitung
- Beispiele: Hilfe beim Festlegen des Modells auf eine bestimmte Aufgabe oder einen bestimmten Prozess
- Hinweise: Leiten Sie die AUSGABE des LLM in die richtige Richtung.
- Unterstützende Inhalte: stellt zusätzliche Informationen dar, die die LLM zum Generieren der Ausgabe verwenden kann.
Der Prozess zum Erstellen guter Aufforderungen für ein Szenario wird als Prompt Engineering bezeichnet. Weitere Informationen zu Eingabeaufforderungen und bewährten Methoden für das Prompt Engineering finden Sie unter Prompt Engineering-Techniken.
Tokenen
Token sind kleine Textabschnitte, die durch Aufteilen des Eingabetexts in kleinere Segmente generiert werden. Bei diesen Segmenten kann es sich entweder um Wörter oder Zeichengruppen handeln, die von einem einzelnen Zeichen bis zu einem ganzen Wort variieren. Beispielsweise würde das Wort hamburger in Token wie ham, bur, und ger während ein kurzes und gemeinsames Wort pear als ein einzelnes Token betrachtet werden würde.
In Azure OpenAI wird der in der API bereitgestellte Eingabetext in Token (tokenisiert) umgewandelt. Die Anzahl der token, die in jeder API-Anforderung verarbeitet werden, hängt von Faktoren wie der Länge der Eingabe, der Ausgabe und der Anforderungsparameter ab. Die Anzahl der verarbeiteten Token wirkt sich auch auf die Reaktionszeit und den Durchsatz der Modelle aus. Es gibt Grenzwerte für die Anzahl der Token, die jedes Modell in einer einzigen Anforderung/Antwort von Azure OpenAI annehmen kann. Weitere Informationen finden Sie unter Azure OpenAI in Azure AI Foundry Models-Kontingenten und Grenzwerten.
Vektoren
Vektoren sind geordnete Arrays von Zahlen (in der Regel Gleitkommazahlen), die Informationen zu einigen Daten darstellen können. Beispielsweise kann ein Bild als Vektor von Pixelwerten dargestellt werden, oder eine Textzeichenfolge kann als Vektor von ASCII-Werten dargestellt werden. Der Prozess zum Umwandeln von Daten in einen Vektor wird als Vektorisierung bezeichnet. Weitere Informationen finden Sie unter Vector-Beispiele.
Das Arbeiten mit Vektordaten ist mit der Einführung des Vektordatentyps und der Vektorfunktionen einfacher.
Einbettungen
Einbettungen sind Vektoren, die wichtige Merkmale von Daten darstellen. Einbettungen werden häufig mithilfe eines Deep Learning-Modells gelernt, und Machine Learning- und KI-Modelle nutzen sie als Features. Einbettungen können auch semantische Ähnlichkeiten zwischen ähnlichen Konzepten erfassen. Beispielsweise lässt sich beim Generieren von Einbettungen für die Wörter person und human erwarten, dass die Einbettungen (also die Vektordarstellungen) ähnliche Werte aufweisen, da die Wörter semantisch ähnlich sind.
Azure OpenAI bietet Modelle zum Erstellen von Einbettungen aus Textdaten. Der Dienst bricht Text in Token auf und generiert Einbettungen mithilfe von Modellen, die von OpenAI vorab trainiert wurden. Weitere Informationen finden Sie unter "Grundlegendes zu Einbettungen in Azure OpenAI in Azure AI Foundry Models".
Vektorsuche
Die Vektorsuche bezieht sich auf den Prozess der Suche nach allen Vektoren in einem Dataset, die semantisch einem bestimmten Abfragevektor ähneln. Daher durchsucht ein Abfragevektor für das Wort human das gesamte Wörterbuch nach semantisch ähnlichen Wörtern und sollte das Wort person als enge Übereinstimmung finden. Diese Nähe oder Der Abstand wird mit einer Ähnlichkeitsmetrik wie Kosinusähnlichkeit gemessen. Die näheren Vektoren sind in Ähnlichkeit, desto kleiner ist der Abstand zwischen ihnen.
Betrachten Sie ein Szenario, in dem Sie eine Abfrage über Millionen von Dokumenten ausführen, um die ähnlichsten Dokumente in Ihren Daten zu finden. Sie können Einbettungen für Ihre Daten und Abfragedokumente mithilfe von Azure OpenAI erstellen. Anschließend können Sie eine Vektorsuche durchführen, um die ähnlichsten Dokumente aus Ihrem Dataset zu finden. Das Ausführen einer Vektorsuche in einigen Beispielen ist jedoch trivial. Das Ausführen derselben Suche über Tausende oder Millionen von Datenpunkten wird zu einer Herausforderung. Es gibt auch Kompromisse zwischen erschöpfenden Suchmethoden und ungefähren benachbarten Suchmethoden (ANN), einschließlich Latenz, Durchsatz, Genauigkeit und Kosten, die alle von den Anforderungen Ihrer Anwendung abhängen.
Vektoren im SQL-Datenbankmodul können effizient gespeichert und abgefragt werden, wie in den nächsten Abschnitten beschrieben, sodass die genaue nächste Nachbarsuche mit hoher Leistung möglich ist. Sie müssen nicht zwischen Genauigkeit und Geschwindigkeit entscheiden: Sie können beides haben. Das Speichern von Vektoreinbettungen neben den Daten in einer integrierten Lösung minimiert die Notwendigkeit, die Datensynchronisierung zu verwalten und ihre Zeit für die KI-Anwendungsentwicklung zu beschleunigen.
Azure OpenAI
Das Einbetten ist der Prozess der Darstellung der realen Welt als Daten. Text, Bilder oder Sounds können in Einbettungen konvertiert werden. Azure OpenAI-Modelle können reale Informationen in Einbettungen transformieren. Die Modelle sind als REST-Endpunkte verfügbar und können daher problemlos über die systemgespeicherte Prozedur sp_invoke_external_rest_endpoint genutzt werden. Diese Prozedur steht ab SQL Server 2025 (17.x) sowie bei der mit der Always-up-to-date-Aktualisierungsrichtlinie konfigurierten Azure SQL Managed Instance zur Verfügung.
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');
Die Verwendung eines Aufrufs eines REST-Diensts zum Abrufen von Einbettungen ist nur eine der Integrationsoptionen, die Sie beim Arbeiten mit sql Managed Instance und OpenAI haben. Mit jedem der verfügbaren Modelle können Sie auf Daten zugreifen, die im SQL-Datenbankmodul gespeichert sind, um Lösungen zu erstellen, in denen Ihre Benutzer mit den Daten interagieren können, z. B. das folgende Beispiel:
Weitere Beispiele zur Verwendung von Azure SQL und OpenAI finden Sie in den folgenden Artikeln, die auch für SQL Server und azure SQL Managed Instance gelten:
- Generieren von Bildern mit Azure OpenAI Service (DALL-E) und Azure SQL
- Verwenden von OpenAI REST-Endpunkten mit Azure SQL
Vektorbeispiele
Der dedizierte Vektordatentyp ermöglicht eine effiziente und optimierte Speicherung von Vektordaten und bietet eine Reihe von Funktionen, mit denen Entwickler die Implementierung der Vektor- und Ähnlichkeitssuche optimieren können. Die Berechnung des Abstands zwischen zwei Vektoren kann in einer Codezeile mithilfe der neuen VECTOR_DISTANCE Funktion erfolgen. Weitere Informationen und Beispiele finden Sie in der Vektorsuche und Vektorindizes im SQL-Datenbankmodul.
Beispiel:
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)
Azure KI-Suche
Implementieren Sie RAG-Muster mit dem SQL-Datenbankmodul und azure AI Search. Sie können unterstützte Chatmodelle auf Daten ausführen, die im SQL-Datenbankmodul gespeichert sind, ohne Modelle trainieren oder optimieren zu müssen, dank der Integration von Azure AI Search mit Azure OpenAI und dem SQL-Datenbankmodul. Wenn Sie Modelle auf Ihren Daten ausführen, können Sie über Ihre Daten mit höherer Genauigkeit und Geschwindigkeit chatten und diese analysieren.
Weitere Informationen zur Integration von Azure AI Search mit Azure OpenAI und dem SQL-Datenbankmodul finden Sie in den folgenden Artikeln, die auch für SQL Server und azure SQL Managed Instance gelten:
- Azure OpenAI auf Ihren Daten
- Retrieval Augmented Generation (RAG) in Azure KI Search
- Vektorsuche mit Azure SQL und Azure AI Search
Intelligente Anwendungen
Das SQL-Datenbankmodul kann verwendet werden, um intelligente Anwendungen zu erstellen, die KI-Features wie Empfehlungen und RAG (Retrieval Augmented Generation) enthalten, wie das folgende Diagramm veranschaulicht:
Ein End-to-End-Beispiel zum Erstellen einer KI-fähigen Anwendung mithilfe von Sitzungen als Beispieldatensatz finden Sie unter:
- Wie ich eine Sitzungs-Empfehlung in 1 Stunde mit OpenAI erstellt habe.
- Verwenden der erweiterten Abrufgenerierung zum Erstellen eines Konferenzsitzungs-Assistenten
Hinweis
Die LangChain-Integration und die Semantikkernintegration basieren auf dem Vektordatentyp, der ab SQL Server 2025 (17.x) und in Azure SQL Managed Instance mit der Always-up-to-date-Aktualisierungsrichtlinie konfiguriert ist.
LangChain-Integration
LangChain ist ein bekanntes Framework für die Entwicklung von Anwendungen, die von Sprachmodellen unterstützt werden. Beispiele, die zeigen, wie LangChain zum Erstellen eines Chatbots auf Ihren eigenen Daten verwendet werden kann, finden Sie unter:
- langchain-sqlserver PyPI-Paket
Einige Beispiele für die Verwendung von Azure SQL mit LangChain:
End-to-End-Beispiele:
- Erstellen Sie einen Chatbot für Ihre eigenen Daten in einer Stunde mit Azure SQL, Langchain und Chainlit: Erstellen Sie einen Chatbot mithilfe des RAG-Musters auf Ihren eigenen Daten mithilfe der Langchain für die Orchestrierung von LLM-Aufrufen und Chainlit für die Benutzeroberfläche.
Integration des semantischen Kernels
Der semantische Kernel ist ein Open-Source-SDK , mit dem Sie auf einfache Weise Agents erstellen können, die Ihren vorhandenen Code aufrufen können. Als hoch erweiterbares SDK können Sie den semantischen Kernel mit Modellen aus OpenAI, Azure OpenAI, Hugging Face und mehr verwenden. Indem Sie Ihren vorhandenen C#-, Python- und Java-Code mit diesen Modellen kombinieren, können Sie Agents erstellen, die Fragen beantworten und Prozesse automatisieren.
Ein Beispiel dafür, wie einfach der semantische Kernel beim Erstellen von KI-fähigen Lösungen hilft, finden Sie hier:
- Der ultimative Chatbot?: Erstellen Sie einen Chatbot auf Ihren eigenen Daten mithilfe von NL2SQL- und RAG-Mustern für die ultimative Benutzererfahrung.