tinyvector

GitHub
774 22 简单 1 次阅读 1周前MIT数据工具
AI 解读 由 AI 自动生成,仅供参考

tinyvector 是一款基于 SQLite 和 PyTorch 构建的轻量级近邻向量嵌入数据库。它旨在为中小规模数据集提供高效、简洁的向量搜索解决方案,核心代码不足 500 行,极易定制与维护。

在许多常见应用场景中,如文档对话检索或中小型电商网站搜索,传统重型向量数据库往往显得过于复杂且资源消耗大。tinyvector 正是为了解这一痛点而生,它摒弃了不必要的复杂性,在保持极速查询的同时,大幅降低了部署和维护门槛。对于拥有数百万以内向量数据的项目,tinyvector 能提供媲美高级数据库的性能,且无需依赖复杂的索引结构如 HNSW 或 FAISS。

这款工具特别适合开发者和技术研究人员使用,尤其是那些希望快速集成向量搜索功能、偏好轻量化架构或需要高度自定义能力的团队。由于目前仍处于开发阶段(预计七月底达到生产就绪状态),它也欢迎社区贡献者参与完善元数据过滤、GPU 加速等特性。

技术层面,tinyvector 的独特之处在于其“垂直扩展”能力,将所有索引存储在内存中以实现快速查询,轻松支持上亿维度的向量处理。未来版本还将集成完整的 SQL 查询功能及主流嵌入模型(如 SBert、OpenAI 等),让用户无需自行生成向量即可直接使用。如果你正在寻找一个简单、开源且免费的向量存储方案,tinyvector 是一个值得关注的灵活选择。

使用场景

一家初创电商团队正在为其内部知识库开发一个“智能客服助手”,需要让 AI 能够基于现有的产品文档和 FAQ 回答用户提问,数据量约为 5 万条文本记录。

没有 tinyvector 时

  • 架构过度复杂:为了存储少量向量,不得不部署 Pinecone 或 Milvus 等大型专用向量数据库,引入了额外的云服务成本和运维负担。
  • 开发门槛高:团队需要学习复杂的专有 API 和配置流程,仅仅为了实现简单的语义搜索,导致项目启动缓慢。
  • 数据隔离困难:向量数据存储在外部服务中,与现有的 SQLite 业务数据分离,难以进行统一备份和管理,增加了数据一致性风险。
  • 资源浪费严重:对于仅数万条的数据规模,大型向量数据库的性能优势无法体现,反而占用了过多的服务器内存和网络带宽。

使用 tinyvector 后

  • 极简部署体验:tinyvector 仅依赖 Flask、SQLite 和 Numpy,代码不足 500 行,开发者只需几行命令即可在本地或轻量级服务器上快速启动服务。
  • 无缝集成现有栈:利用 SQLite 作为后端,团队可以直接复用已有的数据库备份策略和管理工具,无需维护额外的基础设施。
  • 性能足够且高效:针对中小规模数据集,tinyvector 将索引加载到内存中,查询速度与大型数据库相当,完全满足实时客服响应需求。
  • 高度可定制:由于代码开源且精简,开发人员可以轻松添加元数据过滤功能(如按产品类别筛选),解决了传统向量数据库缺乏灵活 SQL 查询能力的痛点。

tinyvector 的核心价值在于为中小规模应用提供了“杀鸡不用牛刀”的轻量化解决方案,以极低的运维成本实现了高效的向量语义搜索。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该项目目前处于预发布阶段(pre-release),仍在开发中,尚未准备好用于生产环境。它本质上是一个 Flask 服务器,使用 SQLite 存储数据,并将所有索引存储在内存中以加快查询速度。已知存在 SQLite 数据损坏的重大 Bug,且 PCA 和不可变暴力搜索索引未经过测试。
python未说明
Flask
SQLite
Numpy
pytest
pytest-mock
tinyvector hero image

快速开始

tinyvector logo

tinyvector - 一个轻量、最不“傻”、极速的向量嵌入数据库.
不,你不需要一个向量数据库。你需要 tinyvector。

处于预发布阶段:预计七月底可投入生产。 仍在开发中,暂未正式可用!

特性

  • 小巧: 名字里就带“小”。它只是一个 Flask 服务器、SQLite 数据库和 NumPy 索引。极其易于定制,代码量不足 500 行。
  • 快速: 在中小型数据集上,tinyvector 的查询速度将与先进的向量数据库相当。
  • 垂直扩展性强: tinyvector 将所有索引存储在内存中,以实现快速查询。非常容易扩展到 1 亿+ 维度的向量,毫无问题。
  • 开源: MIT 许可证,永久免费。

即将推出

  • 强大的查询功能: tinyvector 正在升级为支持完整的 SQL 查询功能,这是大多数其他数据库所缺乏的。
  • 集成模型: 很快你就不需要自己提供向量了,只需让服务器自动为你生成即可。将支持 SBert、Hugging Face 模型、OpenAI、Cohere 等。
  • Python/JS 客户端: 我们将在接下来的两周内添加一个全面的 Python 和 JavaScript 包,以便轻松集成 tinyvector。

版本

🦀 Rust 实现的 tinyvector: tinyvector-rs
🐍 Python 实现的 tinyvector: tinyvector

我们比 … 更好

在大多数情况下,许多向量数据库对于一些简单任务来说都过于复杂,例如:

  1. 使用嵌入来与你的文档进行对话。大多数文档搜索远达不到需要用 HNSWFAISS 来加速的程度。
  2. 为你的网站或商店做搜索。除非你销售 100 万件商品,否则你并不需要 Pinecone。
  3. 对超大型数据库执行复杂的搜索查询。即使你有 200 万个嵌入,这可能仍然是更好的选择,因为向量数据库在处理复杂过滤时往往表现不佳。目前 tinyvector 还不支持元数据和过滤,但你可以很容易地自行添加这些功能。

使用方法

// 手动运行服务器:
pip install -r requirements
python -m server

// 运行测试:
pip install pytest pytest-mock
pytest

嵌入是什么?

什么是嵌入?

简单来说:嵌入是一种比较相似事物的方式,就像人类通过将文本转换成一小串数字来比较相似的事物一样。相似的文本会产生相似的数字,而不同的文本则会有截然不同的数字。

阅读 OpenAI 的解释

参与贡献

tinyvector 将会快速发展(别担心,它仍然会很“小”)。欢迎提交 PR 并参与贡献。如果你有任何问题,可以直接 @@willdepue

一些可以尝试的贡献方向:

  • 添加元数据并支持查询/过滤。这一点尤其重要,因为很多向量数据库根本没有 WHERE 子句,或者只有非常弱的过滤功能。但在 tinyvector 中这并不是问题。了解更多关于此的信息。
  • 重新考虑使用 SQLite,或者选择其他数据库。NoSQL 是否更适合嵌入?
  • 添加嵌入函数,方便直接输入文本(如 Sentence Transformers、OpenAI、Cohere 等)。
  • 开始使用 PyTorch 索引来利用 GPU 加速。GPU 非常擅长矩阵乘法,因此可以通过融合的核函数来进行近邻搜索。让我们把 3200 万个向量放到一块 GPU 上。
  • 帮助编写单元测试和集成测试。
  • 查看所有活跃的问题

已知问题

# 主要错误:
SQLite 数据损坏?存储的向量会发生变化。复现方法是创建一张表,插入向量,建立索引,然后不断操作直到出现错误。最终维度会不匹配(可能是 blob 函数或归一化函数导致的,但这并不能解释为什么数据库会改变)。
PCA 尚未经过测试,不可变的暴力搜索索引也同样如此。

许可证

MIT

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

scikit-learn

scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最

65.6k|★☆☆☆☆|今天
开发框架其他数据工具

keras

Keras 是一个专为人类设计的深度学习框架,旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。 无论是刚入门的学生、专注算法的研究人员,还是需要快速落地产品的工程师,都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。 Keras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码,即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性,还允许开发者根据需求自由选择:利用 JAX 或 PyTorch 的即时执行模式进行高效调试,或切换至速度最快的后端以获得最高 350% 的性能提升。此外,Keras 具备强大的扩展能力,能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群,是连接原型开发与生产部署的理想桥梁。

63.9k|★★☆☆☆|昨天
开发框架数据工具其他

crawl4ai

Crawl4AI 是一款专为大语言模型(LLM)设计的开源网络爬虫与数据提取工具。它的核心使命是将纷繁复杂的网页内容转化为干净、结构化的 Markdown 格式,直接服务于检索增强生成(RAG)、智能体构建及各类数据管道,让 AI 能更轻松地“读懂”互联网。 传统爬虫往往面临反爬机制拦截、动态内容加载困难以及输出格式杂乱等痛点,导致后续数据处理成本高昂。Crawl4AI 通过内置自动化的三级反机器人检测、代理升级策略以及对 Shadow DOM 的深度支持,有效突破了这些障碍。它能智能移除同意弹窗,处理深层链接,并具备长任务崩溃恢复能力,确保数据采集的稳定与高效。 这款工具特别适合开发者、AI 研究人员及数据工程师使用。无论是需要为本地模型构建知识库,还是搭建大规模自动化信息采集流程,Crawl4AI 都提供了极高的可控性与灵活性。作为 GitHub 上备受瞩目的开源项目,它完全免费开放,无需繁琐的注册或昂贵的 API 费用,让用户能够专注于数据价值本身而非采集难题。

63.2k|★★☆☆☆|3天前
数据工具Agent

meilisearch

Meilisearch 是一个开源的极速搜索服务,专为现代应用和网站打造,开箱即用。它能帮助开发者快速集成高质量的搜索功能,无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果,而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性,并支持 AI 驱动的混合搜索(结合关键词与语义理解),显著提升用户查找信息的体验。 Meilisearch 特别适合 Web 开发者、产品团队或初创公司使用,尤其适用于需要快速上线搜索功能的场景,如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK,部署简单,资源占用低,本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下,为用户提供流畅、智能搜索体验的团队来说,Meilisearch 是一个高效且友好的选择。

57k|★★☆☆☆|今天
图像Agent数据工具

Made-With-ML

Made-With-ML 是一个面向实战的开源项目,旨在帮助开发者系统掌握从设计、开发到部署和迭代生产级机器学习应用的完整流程。它解决了许多人在学习机器学习时“会训练模型但不会上线”的痛点,强调将软件工程最佳实践与 ML 技术结合,构建可靠、可维护的端到端系统。 该项目特别适合三类人群:一是希望将模型真正落地的开发者(包括软件工程师、数据科学家);二是刚毕业、想补齐工业界所需技能的学生;三是需要理解技术边界以更好推动产品的技术管理者或产品经理。 Made-With-ML 的亮点在于注重第一性原理讲解,避免盲目调包;同时覆盖 MLOps 关键环节(如实验跟踪、模型测试、服务部署、CI/CD 等),并支持在 Python 生态内平滑扩展训练与推理任务,无需切换语言或复杂基础设施。课程内容结构清晰,配有详细代码示例和视频导览,兼顾理论深度与工程实用性。

47.1k|★★☆☆☆|今天
语言模型其他数据工具