適用於:✅Microsoft Fabric 中的 SQL 資料庫
本文說明如何在 Fabric 中使用 SQL 資料庫,建立結合交易資料與大型語言模型(LLM)、向量搜尋或檢索增強生成(RAG)模式的 AI 驅動應用程式。
Fabric 的 SQL 資料庫為智慧應用提供關聯基礎:ACID 交易、低延遲查詢、原生 vector 資料型態與函式,並與更廣泛的 Fabric 分析與 AI 平台緊密整合。
為什麼要在 Fabric 裡使用 SQL 資料庫來應用 AI 應用?
建構智慧應用程式需要一個能與向量嵌入同時儲存營運資料、以低延遲處理交易與相似性查詢,並整合 AI 編排框架的資料庫。 Fabric 中的 SQL 資料庫符合以下需求:
- 原生向量支援:SQL 資料庫引擎 原生的 向量資料型別與 向量函式讓你能直接在 T-SQL 中儲存嵌入並執行相似度搜尋,無需獨立向量資料庫。
- RAG 就緒架構:將結構化的商業資料與向量嵌入整合在同一資料庫中,讓檢索查詢能將關聯上下文(顧客紀錄、訂單歷史、產品目錄)與語意搜尋結果合併於單一查詢中。
Framework 整合 :透過現有的 SQL Server 連接器連接LangChain 和語意核心 ,建立協調式 AI 工作流程。 - Fabric平台整合:從Fabric筆記本、資料科學工作負載及Copilot體驗中存取你的 SQL 資料,而不必將資料移出平台。
- 企業治理:Microsoft Entra ID 認證、工作區層級安全及客戶管理的金鑰加密,與其他營運工作負載相同適用於 AI 工作負載。
小提示
想了解使用Fabric SQL 資料庫處理資料並產生向量嵌入的真實客戶範例,請參見 客戶故事:Eastman 統一資料並打造 AI 驅動的未來,Microsoft Fabric。
擷取增強生成(RAG)
RAG 透過在產生答案前,先從資料庫擷取相關資料,強化 LLM 回應。 應用程式不再僅依賴模型的訓練資料,而是查詢你的操作資料,針對當前、領域特定的事實進行基礎回應。 欲了解完整概述,請參見檢索增強生成(Retrieval-augmented generation,RAG)。
Fabric 中 SQL 資料庫的典型 RAG 模式遵循以下步驟:
- Chunk:將大型資料來源(文件、知識庫文章、產品目錄)拆解成易於管理的部分,並轉為純文字。
Embed :透過使用Azure OpenAI 或其他嵌入模型,為每個區塊生成向量嵌入。 - 儲存:將嵌入插入一個表格中,並附有 向量 欄位,旁邊有原始文字及任何關聯元資料。
- 擷取:當使用者提出問題時,將查詢嵌入相同的模型,然後用 VECTOR_DISTANCE 找出最相似的區塊。 結合關聯表以豐富上下文。
- 增強:將擷取的區塊與使用者原始問題合併成一個提示詞,指導 LLM 如何使用上下文。
- 生成:將增強後的提示傳送給大型語言模型(LLM),由其根據擷取到的資料產生回應。
交易式資料庫中的混合向量搜尋
由於嵌入與關聯資料存在於同一資料庫中,你可以在同一查詢中依關聯屬性(日期範圍、分類、存取權限)進行篩選,提升相關性與安全性。 你可以將向量搜尋與傳統 SQL 篩選WHERE器()結合,取得同時針對交易關係和向量函數篩選的結果。 例如:
-- Hybrid search: vector similarity filtered by product category
SELECT TOP (5) p.product_name, p.description
, cosine_distance = VECTOR_DISTANCE('cosine', @query_embedding, p.embedding)
FROM dbo.products AS p
WHERE p.category = 'Electronics'
ORDER BY VECTOR_DISTANCE('cosine', @query_embedding, p.embedding);
此模式適用於產品推薦、知識庫搜尋及客戶支援情境,這些情況需同時具備語意相關性且受商業規則約束。
你也可以用較新的 VECTOR_SEARCH T-SQL 語法查詢,來尋找近似的最近鄰結果。 例如:
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDINGS(N'Pink Floyd music style' USE MODEL Ada2Embeddings);
SELECT TOP (10) WITH APPROXIMATE
t.id,
t.title,
r.distance
FROM VECTOR_SEARCH(
TABLE = dbo.wikipedia_articles_embeddings AS t,
COLUMN = content_vector,
SIMILAR_TO = @qv,
METRIC = 'cosine'
) AS r
ORDER BY r.distance;
搭載 Fabric MCP 伺服器的 AI 代理
Fabric 提供開源的 Fabric 本地 MCP 以及 AI 代理的 Fabric 遠端 MCP 伺服器。 這些伺服器提供直接的認證與指令,以支援已準備好的操作,例如工作區管理、項目 CRUD 與定義,以及權限管理。
這兩種 Fabric MCP 伺服器選項都能與任何相容 MCP 用戶端使用,包括 GitHub Copilot、游標、Claude Desktop 等。 例如,適用於 Visual Studio Code 的 Fabric MCP Server 擴充功能可搭配Microsoft Fabric 擴充功能和 GitHub Copilot Chat 擴充功能使用。 透過這些擴充功能,你可以在 GitHub Copilot 聊天中存取 Fabric MCP 工具,並使用代理程式管理 Fabric 項目,例如建立和管理你的 Fabric SQL 資料庫。
- Fabric Local MCP 伺服器是在你的機器上本地運行,因此 AI 代理能獲得所需的上下文,產生程式碼並撰寫項目,而不必進入你的環境。
- Fabric 遠端 MCP 伺服器是一台雲端託管伺服器,讓 AI 代理能在您的 Fabric 環境中執行預先且經過認證的操作,無需本地設定。
AI 工具使用 Fabric MCP 伺服器,在你已信任的正確 API 和正確的 RBAC 範圍內撰寫程式碼。
例如,在快速設定 Fabric 本地 MCP 伺服器後,你可以在 Visual Studio 程式碼的代理模式下,向 GitHub Copilot 聊天詢問基礎設施問題並指派任務。 例如:
List all SQL databases and mirrored SQL databases in the Fabric workspace "DemoSQLdb".
你的代理程式會使用已知的 Fabric API 指令來回傳所有這些類型的 Fabric 項目。
Create a new SQL database in Fabric named "ContosoTest" in the Fabric workspace "DemoSQLdb".
你的代理程式會使用已知的 Fabric API 指令來建立資料庫項目,並維持預設設定。
具備 SQL MCP 伺服器的 AI 代理
SQL MCP 伺服器提供模型情境協定介面,讓 AI 代理能透過受控且基於工具的 API 與你的資料庫互動,而非產生原始 SQL。 伺服器:
- 它會暴露一組由你的設定支持的明確工具。
- 持續執行權限與限制。
- 讓代理人員在不依賴結構猜測的情況下發現可用能力。
此模式對於建構能查詢並更新操作資料的自主代理非常有用,作為多步驟工作流程的一部分。
SQL MCP 伺服器使用 Data API 建構者的 實體抽象、RBAC、快取與遙測技術,提供一個在 REST、GraphQL 與 MCP 上運作相同的生產環境介面。 你設定一次,引擎會處理剩下的部分。
Visual Studio Code<>的
使用 Azure OpenAI 進行擴充
SQL 資料庫引擎 內建 T-SQL 函式,可直接在資料庫中產生嵌入與分段文字,無需外部程式碼或管線。
註冊一個嵌入模型
使用 CREATE EXTERNAL MODEL 將 Azure OpenAI 嵌入端點註冊為資料庫物件。 此範例使用 text-embedding-ada-002 部署,並搭配 Microsoft Entra 受控識別驗證。 首先,使用管理身份建立 Azure OpenAI 的存取憑證:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'Managed Identity',
SECRET = '{"resourceid":"https://cognitiveservices.azure.com"}';
GO
接著,建立一個外部模型:
CREATE EXTERNAL MODEL MyEmbeddingModel
WITH (
LOCATION = 'https://my-openai.cognitiveservices.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2024-02-01',
API_FORMAT = 'Azure OpenAI',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'text-embedding-ada-002',
CREDENTIAL = [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
);
更多認證選項,包括 API 金鑰,請參見 建立外部模型。
產生內嵌
使用 AI_GENERATE_EMBEDDINGS 直接在 T-SQL 查詢、插入與更新中產生向量嵌入。
-- Generate embeddings for existing rows
UPDATE t
SET t.embedding = AI_GENERATE_EMBEDDINGS(t.description USE MODEL MyEmbeddingModel)
FROM dbo.products AS t;
在單一陳述式中進行分塊與嵌入
結合AI_GENERATE_CHUNKSAI_GENERATE_EMBEDDINGS,將大文字拆成區塊,嵌入單一 T-SQL 語句中。
INSERT INTO dbo.document_embeddings (chunked_text, embedding)
SELECT c.chunk,
AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyEmbeddingModel)
FROM dbo.documents AS d
CROSS APPLY AI_GENERATE_CHUNKS(
SOURCE = d.content,
CHUNK_TYPE = FIXED,
CHUNK_SIZE = 100
) AS c;
使用 sp_invoke_external_rest_endpoint 直接呼叫 REST
對於 AI_GENERATE_EMBEDDINGS 未涵蓋的情境,例如呼叫 completions 或 chat 端點,請使用 sp_invoke_external_rest_endpoint 直接從 T-SQL 呼叫任何 Azure OpenAI REST API。 更多資訊請參見 Azure OpenAI 整合。
與 Fabric AI 工作負載的整合
Fabric 中的 SQL 資料庫連接平台更廣泛的 AI 功能:
| 整合 | 使用 |
|---|---|
| 布製筆記本 | 查詢 PySpark 或 Python 筆記本中的 SQL 資料庫,進行資料準備、模型訓練及批次評分。 |
| 織物資料科學 | 將 SQL 資料作為機器學習實驗的輸入,然後將預測寫回資料庫供操作使用。 |
| SQL 資料庫中的 Copilot | 使用自然語言直接在 Fabric 入口查詢編輯器中生成、解釋並優化 T-SQL 查詢。 |
| API for GraphQL | 透過 GraphQL 端點公開 AI 豐富的資料供應用程式使用。 |
| 資料管線與資料流程第二代 | 在大規模環境下統籌嵌入生成與增強流程。 |
Fabric SQL 資料庫使用案例故事
欲了解更多 Fabric SQL 資料庫的最佳使用案例,請參閱: