前言
在 AI 驅動的時代,資料庫不僅僅是儲存與查詢的工具,還是智能運算的核心。過去想要在資料庫實作語義搜尋(Semantic Search)或 RAG(Retrieval-Augmented Generation)時,往往必須額外串接多個外部服務與資料庫:
- 需額外部署如 Pinecone、Qdrant 這類向量資料庫,儲存語意向量(embedding)。
- 還要串接 OpenAI、Azure OpenAI 等等 Embedding API,產生向量。
- 為了資料同步,要設計 ETL 串接資料庫與向量資料庫,開發與維護門檻極高。
現在,SQL Server 2025 直接把這些現代 AI 能力內建進來!
你可以用 SQL 原生支援外部 AI 模型呼叫、向量資料型別、語義相似度查詢與嵌入生成,所有流程都在資料庫內部安全完成,無須維護多套系統。
接下來先分別介紹這些功能,最後再整個整合起來。
用 sp_invoke_external_rest_endpoint 呼叫 OpenAI Chat
SQL Server 2025 新增的 sp_invoke_external_rest_endpoint
,可在 T-SQL 直接呼叫外部 REST API,像打 OpenAI API 這樣:
使用之前,請先確定有啟用external rest endpoint enabled
設定,如下:
1 | EXECUTE sp_configure 'external rest endpoint enabled', 1; |

然後就可以透過 sp_invoke_external_rest_endpoint
呼叫 OpenAI Chat API 了 :
1 | declare @url nvarchar(4000) = N'https://api.openai.com/v1/chat/completions'; |
結果是一個 JSON 字串,可透過 JSON_VALUE
取得 AI 回覆內容,如下圖:

當然,也可以呼叫地端的 REST API,只要把 URL 改成你自己的 API 即可。 如下,

用 VECTOR_DISTANCE 計算語義相似度
SQL Server 2025 新增的 VECTOR_DISTANCE
函數,可以計算兩個向量間的相似度。用法如下:
1 | DECLARE |

- 備註: cosine 值愈小愈相似。
從結果可以發現,car 與 bus 語義是相近的,car 與 queen 語義是相對遠的。
所以當資料中有 Car ,而使用 bus 去搜尋時,如果信心度設為 80%,會找出 Car 而不會找出 Queen。
用 AI_GENERATE_CHUNKS 進行文字分段
進行向量搜尋時,通常會把長篇文章分段,然後對每一段進行向量生成,再進行搜尋。SQL Server 2025 新增的 AI_GENERATE_CHUNKS
函數,可以將一段文字分段,用法如下:
1 | DECLARE @payload NVARCHAR(MAX) = N'叡揚資訊股份有限公司與臺北市立復興高級中學於近日正式簽署產學合作備忘錄 雙方將在資訊安全教育、人才培育及實習計劃等方面展開全面合作。此舉不僅能為學生提供多元化的學習體驗,更能有效提升學生未來升學及就業所需的專業技能。'; |
可以發現,第二段開始,會後前一段的 overlap 部分內容,如下圖:

用 CREATE EXTERNAL MODEL 建立向量嵌入模型
你可以把 OpenAI、Ollama 等 embedding API 註冊成 SQL Server 外部模型,後續直接呼叫。
開始前 Database 需要有 MASTER KEY,如果沒有請先建立一個,如下:
1 | CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrong@Passw0rd'; |
如果 embedding model 需要驗證的話,還需要再建立 DATABASE SCOPED CREDENTIAL,然後指定給 EXTERNAL MODEL,如下:
1 | CREATE DATABASE SCOPED CREDENTIAL [https://api.openai.com] |

- 請注意: CREDENTIAL 的名稱必需跟 Model 中 LOCATION 的 URL ,要相同 Domain,不然會無法正確呼叫,會出現
The database scoped credential 'your credential name' cannot be used to invoke an external rest endpoint.
。
用 AI_GENERATE_EMBEDDINGS 產生向量
有了外部模型,就可以呼叫外部模型,產生向量了,用法如下:
1 | SELECT AI_GENERATE_EMBEDDINGS('hello world' USE MODEL openai) AS [Embedding]; |

AdventureWorks2022:完整語義搜尋實作
最後,我們來實作一個完整的語義搜尋範例,使用 AdventureWorks2022 資料庫,如下:
新增欄位存 embedding
1 | -- 加入要放 Chunk & 向量的欄位 |
- 註: 1536 為 text-embedding-ada-002 模型的向量維度,請依實際模型調整。
產生產品 chunk 及對應 embedding
1 |
|

語義搜尋(自然語言查詢)
完成 embedding 欄位建立與資料更新後,接下來就能直接用自然語言查詢產品資料。例如,查詢「紅色腳踏車」相關產品:
1 | DECLARE @search_text NVARCHAR(MAX) = N'紅色腳踏車'; |

結論
以往要做語義搜尋、RAG,常要額外建向量資料庫、自己串 embedding API 並搞資料同步。
SQL Server 2025 直接將 AI 語義搜尋變成 SQL 查詢本身的能力,不僅開發更快、維運更安全,資料不離開資料庫,現代 AI 搜尋的所有需求都能一站搞定!
參考資源
CREATE EXTERNAL MODEL
sp_invoke_external_rest_endpoint
AI_GENERATE_CHUNKS
AI_GENERATE_EMBEDDINGS
Getting started with AI in SQL Server 2025 on Windows