在第三篇笔记中我们结合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 -installTip默认下载的程序名很长敲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; # 替换为你的 IPssl_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后台启动 nginxstart nginx最后一步验证 HTTPS 是否正常工作。测试 HTTP 直接访问 Ollamacurl http://localhost:11434测试 HTTPS 通过 nginx 访问curl https://localhost测试嵌入 API 通过 HTTPSInvoke-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’, 1GORECONFIGURE WITH OVERRIDE;GO创建外部模型USE VectorDBGODROP EXTERNAL MODEL IF EXISTS ollama_nomic_embed_textGOCREATE EXTERNAL MODEL ollama_nomic_embed_textWITH (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;GOTip关于模型的名称需要用Ollama list命令确认下名称比如我的是nomic-embed-text:latest。但在我另一台机器里就是nomic-embed-text。ollama list生成向量嵌入– 单条文本生成嵌入SELECT AI_GENERATE_EMBEDDINGS(N’博客园最帅的是谁’USE MODEL ollama_nomic_embed_text) AS GeneratedEmbedding;– 批量生成嵌入SELECTTOP 5000VectorId,ChunkId,AI_GENERATE_EMBEDDINGS(VectorText USE MODEL ollama_nomic_embed_text) AS Ingredients_EmbeddingsFROM dbo.VectorIndex;