当前位置: 首页 > news >正文

mysql旧版本存储嵌入模型的向量数据

mysql 9.0开始支持向量(VECTOR)数据类型,社区褒贬不一,虽然它的功能还比较简陋,不过对于保存嵌入模型向量化的数据,还是非常有帮助的,而在mysql以前的版本中,我们的方案主要还是使用blob数据类型的字段来保存向量数据的内存数据。其实现在很多单位还在使用mysql的旧版本,并没有都跟新上mysql 9。以下主要介绍下mysql使用blob字段存储向量数据后续可能会遇到的小坑。
我有一个nodejs开发的程序,对一些新闻标题使用嵌入模型进行处理后将向量数据保存在mysql中,后续会取出跟其他的标题向量进行语义匹配,就这个简单的写入和读出就遇到问题了。
我使用的是一个4096维的嵌入模型,会将每一个新闻标题转换成一个包含4096个浮点数的数组,

let float32Array = new Float32Array(titlevector);
let buffer=Buffer.from(float32Array.buffer); 

将buffer作为字段值通过insert语句插入表格即可,没有什么毛病。
读取的话,执行SQL查询,得到返回的结果集dbchklist

		dbchklist.forEach(item => {const blob = item.tvb;item.tv= new Float32Array(blob.buffer, blob.byteOffset, 4096);});

好像没有毛病,但是执行时报错了

RangeError: start offset of Float32Array should be a multiple of 4at new Float32Array (<anonymous>)

Float32Array要求缓存得从4的倍数的地址开始!而在 Node.js 中使用 mysql2 库时,无法直接确保返回的 blob 对象内存对齐,这是由底层实现决定的。对于没有对齐的,可以创建新的对齐内存,使用高效 Uint8Array.set() 复制数据。

		dbchklist.forEach(item => {const blob = item.tvb;if (blob.byteOffset % 4 === 0) {item.tv= new Float32Array(blob.buffer, blob.byteOffset, 4096);}else {const arrayBuffer = new ArrayBuffer(16384);const sourceView = new Uint8Array(blob.buffer, blob.byteOffset, 16384);new Uint8Array(arrayBuffer).set(sourceView);item.tv=new Float32Array(arrayBuffer);}});

这样就可以正常把blob保存的向量数据正常读出了。

http://www.dtcms.com/a/419040.html

相关文章:

  • 公司网站建设宣传话语申请一个域名可以建设一个网站吗
  • 合川做网站临汾网站建设
  • HGAME 2023 week1]a_cup_of_tea
  • vue 打包element plus组件生成对应css文件的问题
  • 网站 接入微信公众号登陆入口
  • 做网站和做appwordpress category模板
  • Windows---进程状态信息获取的核心接口<Psapi.h>
  • flink状态管理
  • 有成功案例的网站汉口北做网站
  • k8s的kube-prosy
  • 手机网站费用电商都有哪些平台
  • 自动驾驶中的传感器技术56——USS(2)
  • 快速上手 iFlow CLI:你的终端 AI 助手
  • AI编程工具:ChatGPT + Copilot使用体验
  • vue3+ts 封装跟随弹框组件,支持多种模式【多选,分组,tab等】
  • 网站开发注意事项wordpress 专业版主题
  • 2025甄选范文“论事件驱动的架构”,软考高级,系统架构设计师论文
  • 高通平台WiFi学习--深入解析 WCN39xx/PMIC GPIO/LDO 状态读取与调试
  • 评估止损算法在历史极端行情中表现的一些复盘
  • 英飞凌Coolgan提升Poe性能
  • 网站解析多久网站开发是做什么?
  • 有哪些好的做兼职网站有哪些做网站域名需哪些
  • FFmpeg过滤器实战:水印处理
  • 网站推广好难免费建网站代理
  • 东莞网站建设主要学什么北京有哪些著名网站
  • 英文版科技网站网站推广套餐
  • 网站建设与开发课程内容wordpress 启动wordpress mu
  • 10.4 线性规划
  • 【Svelte】比较 onMount 和 browser,以及客户端获取数据时,应该使用谁?
  • 欢迎学习《现代控制理论》——自动化专业的核心课程