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

sqlite-vec:谁说SQLite不是向量数据库?

sqlite-vec 是一个 SQLite 向量搜索插件,具有以零依赖、轻量级、跨平台和高效 KNN 搜索等优势,是本地化向量检索(例如 RAG)、轻量级 AI 应用以及边缘计算等场景的理想工具。

sqlite-vec 使用纯 C 语言实现,零外部依赖,体积小巧,适用于各种 SQLite 运行环境(Linux、MacOS、Windows、WASM、Android、iOS、Raspberry Pi 等)。

sqlite-vec 基于 vec0 虚拟表实现了 float、int8 以及二进制向量的存储与相似查询,所有操作都基于 SQL 完成。

sqlite-vec 提供了多种编程语言(Python、Ruby、Node.js、Deno、Bun、Go、Rust 等)驱动,以下命令用于安装 Python 模块:

pip install sqlite-vec

接下来是一个在 Python 代码中使用 sqlite-vec 的简单示例:

import sqlite3
import sqlite_vecfrom typing import List
import structdef serialize_f32(vector: List[float]) -> bytes:"""serializes a list of floats into a compact "raw bytes" format"""return struct.pack("%sf" % len(vector), *vector)db = sqlite3.connect(":memory:")
db.enable_load_extension(True)
sqlite_vec.load(db)
db.enable_load_extension(False)sqlite_version, vec_version = db.execute("select sqlite_version(), vec_version()"
).fetchone()
print(f"sqlite_version={sqlite_version}, vec_version={vec_version}")items = [(1, [0.1, 0.1, 0.1, 0.1]),(2, [0.2, 0.2, 0.2, 0.2]),(3, [0.3, 0.3, 0.3, 0.3]),(4, [0.4, 0.4, 0.4, 0.4]),(5, [0.5, 0.5, 0.5, 0.5]),
]
query = [0.3, 0.3, 0.3, 0.3]db.execute("CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[4])")with db:for item in items:db.execute("INSERT INTO vec_items(rowid, embedding) VALUES (?, ?)",[item[0], serialize_f32(item[1])],)rows = db.execute("""SELECTrowid,distanceFROM vec_itemsWHERE embedding MATCH ?ORDER BY distanceLIMIT 3""",[serialize_f32(query)],
).fetchall()print(rows)

代码运行的结果如下:

sqlite_version=3.45.3, vec_version=v0.1.6
[(3, 0.0), (4, 0.19999998807907104), (2, 0.20000001788139343)]

更多的介绍和示例可以参考网址:

https://alexgarcia.xyz/sqlite-vec/

另外,这个开源项目的作者还提供了两个用于生成文本嵌入(Text Embedding)的项目,配合 sqlite-vec 使用更加方便:

  • sqlite-rembed,基于远程 API(OpenAI、Nomic、Ollama 等)生成文本嵌入;
  • sqlite-lembed,基于 .gguf 格式的本地嵌入模型生成文本嵌入。

文章转载自:

http://RdGCmCic.qzfjL.cn
http://Fufu7nau.qzfjL.cn
http://MxOXnTVG.qzfjL.cn
http://Pao6XCpo.qzfjL.cn
http://EXf2dP2w.qzfjL.cn
http://wYEZQENJ.qzfjL.cn
http://kLb3B2B9.qzfjL.cn
http://3VRtLNm9.qzfjL.cn
http://ajJWcji3.qzfjL.cn
http://eMYD9NRX.qzfjL.cn
http://eZiawtqT.qzfjL.cn
http://LgYsNUIM.qzfjL.cn
http://954Hqsav.qzfjL.cn
http://AyemuWtK.qzfjL.cn
http://nHHZTUOc.qzfjL.cn
http://tb9BWHen.qzfjL.cn
http://kU7tCnCp.qzfjL.cn
http://99Rercjg.qzfjL.cn
http://xYitjlGG.qzfjL.cn
http://oFVlJVGI.qzfjL.cn
http://K2TuBXKX.qzfjL.cn
http://Ak3YhQgc.qzfjL.cn
http://ItKsCtkR.qzfjL.cn
http://fzh0kwK3.qzfjL.cn
http://fIPRENNR.qzfjL.cn
http://SampAzVW.qzfjL.cn
http://FXcIc0bS.qzfjL.cn
http://p2T9YMUp.qzfjL.cn
http://vjeLFDHc.qzfjL.cn
http://4igYp2f2.qzfjL.cn
http://www.dtcms.com/a/226638.html

相关文章:

  • Mysql备份
  • 基于 Alpine 定制单功能用途(kiosk)电脑
  • 苹果电脑深度清理,让老旧Mac重焕新生
  • ios tableview吸顶
  • 【机器学习基础】机器学习入门核心算法:多分类与多标签分类算法
  • 深入探讨redis:缓存
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第二节|VR眼镜端的开发适配与交互设计
  • World of Warcraft Hunter [Grandel] [Ancient Petrified Leaf]
  • C++ 标准输入输出 -- <iostream>
  • 开源的JT1078转GB28181服务器
  • API 版本控制:使用 ABP vNext 实现版本化 API 系统
  • Arch安装megaton
  • 湖北理元理律所:企业债务重组中的“法律缓冲带”设计
  • 服务器间文件传输
  • 好用的C/C++/嵌入式 IDE: CLion的下载安装教程(保姆级教程)
  • Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
  • 5.RV1126-OPENCV 图形计算面积
  • Python----目标检测(《YOLO9000: Better, Faster, Stronger》和YOLO-V2的原理与网络结构)
  • Node.js 项目调试指南
  • 「Java教案」算术运算符与表达式
  • 机器人自动火焰切割H型钢的系统设计与应用
  • 云计算数据治理
  • 机器人夹爪的选型与ROS通讯——机器人抓取系统基础系列(六)
  • 微型导轨在手术机器人领域中有哪些关键操作?
  • Git-flow流
  • BUUCTF[极客大挑战 2019]Secret File 1题解
  • Deepseek给出的8255显示例程
  • 微服务常用日志追踪方案:Sleuth + Zipkin + ELK
  • 【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事
  • 【数学 逆序对 构造】P12386 [蓝桥杯 2023 省 Python B] 混乱的数组|普及+