https://github.com/greptimeteam/vsag-sys
A Rust binding for the VSAG -- vector indexing and search library.
https://github.com/greptimeteam/vsag-sys
rust rust-lang vector vector-index vector-search vector-search-engine
Last synced: 6 months ago
JSON representation
A Rust binding for the VSAG -- vector indexing and search library.
- Host: GitHub
- URL: https://github.com/greptimeteam/vsag-sys
- Owner: GreptimeTeam
- License: apache-2.0
- Created: 2024-10-22T09:45:35.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-11-07T06:49:57.000Z (11 months ago)
- Last Synced: 2025-04-03T03:06:00.656Z (7 months ago)
- Topics: rust, rust-lang, vector, vector-index, vector-search, vector-search-engine
- Language: Rust
- Homepage:
- Size: 19.5 KB
- Stars: 8
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VSAG Rust Binding
A Rust binding for the [VSAG](https://github.com/alipay/vsag).
## Usage
Add this to your `Cargo.toml`:
```toml
[dependencies]
vsag-sys = "0.0.1"
```Try the example:
```rust
use vsag_sys::VsagIndex;let index_type = "hnsw";
let con_params = r#"{
"dtype": "float32",
"metric_type": "l2",
"dim": 128,
"hnsw": {
"max_degree": 16,
"ef_construction": 100
}
}"#;
let search_params = r#"{
"hnsw": {
"ef_search": 100
}
}"#;let index = VsagIndex::new(index_type, con_params).unwrap();
let ids: Vec = (0..num_vectors as i64).collect();
let vectors = (0..num_vectors)
.map(|_| {
(0..dim)
.map(|_| rand::random::())
.collect::>()
})
.collect::>();
let vectors_for_index: Vec = vectors.iter().flat_map(|v| v.iter().copied()).collect();let failed_ids = index
.build(num_vectors, dim, &ids, &vectors_for_index)
.unwrap();
assert_eq!(failed_ids.len(), 0);let query_vector: Vec = (0..dim).map(|_| rand::random()).collect();
let k = 10;
let output = index.knn_search(&query_vector, k, search_params).unwrap();
assert_eq!(output.ids.len(), k.min(num_vectors));
assert_eq!(output.distances.len(), k.min(num_vectors));
```