18 个版本 (6 个破坏性更新)
0.7.3 | 2024 年 8 月 7 日 |
---|---|
0.6.1 | 2024 年 6 月 12 日 |
0.3.0 | 2024 年 3 月 16 日 |
#249 in 数据库接口
每月 501 次下载
105KB
2K SLoC
介绍 OasysDB 👋
OasysDB 是一种混合向量数据库,允许您将类似 SQLite 和 Postgres 这样的关系型数据库用作向量数据的存储引擎,而无需使用它们来计算昂贵的向量操作。
这使得您可以将数据合并到一个数据库中,并确保数据完整性高,同时具有传统数据库的 ACID 属性,同时还有一个快速且隔离的向量索引层。
有关 OasysDB 的更多详细信息,请访问 文档。
快速入门 🚀
目前,OasysDB 仅适用于 Rust 项目作为嵌入式数据库。我们仍在努力实现 RPC API,以便您可以将 OasysDB 作为独立服务在任何语言中使用。
OasysDB 有 2 个主要组件: 数据库 和 索引。
-
数据库负责管理向量索引并将存储引擎(SQL 数据库)连接到索引作为数据源。OasysDB 使用 SQLx 处理 SQL 数据库操作。
-
索引实现向量索引算法,负责存储和查询向量。索引的功能和算法取决于我们创建索引时选择的算法。
嵌入在 Rust 中
要将 OasysDB 作为嵌入式向量数据库用于您的 Rust 项目,只需将其添加到项目的 Cargo.toml 文件中,或在终端运行以下命令
cargo add oasysdb
当作为嵌入式数据库运行 OasysDB 时,您将访问数据库和索引接口。在很少的情况下,如果您正在构建不使用 SQL 的项目,您可以直接使用索引接口。否则,下面的快速入门指南将向您展示如何使用数据库接口。
// Use the prelude module to import all necessary functionalities.
use oasysdb::prelude::*;
// Open OasysDB database with connection to SQLite.
// Connection is required for new database but optional for existing ones.
let sqlite = "sqlite://sqlite.db";
let db = Database::open("odb_test", Some(sqlite)).unwrap();
// Create a new index with IVFPQ algorithm with default parameters.
let params = ParamsIVFPQ::default();
let algorithm = IndexAlgorithm::IVFPQ(params);
// Setup where the data of the index will come from.
let config = SourceConfig::new("table", "id", "vector");
db.create_index("index", algorithm, config).unwrap();
// Search the index for nearest neighbors of a query vector.
let query = vec![0.0; 128];
let filters = ""; // Optional SQL-like filter for the search.
let results = db.search_index("index", query, 10, filters).unwrap();
更多资源
除了本快速入门指南中展示的内容外,OasysDB 还有更多内容。请访问 OasysDB 的 文档 以获取更多信息。此外,如果您有任何问题或需要即时响应的帮助,请加入我们的 Discord 服务器,我将尽力尽快帮助您。
贡献 🤝
为这个项目做贡献最简单的方式是给它加星并分享给你的朋友。这将帮助我们壮大社区,并使这个项目对可能需要它的其他人更加可见。
如果你想要更进一步,贡献你的专业知识,我们非常欢迎你的代码贡献。有关更多信息和建议,请参阅为OasysDB做出贡献。
如果你对这个领域有深入的经验,但没有时间贡献代码,我们也欢迎你的建议、建议或功能请求。我们还在寻找顾问,以帮助指导项目方向和路线图。
如果你对项目有任何兴趣,请加入我们的Discord服务器。帮助我们壮大社区,让OasysDB变得更好 😁
免责声明
该项目仍处于早期开发阶段。我们正在积极改进它,并预计API和功能将发生变化。我们不推荐在生产环境中使用。如果你确实如此使用,请告诉我们,我们可以尽快帮助你解决可能遇到的问题。
依赖项
~14–26MB
~420K SLoC