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 模块:

bash 复制代码
pip install sqlite-vec

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

python 复制代码
import sqlite3
import sqlite_vec

from typing import List
import struct


def 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(
    """
      SELECT
        rowid,
        distance
      FROM vec_items
      WHERE embedding MATCH ?
      ORDER BY distance
      LIMIT 3
    """,
    [serialize_f32(query)],
).fetchall()

print(rows)

代码运行的结果如下:

bash 复制代码
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 格式的本地嵌入模型生成文本嵌入。
相关推荐
新加坡内哥谈技术5 分钟前
Airbnb内部核心键值存储系统 Mussel 已完成从 v1 到 v2 的重构升级
人工智能
zzywxc78714 分钟前
AI 开发工具全景指南:从编码辅助到模型部署的全流程实践
大数据·人工智能·低代码·机器学习·golang·自动化·ai编程
liliangcsdn16 分钟前
mac基于mlx运行轻量级模型gemma-3-270m
人工智能·macos
鲲志说19 分钟前
电子证照系统国产化改造实践:从MongoDB到金仓数据库的平滑迁移与性能优化
大数据·数据库·mongodb·性能优化·数据库开发·数据库架构·金仓数据库
铮铭28 分钟前
【论文阅读】具身人工智能:从大型语言模型到世界模型
论文阅读·人工智能·语言模型
en-route37 分钟前
从零开始学神经网络——CNN(卷积神经网络)
人工智能·神经网络·cnn
Niuguangshuo39 分钟前
深度学习:池化(Pooling)
人工智能·深度学习
元基时代1 小时前
专业的短视频发布矩阵哪家靠谱
大数据·人工智能·python·矩阵
范纹杉想快点毕业1 小时前
单片机开发中的队列数据结构详解,队列数据结构在单片机软件开发中的应用详解,C语言
c语言·数据库·stm32·单片机·嵌入式硬件·mongodb·fpga开发
腾讯数据架构师1 小时前
k8s 兼容摩尔线程
人工智能·云原生·容器·kubernetes·cube-studio