適用於: SQL Server 2025 (17.x)
Azure SQL Database Azure
SQL Managed Instance
SQL database in Microsoft Fabric
本文提供使用人工智慧 (AI) 選項 (例如 OpenAI 和向量) 的概觀,在 SQL Server 和 Azure SQL 受控執行個體中使用 SQL 資料庫引擎建置智慧型應用程式。
關於 Azure SQL 資料庫,請複習 智慧應用與人工智慧。
如需範例和範例,請流覽 SQL AI 範例存放庫。
概觀
大型語言模型 (LLM) 使開發人員能夠創建具有熟悉用戶體驗的 AI 驅動的應用程序。
在應用程式中使用 LLM 可帶來更大的價值,並改善使用者體驗,因為模型可以在正確的時間從應用程式的資料庫存取正確的資料。 此程式稱為擷取增強產生 (RAG),而 SQL 資料庫引擎有許多功能支援此新模式,使其成為建置智慧型應用程式的絕佳資料庫。
下列連結提供各種選項的範例程式碼,以建置智慧型應用程式:
| 人工智慧選項 | Description |
|---|---|
| Azure OpenAI | 產生 RAG 的內嵌,並與 Azure OpenAI 支援的任何模型整合。 |
| 向量 | 瞭解如何在資料庫中儲存向量和使用向量函數。 |
| Azure AI 搜尋服務 | 將資料庫與 Azure AI 搜尋服務搭配使用,以針對您的資料定型 LLM。 |
| 智慧應用 | 瞭解如何使用可在任何案例中複寫的通用模式來建立端對端解決方案。 |
使用 Azure OpenAI 實作 RAG 的重要概念
本節包含在 SQL 資料庫引擎中使用 Azure OpenAI 實作 RAG 的重要重要概念。
擷取擴增生成 (RAG)
RAG 是一種技術,透過從外部來源檢索其他資料來增強 LLM 產生相關且資訊豐富的回應的能力。 例如,RAG 可以查詢包含與使用者問題或提示相關的領域特定知識的文章或文件。 然後,LLM 可以在產生回應時使用此檢索到的資料作為參考。 例如,使用 SQL 資料庫引擎的簡單 RAG 模式可以是:
- 將資料插入表格。
- 將您的執行個體連結至 Azure AI 搜尋服務。
- 建立 Azure OpenAI GPT4 模型,並將它連線到 Azure AI 搜尋服務。
- 使用來自應用程式和執行個體中資料的定型 Azure OpenAI 模型,聊天並詢問有關資料的問題。
RAG 模式具有提示工程功能,可藉由向模型提供更多內容資訊來提升回應品質。 RAG 使模型能夠透過將相關的外部來源納入生成過程來應用更廣泛的知識庫,從而產生更全面和明智的回應。 如需 接地 LLM 的詳細資訊,請參閱 接地 LLM - Microsoft 社群中樞。
提示和提示工程
提示是指作為 LLM 指令的特定文字或資訊,或作為 LLM 可以建立的內容資料。 提示可以採取多種形式,例如問題、陳述,甚至程式碼片段。
可用來從 LLM 產生回應的範例提示:
- 說明:向 LLM 提供指令
- 主要內容:將資訊提供給 LLM 進行處理
- 範例:協助將模型調整為特定任務或流程
- 提示:將 LLM 的輸出引導到正確的方向
- 支援內容:代表 LLM 可用來產生輸出的補充資訊
為案例建立良好提示的程式稱為 提示工程。 欲了解更多關於提示詞及提示工程最佳實務的資訊,請參閱 提示工程技術。
Tokens
權杖是透過將輸入文字分割成更小的片段而產生的小塊文字。 這些片段可以是單字或字元組,長度從單一字元到整個單字不等。 例如,該單詞 hamburger 將被分成標記, ham例如 , bur而 ger 一個簡短而常見的單詞 like pear 將被視為單個標記。
在 Azure OpenAI 中,提供給 API 的輸入文字會轉換為權杖 (權杖化)。 每個 API 請求中處理的權杖數量取決於輸入、輸出和請求參數的長度等因素。 正在處理的權杖數量也會影響模型的回應時間和輸送量。 每個模型可以在來自 Azure OpenAI 的單一要求/回應中採用的權杖數目有限制。 欲了解更多,請參閱 Azure OpenAI中的Azure AI Foundry模型配額與限制。
Vectors
向量是數字的排序陣列 (通常是浮點數),可以代表某些資料的相關資訊。 例如,影像可以表示為像素值的向量,或文字字串可以表示為 ASCII 值的向量。 將資料轉換為向量的過程稱為 向量化。 如需詳細資訊,請參閱 向量範例。
透過引入 向量資料類型 和 向量函數,處理向量資料變得更加容易。
嵌入技術
內嵌是代表資料重要特徵的向量。 嵌入通常是透過使用深度學習模型來學習的,機器學習和 AI 模型將它們用作特徵。 內嵌也可以擷取相似概念之間的語意相似性。 例如,在產生單字 person 和 human 的內嵌時,我們預期它們的內嵌 (向量表示) 在值中類似,因為這些單字在語意上也類似。
Azure OpenAI 具有從文字資料建立內嵌的模型。 服務會將文字分成詞元,並使用 OpenAI 預先訓練的模型生成嵌入向量。 欲了解更多,請參閱 「了解 Azure OpenAI 在 Azure AI Foundry 模型中的嵌入」。
向量搜尋
向量搜尋是指在資料集中尋找所有語義上與特定查詢向量相似的向量的過程。 因此,單字 human 的查詢向量會在整個字典中搜尋語意相似的單字,而且應該會找到接近相符的單字 person 。 這種接近度或距離是使用相似度指標(例如餘弦相似度)來測量的。 向量的相似度越近,它們之間的距離就越小。
請考慮您對數百萬個文件執行查詢,以尋找資料中最相似的文件的案例。 您可以使用 Azure OpenAI 建立資料和查詢檔的內嵌。 然後,您可以執行向量搜尋,從資料集中尋找最相似的文件。 然而,對幾個範例執行向量搜尋是微不足道的。 在數千或數百萬個資料點上執行相同的搜尋變得具有挑戰性。 詳盡搜尋和近似最近鄰 (ANN) 搜尋方法之間也存在權衡,包括延遲、輸送量、準確性和成本,所有這些都取決於應用程式的需求。
SQL 資料庫引擎中的向量可以有效率地儲存和查詢,如下一節所述,允許以出色的效能進行精確的最近鄰搜尋。 您不必在準確性和速度之間做出選擇:您可以兩者兼而有之。 將向量嵌入與資料一起儲存在整合式解決方案中,可將管理資料同步的需求降到最低,並加快 AI 應用程式開發的上市時間。
Azure OpenAI
嵌入是將現實世界表示為資料的過程。 文字、圖像或聲音可以轉換為嵌入。 Azure OpenAI 模型能夠將現實世界的資訊轉換為內嵌。 這些模型可用作 REST 端點,因此可以透過 SQL 資料庫引擎使用系統預存程序 sp_invoke_external_rest_endpoint 來輕鬆運用。此程序從 SQL Server 2025 (17.x) 開始及配置了 經常更新政策的 Azure SQL 設定實例皆提供支援。
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');
使用呼叫 REST 服務來取得內嵌,只是您在使用 SQL 受控執行個體和 OpenAI 時所擁有的其中一個整合選項。 您可以讓任何 可用的模型 存取儲存在 SQL 資料庫引擎中的資料,以建立使用者可以與資料互動的解決方案,例如下列範例:
如需使用 Azure SQL 和 OpenAI 的其他範例,請參閱下列文章,這些文章也適用於 SQL Server 和 Azure SQL 受控執行個體:
向量範例
專用 向量 資料類型允許高效和最佳化地儲存向量資料,並附帶一組功能來幫助開發人員簡化向量和相似性搜尋實作。 使用新 VECTOR_DISTANCE 函數可以在一行代碼中計算兩個向量之間的距離。 如需詳細資訊和範例,請檢閱 SQL 資料庫引擎中的向量搜尋和向量索引。
例如:
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 AI 搜尋服務
使用 SQL 資料庫引擎和 Azure AI 搜尋服務實作 RAG 模式。 由於 Azure AI 搜尋服務與 Azure OpenAI 和 SQL 資料庫引擎的整合,您可以在儲存在 SQL 資料庫引擎中的資料上執行支援的聊天模型,而不需要定型或微調模型。 在資料上執行模型可讓您以更高的準確度和速度進行資料聊天和分析。
若要深入瞭解 Azure AI 搜尋服務與 Azure OpenAI 和 SQL 資料庫引擎的整合,請參閱下列文章,這些文章也適用於 SQL Server 和 Azure SQL 受控執行個體:
智慧應用
SQL 資料庫引擎可用來建置包含 AI 功能的智慧型應用程式,例如建議器和擷取增強產生 (RAG),如下圖所示:
如需使用工作階段抽象作為範例資料集來建置啟用 AI 的應用程式的端對端範例,請參閱:
備註
LangChain 整合與語意核心整合依賴 向量資料型別,該向量資料型態自 SQL Server 2025(17.x)起可用,並可在 Azure SQL 管理實例中以 Always-up-to-date 更新政策配置。
LangChain 整合
LangChain 是一個著名的框架,用於開發由語言模型提供支援的應用程式。 如需示範如何使用 LangChain 在您自己的資料上建立聊天機器人的範例,請參閱:
- langchain-sqlserver PyPI 套件
搭配 LangChain 使用 Azure SQL 的一些範例:
端對端範例:
- 使用 Azure SQL、Langchain 和 Chainlit 在 1 小時內在您自己的資料上建置聊天機器人:使用 Langchain 來協調 LLM 呼叫,並使用 Chainlit 來協調 UI ,在您自己的資料上使用 RAG 模式建置聊天機器人。
語義核心整合
語意核心是一個開放原始碼 SDK ,可讓您輕鬆建置可呼叫現有程式碼的代理程式。 作為高度可擴充的 SDK,您可以將語意核心與來自 OpenAI、Azure OpenAI、Hugging Face 等的模型搭配使用。 透過將現有的 C#、Python 和 Java 程式碼與這些模型結合,您可以建立回答問題和自動化流程的代理程式。
語義核心如何輕鬆地幫助構建支持 AI 的解決方案的示例如下:
- 終極聊天機器人?: 使用 NL2SQL 和 RAG 模式在您自己的數據上構建聊天機器人,以獲得終極用戶體驗。