SQLServer RAG笔记5:为SQLServer 2025配置Ollama

环境准备

所需工具

工具用途下载地址
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