这个项目能做什么

dve(dve vector engine)是一个用于在 Apple 设备上本地创建和搜索向量嵌入的库。它使用 Zig 构建,同时也提供实验性的 Swift 绑定。该项目自称处于早期阶段并正在积极开发中,欢迎在 GitHub 上提交错误报告、问题和拉取请求。 使用方式的核心是打开一个用于存储向量数据库的目录、选择一个模型,然后对文本进行嵌入和搜索。在 Zig 示例中,使用 std.fs.cwd().makeOpenPath 创建目录,通过 dve.VectorEngine(.mpnet_embedding) 选择模型,并使用分配器和目录初始化引擎。文本条目通过 embedText 添加,其中键用于标识条目(通常是文件路径)。搜索接收查询字符串和结果缓冲区,返回按相似度排序的结果;示例展示了一个关于人工智能的查询匹配到键为 "doc1" 的条目。README 指向 examples 目录以获取 Zig 和 Swift 的完整可运行演示,并指向 USAGE.md 以了解安装、可用模型选项及其权衡,以及完整的使用细节。 其陈述的动机是:向量搜索对应用很有用,但设备端实现很难找到。开发者通常要在云 API(会增加成本和第三方依赖)与诸如 Hugging Face Transformers 之类的重型一体化框架之间做选择。README 认为,这在 Apple 平台上尤为突出:ML 框架绝大多数优先面向 Linux 服务器,CoreML 文档匮乏,而跨平台库很少能干净地集成到 macOS 或 iOS 应用中。dve 旨在填补这一空白,从 Apple 开始,同时将可移植性作为核心设计目标。 该项目列出了三条核心原则:可移植,意味着它应使用很少的库,以便能轻松用于任何平台;简单,意味着提供简单但可配置的接口以及合理的默认值;本地,意味着它应高性能运行且绝不进行网络调用。 路线图包括:添加 Linux 支持、使 Swift 绑定更加稳定、使 C/C++ 绑定更加稳定、iOS 支持、多模态嵌入支持、下载文本文档中的链接并嵌入它们、支持 mpnet 和 Apple NL 之外的多种模型类型,以及支持在单个进程中使用多个数据库实例。