通过rqlite sdk 快速访问sqlite-vec

news/2025/10/12 8:01:54/文章来源:https://www.cnblogs.com/rongfengliang/p/19006638

通过rqlite sdk 快速访问sqlite-vec

sqlite-vec 的的轻量化以及标准sqlite 扩展的模式对于需要使用向量存储的场景(比如相似比较的),但是使用上可能并不是很友好(从轻量化来说够用了,但是我们很多时候还是需要server 以及轻量能力,同时将扩展隐藏起来,方便维护),rqlite 是一个不错的基于sqlite 但是支持分布式特性的db 平台

参考玩法

image

简单说: 通过rqlite server 直接加载sqlite-vec 扩展,之后启动通过rqlite 提供的sql 直接基于sql 模式方法

示例代码

  • 启动服务
sudo rqlited -extensions-path=sqlite-vec.tar.gz -http-addr=127.0.0.1:8080  data
  • 代码访问

直接使用rqlite 提供的python sdk pyrqlite

import pyrqlite.dbapi2 as dbapi2
import numpy as np
import uuid
from typing import List
from struct import pack
def serialize_float32(vector: List[float]) -> bytes:"""Serializes a list of floats into the "raw bytes" format sqlite-vec expects"""return pack("%sf" % len(vector), *vector)
# Connect to the database
connection = dbapi2.connect(host='localhost',port=8080,
)
is_first = True
first_embedding = np.random.rand(3).astype(np.float32)
test = [1.0,2.0,4.0]
try:with connection.cursor() as cursor:cursor.execute('create virtual table if not exists dalongrong_vec using vec0 (id text PRIMARY KEY, vector float[3] distance_metric=cosine, user_id text, type text, version text)')for i in range(20,30):if  is_first:cursor.execute("insert into dalongrong_vec (id, vector, user_id, type, version) values (?,?, ?, ?, ?)", (str(uuid.uuid4()), serialize_float32(first_embedding), f"user_{i}", "text", "v1"))print(first_embedding)is_first = Falseelse:embedding = np.random.rand(3).astype(np.float32)print(embedding)cursor.execute("insert into dalongrong_vec (id, vector, user_id, type, version) values (?,?, ?, ?, ?)", (str(uuid.uuid4()), serialize_float32(embedding), f"user_{i}", "text", "v1"))with connection.cursor() as cursor:search_result = cursor.execute("select id, user_id,vector, ROUND(vec_distance_cosine(vector,?), 7) distance from dalongrong_vec where vector match ? and type = ? and version = ?  and k = 10 order by distance", (serialize_float32(test),serialize_float32(test),"text","v1")).fetchall()for row in search_result:print(row)
finally:connection.close()

说明

通过rqlite 的好处是提供了server 能力,同时可以基于sqlite 的存储,还提供了分布式能力,当然也有一些缺陷,毕竟是基于http的性能上会有一些损耗,但是在一些资源受限,同时希望提供快速部署以及可靠性的时候还是值得使用的,对于python 同时还提供了基于sqlalchemy的扩展

参考资料

https://rqlite.io/docs/guides/extensions/

https://github.com/rqlite/rqlite

https://github.com/rongfengliang/rqlite-jdbc

https://github.com/rqlite/rqlite-jdbc

https://github.com/asg017/sqlite-vec

https://github.com/rqlite/sqlalchemy-rqlite

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统

Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统 EOS 数据中心网络操作系统 请访问原文链接:https://sysin.org/b…

CSharp: itextsharp5 imge converter pdf

using iTextSharp.text; using iTextSharp.text.pdf; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using …

20251011 总结

P9870 [NOIP2023] 双序列拓展 首先有一个暴力做法。 翻译一下题意,即为:拓展也就是一个DP,我们设朴素DP,每次判断能否往下拓展,设fij表示x匹配到第i位,y匹配到第j位。 然后考虑特殊性质:也就是说,这个特殊性质…

上课讲的部分 qoj 题记录

上课讲的部分 qoj 题记录上课讲的部分 qoj 题记录 #6299. Binary String

CSP-S 第二轮集训资料 **总结 + 专题细分精讲**_from_黄老师

CSP-S第二轮集训资料 总结 + 专题细分精讲。 为方便查阅,采用「总-分」结构:先用一张 思维导图级总表 可以30 秒看清全局; 对专题资料做 “三维”剖析:知识脉络(思维导图) 典型题目(含算法/陷阱/复杂度) 可迁移…

AI元人文:迈向正负价值统一的文明架构

AI元人文:迈向正负价值统一的文明架构 我们正在建造的不是一个在"好"与"坏"间被动权衡的文明反应堆,而是一个能同时驾驭创造与守护的文明引擎。AI元人文构想的终极承诺,是在系统内外实现正价值…

CSP-S 第二轮集训资料 **总结 + 专题细分精讲**。

CSP-S第二轮集训资料 总结 + 专题细分精讲。 为方便查阅,采用「总-分」结构:先用一张 思维导图级总表 可以30 秒看清全局; 对专题资料做 “三维”剖析:知识脉络(思维导图) 典型题目(含算法/陷阱/复杂度) 可迁移…

对抗训练提升产品搜索技术解析

本文介绍了一种利用对抗训练改进产品搜索系统的新方法,通过自动生成负训练样本来提升深度学习模型性能,在实验中比现有最佳方法提升16%的效果,详细阐述了神经网络架构和注意力机制的应用。对抗训练改进产品发现 深度…

Ubuntu Linux双网口主机实现在校园网环境下的网络共享

实例描述: 双千兆网口x86架构主机,Ubuntu Linux 22.04 Desktop版(Server版本同理),enp1s0连接需要认证的校园网(可能有设备最大连接数限制),enp2s0连接路由器。此时假设Ubuntu Linux已经通过校园网的认证并设置…

251012

251012我爱音乐,但是只有为数不多的乐队能唱出生命的感觉,好像我置身环境,而且所有的歌词都不是矫揉造作,充满了答案和问题,我爱今天里的这段时间,让我充满活力

C# Avalonia 16- Animation- ExpandElement

C# Avalonia 16- Animation- ExpandElement置顶的 C# Avalonia配置 已经更新 ExpandElement.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx…

DshanPI-A1 RK3576 armbian远程桌面

背景与问题使用设备:DshanPI-A1,搭载 Armbian 系统,窗口系统为 Wayland,GPU 采用开源驱动。初始尝试:使用 NoMachine 实现远程桌面,但存在两个问题:默认创建虚拟桌面,而非物理桌面;对 Wayland 支持不佳,会以…

Ubuntu Linux双网卡实现在校园网环境下的网络共享

实例描述: 双千兆网卡x86架构主机,Ubuntu Linux 22.04 Desktop版(Server版本同理),enp1s0连接需要认证的校园网(可能有设备最大连接数限制),enp2s0连接路由器。此时假设Ubuntu Linux已经通过校园网的认证并设置…

PVE8.x仅克隆虚拟机配置

PVE8.x仅克隆虚拟机配置操作步骤 复制配置文件 cp /etc/pve/qemu-server/<源VM ID>.conf /etc/pve/qemu-server/<新VM ID>.conf 编辑配置文件 ​ 修改磁盘路径:将原 VM ID 替换为新 ID(如 vm-100-disk-0…

SQL常用语句分类及示例

SQL常用语句分类及示例好的,SQL常用语句可以分为以下几大类,我将为您详细介绍并附上示例。这些语句是操作和查询关系型数据库的基础。 1. 数据查询语句 (DQL - Data Query Language) 主要用于从数据库中查询数据,核…

台式机主板上的电池要更换啦

当有内存、硬盘变动时,每次开机ASUS Z170-A主板都提示需要按F1进行重新设置,即使在主板BIOS的设置中把F1提示关闭,依旧不行。 同时Intel Virutalization选择enable,都无法生效。 这时可能是CMOS battery failure,…

轻量服务器Lighthouse + 1Panel 部署.NET 8 Web应用

本文将手把手使用轻量服务器+1Panel进行部署一个.NET 8的网站应用,数据库采用MySQL 5.7。并解决部署过程中的一些问题。前言腾讯云轻量服务器Lighthouse:众所周知,因其价格低、性能足(100%CPU)、操作简单,深受开…

bash alias 多引号问题

一句话: 像python那样,在里面使用\abc\,在bash中不行需要把 \ 换成 \ 这样问题解决You can make that command into a Bash alias by editing your shell configuration file (typically ~/.bashrc or ~/.bash_alia…