SQLServer RAG笔记5:为SQLServer 2025配置Ollama
SQLServer RAG笔记5:为SQLServer 2025配置Ollama
摘要
在第三篇笔记中,我们结合Python代码,通过Ollama的嵌入模型,实现了为SQLServer 2025向量数据库生成向量值。从SQLServer 2025开始,是支持直接把大模型作为EXTERNAL MODEL的。此篇将介绍如何配置Ollama里的嵌入模型作为SQLServer 2025的EXTERNAL MODEL。
环境准备
所需工具
| 工具 | 用途 | 下载地址 |
|---|---|---|
| Ollama | 本地运行 LLM 和嵌入模型 | https://ollama.com/ |
| nginx | 反向代理,提供 HTTPS 支持 | https://nginx.org/ |
| mkcert | 生成自签名证书 | https://github.com/FiloSottile/mkcert |
确保Ollama已安装并且下载基本嵌入模型
# 下载并运行嵌入模型
ollama run nomic-embed-text “Hello”
为OLLAMA配置HTTPS
证书创建
由于Ollama 默认只提供 HTTP 服务,而 SQL Server 2025 要求外部 REST 端点必须使用 HTTPS,所以需要通过 nginx 配置反向代理实现 HTTPS 支持。
首先从网站https://github.com/FiloSottile/mkcert 下载并安装mkcert工具。
根据自己的环境去下载就可以,不需要编译,并且提供了MacOs以及Windows的AMD和ARM版。
下载完成后建议保存到一个比较容易访问到的目录,比如我是放在 d:\Cert,这样我就可以打开PowerShell,很容易的cd到这个目录。
在PowerShell下cd到 d:\Cert 目录,然后执行以下命令安装 mkcert 工具:
.\mkcert-v1.4.4-windows-amd64.exe -install
Tip:默认下载的程序名很长,敲PowerShell命令的时候可以先敲一个mk然后按Tab键自动补全,或者也可以直接将下载的文件重命名成mkcert.exe。
然后再执行以下命令生成服务器证书,需留意需要把192.168.1.160替换为你自己的IP地址。
.\mkcert-v1.4.4-windows-amd64.exe 192.168.1.160 localhost 127.0.0.1 ::1
运行完成后会在 d:\Cert 目录下生成两个文件,分别是 <证书文件名>.pem 和 <证书文件名>-key.pem。
nginx 配置反响代理
首先需要再NGINX网站上下载并安装nginx。在Windows下的安装没什么特殊的说道,直接下载并解压即可。
比如我会在D盘目录下创建文件夹APPS然后再创建子文件夹NGINX,把解压的所有文件都复制到这下面。
在NGINX目录下创建一个文件夹,命名为 certs,然后将刚才生成的两个证书都复制到这里。
接下来是关键,找到NGINX的配置文件 nginx.conf,它在目录conf下,然后编辑它。
用以下http部分的配置覆盖默认的配置。
http {
server {
listen 443 ssl;
server_name 192.168.1.160; # 替换为你的 IP
ssl_certificate ../certs/<证书文件名>.pem;
ssl_certificate_key ../certs/<证书文件名>-key.pem;
location / {
proxy_pass http://localhost:11434;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
保存配置文件后,需要重启NGINX服务。
# 启动 nginx(前台运行)
nginx
# 停止 nginx(在另一个终端)
nginx -s stop
# 后台启动 nginx
start nginx
最后一步验证 HTTPS 是否正常工作。
# 测试 HTTP 直接访问 Ollama
curl http://localhost:11434
# 测试 HTTPS 通过 nginx 访问
curl https://localhost
# 测试嵌入 API 通过 HTTPS
Invoke-RestMethod -Uri https://localhost/api/embeddings `
-Method Post `
-Body '{"model": "nomic-embed-text:latest", "prompt": "博客园最帅的是谁"}' `
-ContentType 'application/json'
SQL Server 2025 配置
启用外部 REST 端点
USE VectorDB;
GO
-- 启用外部 REST 端点
sp_configure 'external rest endpoint enabled', 1
GO
RECONFIGURE WITH OVERRIDE;
GO
创建外部模型
USE VectorDB
GO
DROP EXTERNAL MODEL IF EXISTS ollama_nomic_embed_text
GO
CREATE EXTERNAL MODEL ollama_nomic_embed_text
WITH (
LOCATION = 'https://192.168.1.160:443/api/embed',
API_FORMAT = 'Ollama',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'nomic-embed-text:latest'
);
GO
-- 验证模型创建
SELECT * FROM sys.external_models;
GO
Tip:关于模型的名称,需要用Ollama list命令确认下名称,比如我的是nomic-embed-text:latest。但在我另一台机器里就是nomic-embed-text。
ollama list
生成向量嵌入
-- 单条文本生成嵌入
SELECT AI_GENERATE_EMBEDDINGS(
N'博客园最帅的是谁'
USE MODEL ollama_nomic_embed_text
) AS GeneratedEmbedding;
-- 批量生成嵌入
SELECT
TOP 5000
VectorId,
ChunkId,
AI_GENERATE_EMBEDDINGS(
VectorText USE MODEL ollama_nomic_embed_text
) AS Ingredients_Embeddings
FROM dbo.VectorIndex;
总结
SQLServer 2025在使用嵌入模型构建RAG系统的时候,为我们提供了一种选择,就是通过这种外部模型的配置,我们可以直接在SQL Server 2025中使用Ollama里部署的嵌入模型,而不需要再单独写Python代码来实现。
当然根据官方文档的描述,除了Ollama,符合OpenAI API规范的其他模型也可以使用,也包括Azure OpenAI。
posted on 2026-05-06 14:52 哥本哈士奇(aspnetx) 阅读(27) 评论(0) 收藏 举报
浙公网安备 33010602011771号