SuperAPI AI 工具集

azuresql-db-rag

智能体与模型

查看项目

更新于 10-16 06:47

技能介绍

用途:在本地容器中运行的 Azure SQL Database 引擎上构建向量检索、RAG、嵌入与语义搜索,使用原生 VECTOR(n) 类型与 VECTOR_DISTANCE,不依赖独立向量库。

主要能力:存储嵌入并做余弦距离 top-k 相似检索;支持精确全表扫描检索,也支持 CREATE VECTOR INDEX(DiskANN 近似最近邻)索引加速;支持 INSERT/UPDATE/DELETE 在索引存在时正常工作。

必要用法:先确认身份,SELECT SERVERPROPERTY('EngineEdition') 应为 5、Edition 为 'SQL Azure';镜像为 sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest(需先 docker login;非 x64 主机加 --platform linux/amd64)。连接前须在 master 上 CREATE DATABASE appdb,之后一律在连接串中指定 Database=appdb 或 sqlcmd 用 -d appdb,避免 USE(会报 Msg 40508)。建表时维度为字面量,如 VECTOR(768);插入与查询时 CAST(CAST(? AS NVARCHAR(MAX)) AS VECTOR(n)) 中的 n 必须为字面量,绑定参数会报错。嵌入可用本地 Ollama 端点(如 nomic-embed-text,768 维),这是唯一的网络调用。检索按 VECTOR_DISTANCE('cosine', a, b) 升序取 TOP(k)。

限制:维度上限为 1998,VECTOR(3072) 被拒(Msg 2717),且维度无法后续加宽;向量索引创建需至少 100 行非空向量,含 NULL 行不计入;建向量索引前须 SET QUOTED_IDENTIFIER ON,否则报 Msg 1934;索引存在时 TRUNCATE TABLE 被拒(Msg 42232);无 DROP VECTOR INDEX 语句,用 DROP INDEX;容器上向量索引与安全策略不能共存于同一表(Msg 37579 / Msg 42244),云上可共存,属本地与云的能力差异;文档未列出该限制,结论来自实测。索引建好后 vector_search 不再接受显式 TOP_N(Msg 42274)。

适用场景:本地开发与验证向量 schema、嵌入写入与 top-k 检索、RAG 检索层;不适用于 SQL Server 镜像(mcr.microsoft.com/mssql/server 为错误镜像)。

其它:容器不会自动执行 /docker-entrypoint-initdb.d/*.sql,需在 provision 后手动运行 sqlcmd -d appdb -i seed.sql。具体版本、镜像标签与注册表在 Private Preview 期间可能变动;官方完整文档与更多细节暂未提供。