VecturaKit
Apple Silicon本地运行的纯Swift向量数据库,为隐私优先的设备端RAG提供零依赖嵌入检
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Apple Silicon本地运行的纯Swift向量数据库,为隐私优先的设备端RAG提供零依赖嵌入检
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你在地铁里用 iPhone 问 AI 助手关于昨天会议记录的问题。传统方案需要将你的问题发送到云端服务器,服务器检索向量数据库,再返回结果——整个过程不仅有网络延迟,还意味着你的私人笔记内容被上传到了第三方服务器。
VecturaKit 解决的就是这个问题:它是一个完全运行在苹果设备上的 Swift 向量数据库,让向量化检索(RAG 的核心技术)在本地完成,数据从不离开你的设备。
VecturaKit 由独立开发者 rryam 创建,灵感来源于 Dripfarm 的 SVDB 项目。项目聚焦于 Apple Silicon 的 MLX 机器学习生态——MLX 是苹果 2023 年底推出的 Apple Silicon 专用机器学习框架,类似 PyTorch 但针对苹果芯片优化,能在 Mac 的 GPU 和 Neural Engine 上高效运行。
VecturaKit 不是简单移植,它充分利用了苹果设备的硬件特性:统一内存架构(让 GPU 直接访问系统 RAM)、Neural Engine 加速、以及 Swift 6 的新语言特性。项目还与 rryam 的另外两个库协同工作:VecturaEmbeddingsKit(支持 Model2Vec、ModernBERT 等模型)和 VecturaMLXKit(GPU 加速嵌入生成),三者共同构成完整的设备端 RAG 工具链。
纯 Swift 向量存储引擎
VecturaKit 的核心是一个纯 Swift 实现的向量数据库,不依赖任何第三方数据库引擎(如 SQLite 底层也是纯 Swift 实现)。数据默认存储在应用沙盒内的文件系统中,通过自定义存储层协议(VecturaStorage),理论上可以对接任何存储后端(SQLite、Core Data、云存储等)。文档的增删改查操作全部支持持久化,重启应用后数据自动恢复。
插件化嵌入系统
项目的设计哲学是「一切皆可插拔」。通过 VecturaEmbedder 协议,开发者可以接入任意嵌入模型:
OpenAICompatibleEmbedder:对接 Ollama、LM Studio、llama.cpp 兼容服务器、vLLM 等本地推理服务NLContextualEmbedder:直接调用 Apple NaturalLanguage 框架,零外部依赖,在 iOS/macOS 上开箱即用SwiftEmbedder(via VecturaEmbeddingsKit):支持 Model2Vec、ModernBERT、NomicBERT 等静态嵌入模型MLXEmbedder(via VecturaMLXKit):利用 Apple Silicon GPU 加速嵌入生成这种设计让 VecturaKit 成为一个真正的「嵌入无关」向量数据库,切换嵌入模型不需要修改核心代码。
混合搜索:向量 + BM25
仅靠向量相似度搜索有时会漏掉关键词精确匹配的内容。VecturaKit 在核心库中实现了 向量相似度 + BM25 关键词检索 的混合搜索模式,并支持可配置的权重调节(hybrid search weights)。这是很多轻量级向量数据库所不具备的功能。
内存管理策略
大规模数据集的内存管理是个难题。VecturaKit 提供了三种策略:
官方性能测试显示:在 M 系列芯片 Mac 上,1,000 文档全内存模式峰值内存约 180-187MB,平均搜索延迟 10ms 左右。但官方也坦承 10K+ 文档的性能数据是基于线性推算而非实测。
命令行工具
除了库集成,项目还提供了两个 CLI 工具:
vectura-cli:基于 NaturalLanguage 框架,适合零依赖的本地工作流vectura-oai-cli:连接 OpenAI 兼容 API,适合有 Ollama/LM Studio 的开发者模块架构
项目拆分为 5 个独立产物(products):
| 模块 | 类型 | 说明 |
|---|---|---|
| VecturaKit | 库 | 核心向量存储 + 混合搜索 |
| VecturaNLKit | 库 | NaturalLanguage 嵌入支持 |
| VecturaOAIKit | 库 | OpenAI 兼容 API 嵌入支持 |
| vectura-cli | 可执行文件 | NL 驱动的 CLI 工具 |
| vectura-oai-cli | 可执行文件 | OAI 兼容 CLI 工具 |
源码结构按职责划分:Core(核心逻辑)、Storage(存储层)、SearchEngine(搜索引擎)、Embedder(嵌入接口)、Model(数据模型)、Utilities(工具函数)。
平台覆盖
VecturaKit 是目前覆盖 Apple 平台最全的向量数据库之一:iOS 18.0+、macOS 15.0+、watchOS 11.0+、tvOS 18.0+、visionOS 2.0+。这意味着你可以在 Apple Watch 上做本地语义搜索,在 Vision Pro 上构建空间 RAG 应用。
BLAS/LAPACK 加速
Package.swift 中定义了 ACCELERATE_NEW_LAPACK 和 ACCELERATE_LAPACK_ILP64,充分利用 macOS/iOS 内置的 Accelerate 框架进行向量运算加速,这是 Apple 生态的高性能计算标准库。
Swift 开发者友好,普通开发者有门槛
如果你有 Xcode 和 Swift 6 环境,通过 SPM(Swift Package Manager)添加依赖即可开始使用,官方 README 提供了完整的代码示例,从初始化数据库到搜索全流程覆盖。
但对于非 Apple 生态的开发者(比如后端工程师、数据科学家),这是个「进不去的世界」——项目没有 Docker 支持,不提供 Python binding,不支持 Linux/Windows。这意味着 VecturaKit 的目标用户非常明确:Apple 平台上的 Swift/iOS/macOS 开发者。
零依赖 NL 模式开箱即用
NLContextualEmbedder 的设计非常聪明——利用 Apple 设备内置的 NaturalLanguage 框架生成嵌入,无需下载任何外部模型,也无需联网。这种「插上电就用」的模式极大降低了入门门槛,非常适合快速原型开发。
性能有惊喜也有局限
官方基准测试在 1K 文档规模下表现出色(10ms 级别搜索),但 3K+ 文档在高内存压力下会崩溃,10K+ 文档的性能数据尚未实测。对于需要百万级文档检索的生产应用,当前版本可能还不足以支撑。
Indexed 模式尚未成熟
官方文档坦诚写道:Indexed 模式的性能特征仍在测量和优化中 recall 等指标尚无实测数据。对于需要精确召回率保证的生产环境,这是个未知数。
存储层可扩展性存疑
虽然设计了 VecturaStorage 协议,但官方目前只实现了默认的文件系统存储。如果要用 SQLite 或 Core Data 作为后端,需要开发者自行实现。这对于习惯了开箱即用的用户来说是个遗憾。
Swift-only 的双刃剑
Swift 生态虽然有 SPM 这样的现代化包管理器,但 Python/Node 生态的 AI 开发者无法直接使用 VecturaKit,这限制了项目的受众范围。
VecturaKit 的出现填补了 Apple 生态本地 RAG 工具链的一个关键空白。在隐私意识日益增强的背景下,「数据不离设备」的 AI 正在成为重要趋势。从 ChatGPT 的 Private Cloud Compute 到 Apple's On-Device Intelligence,本地化 AI 推理是行业大方向。
VecturaKit 与 MLX 生态(MLX、mlx-lm、llm-barraCUDA 等)共同构成了 Apple 平台上的开源 AI 工具链。虽然这套工具链目前还远不如 Python 生态成熟,但它代表了一种新的可能性:在口袋里完成 AI 推理,无需云端,无需订阅。
项目 300+ stars 的增长轨迹也值得关注——Swift/MXC 生态的优质 AI 项目正在吸引越来越多的关注。
项目基本信息
| 指标 | 数值 |
|---|---|
| GitHub Stars | 307 |
| 主要语言 | Swift |
| 平台支持 | iOS 18+ / macOS 15+ / watchOS 11+ / tvOS 18+ / visionOS 2+ |
| 许可证 | MIT |
| Swift 版本 | Swift 6.0+ |
| 代码测试 | 完整单元测试 + 性能测试 |
| 文档质量 | 优秀(README + 专项指南) |