#vector-database #database-client #json #api-client #response #turbopuffer

turbopuffer-client

涡轮缓冲向量数据库的客户端

3个版本

0.0.3 2024年4月14日
0.0.2 2024年4月10日
0.0.1 2024年4月2日

#1486数据库接口

Download history 290/week @ 2024-04-09 21/week @ 2024-04-16

每月 151 次下载

MIT 许可证

34KB
168

turbopuffer-client

crates.io badge ci badge license badge

概述

这是一个用于与 turbopuffer 向量数据库交互的 Rust 客户端。

注意:目前,这个库不验证 JSON 主体,它只是将您构建的内容传递给涡轮缓冲。有关完整选项列表,请参阅 https://turbopuffer.com/docs

使用

通过 Cargo.toml 安装

[dependencies]
turbopuffer-client = "0.0.3"

使用从 turbopuffer.com 获取的 API 密钥创建客户端

let client = turbopuffer_client::Client::new(&api_key);

所有操作都限制在命名空间内

let ns = client.namespace("test");

使用 serde_json::json!() 构建正文,并使用 ns.upsert 发送请求来初始化命名空间

let body = json!({
  "ids": [1, 2, 3, 4],
  "vectors": [[0.1, 0.1], [0.2, 0.2], [0.3, 0.3], [0.4, 0.4]],
  "attributes": {
    "my-string": ["one", null, "three", "four"],
    "my-uint": [12, null, 84, 39],
    "my-string-array": [["a", "b"], ["b", "d"], [], ["c"]]
  }
});

let res = ns.upsert(&body).await.unwrap();

// This is the response type.
assert!(matches!(
  res,
  UpsertResponse {
    status: response::Status::Ok
  }
));

类似地,使用 ns.query 查询命名空间

let query = json!({
  "vector": [0.105, 0.1],
  "distance_metric": "euclidean_squared",
  "top_k": 1,
  "include_vectors": true,
  "include_attributes": ["my-string"],
});

let res = ns.query(&query).await.unwrap();

// Then you have access to the ResponseVectors:
let first = res.vectors.first().unwrap();
assert!(matches!(first.id, response::Id::Int(1)));

最后,您可以使用 ns.delete 删除命名空间

let res = ns.delete().await.unwrap();

// This is the response type.
assert!(matches!(
  res,
  DeleteResponse {
    status: response::Status::Ok
  }
));

贡献

我们热烈欢迎任何贡献,更多信息请参阅:CONTRIBUTING.md

许可证

MIT

依赖

~4–16MB
~217K SLoC