关于微软最新数据库引擎sqlserver2025 关于向量距离函数调用的问题

关于微软最新数据库引擎sqlserver2025 关于向量距离函数调用的问题

已经通过模型将知识库分段向量1024维存入数据库,现在要实现RAG,需要从向量数据中检索出相似知识片段,然后将片段作为输入告诉人工智能后提问,实现RAG增强。

但是问题来了,微软发布的最新数据库引擎支持三个向量函数,

VECTOR_DISTANCE // 计算向量距离相似度 支持 cosine - 余弦距离 euclidean - Euclidean 距离 dot - (负数) 点积

VECTOR_SEARCH // 搜索向量距离 这个函数需要建立 VECTOR_INDEX 索引方可使用

因为知识库是动态知识库,而且向量索引建立以后数据不可以增删改,需要删除索引修改完在重建对

对于小数据量,知识库数据50000以下不建议创建索引,直接使用VECTOR_DISTANCE计算。

微软提供的例子都是在存储过程中实现向量相似度计算,但是我们的知识库是动态知识库,按照一个知识库对应一个向量集合表,那么存储过程需要拼接数据库表命,语法太乱了不喜欢,那么如何直接通过TSQL语句直接计算向量向量相似度呢?

首先直接把1024维的float 作为参数传入sql语句,会报一个 varchar 超过长度问题,其实不难理解,毕竟是预览版,微软的工程师也是在摸索呢,所以用 varchar(max) 封装了 vector 类型。

所以经过我仔细研究,可以通过 CAST('1.5,2.3,0.8...' AS vector(1024)) 转换向量类型,然后传入SQL语句 就可以直接在 netcore _context.Database.ExecuteSqlRaw(SqlCmd); 执行。

SELECT TOP(2) * FROM dbo.Vector_efc5013f0432473294a5991163e8f441 ORDER BY VECTOR_DISTANCE('cosine',CAST('-1.6799299e+000,2.7846149e-001,-9.0215802e-001,-8.3536464e-001,-1.5517933e+000,6.6706377e-001,5.9230852e-001,-5.1769388e-001,-5.9696758e-001,3.4299669e-001,5.3145283e-001,6.3425183e-001,-9.0269399e-001,-5.7276227e-002,9.0233982e-002' AS vector(1024)),Embedding)

相关推荐
十二同学啊5 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技6 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐9 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB9 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶9 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax9 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB9 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
vx-程序开发9 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
一 乐10 小时前
养老院管理系统|基于springboot + vue养老院管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
这个DBA有点耶11 小时前
InnoDB页结构深入:页分裂、页合并、填充因子——B+树底层机制全解析
数据库·mysql·架构