| Crates.io | tauri-plugin-velesdb |
| lib.rs | tauri-plugin-velesdb |
| version | 1.1.1 |
| created_at | 2025-12-22 09:41:42.931079+00 |
| updated_at | 2026-01-13 16:24:26.892993+00 |
| description | Tauri plugin for VelesDB - Vector search in desktop apps |
| homepage | |
| repository | https://github.com/cyberlife-coder/VelesDB |
| max_upload_size | |
| id | 1999437 |
| size | 231,937 |
A Tauri plugin for VelesDB - Vector search in desktop applications.
[dependencies]
tauri-plugin-velesdb = "0.1"
{
"dependencies": {
"@wiscale/tauri-plugin-velesdb": "^0.6.0"
}
}
npm install @wiscale/tauri-plugin-velesdb
# pnpm add @wiscale/tauri-plugin-velesdb
# yarn add @wiscale/tauri-plugin-velesdb
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_velesdb::init("./velesdb_data"))
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
import { invoke } from '@tauri-apps/api/core';
// Create a collection
await invoke('plugin:velesdb|create_collection', {
request: {
name: 'documents',
dimension: 768,
metric: 'cosine', // cosine, euclidean, dot, hamming, jaccard
storageMode: 'full' // full, sq8, binary
}
});
// List collections
const collections = await invoke('plugin:velesdb|list_collections');
console.log(collections);
// [{ name: 'documents', dimension: 768, metric: 'cosine', count: 0 }]
// Insert vectors
await invoke('plugin:velesdb|upsert', {
request: {
collection: 'documents',
points: [
{
id: 1,
vector: [0.1, 0.2, 0.3, /* ... 768 dims */],
payload: { title: 'Introduction to AI', category: 'tech' }
},
{
id: 2,
vector: [0.4, 0.5, 0.6, /* ... */],
payload: { title: 'Machine Learning Guide', category: 'tech' }
}
]
}
});
// Vector similarity search
const results = await invoke('plugin:velesdb|search', {
request: {
collection: 'documents',
vector: [0.15, 0.25, 0.35, /* ... */],
topK: 5
}
});
console.log(results);
// { results: [{ id: 1, score: 0.98, payload: {...} }], timingMs: 0.5 }
// Text search (BM25)
const textResults = await invoke('plugin:velesdb|text_search', {
request: {
collection: 'documents',
query: 'machine learning guide',
topK: 10
}
});
// Hybrid search (vector + text)
const hybridResults = await invoke('plugin:velesdb|hybrid_search', {
request: {
collection: 'documents',
vector: [0.1, 0.2, /* ... */],
query: 'AI introduction',
topK: 10,
vectorWeight: 0.7 // 0.0-1.0, higher = more vector influence
}
});
// Multi-query fusion search (MQG) ⭐ NEW
const mqResults = await invoke('plugin:velesdb|multi_query_search', {
request: {
collection: 'documents',
vectors: [
[0.1, 0.2, /* ... query 1 */],
[0.3, 0.4, /* ... query 2 */],
[0.5, 0.6, /* ... query 3 */]
],
topK: 10,
fusion: 'rrf', // 'rrf', 'average', 'maximum', 'weighted'
fusionParams: { k: 60 } // RRF parameter
}
});
// Weighted fusion (like SearchXP scoring)
const weightedResults = await invoke('plugin:velesdb|multi_query_search', {
request: {
collection: 'documents',
vectors: [[...], [...], [...]],
topK: 10,
fusion: 'weighted',
fusionParams: {
avgWeight: 0.6,
maxWeight: 0.3,
hitWeight: 0.1
}
}
});
// VelesQL query
const queryResults = await invoke('plugin:velesdb|query', {
request: {
query: "SELECT * FROM documents WHERE content MATCH 'rust' LIMIT 10",
params: {}
}
});
// Delete collection
await invoke('plugin:velesdb|delete_collection', { name: 'documents' });
| Command | Description |
|---|---|
create_collection |
Create a new vector collection |
delete_collection |
Delete a collection |
list_collections |
List all collections |
get_collection |
Get info about a collection |
upsert |
Insert or update vectors |
get_points |
Retrieve points by IDs |
delete_points |
Delete points by IDs |
search |
Vector similarity search |
batch_search |
Batch vector search (multiple queries) |
multi_query_search |
Multi-query fusion search ⭐ NEW |
text_search |
BM25 full-text search |
hybrid_search |
Combined vector + text search |
query |
Execute VelesQL query |
| Mode | Compression | Best For |
|---|---|---|
full |
1x | Maximum accuracy |
sq8 |
4x | Good accuracy/memory balance |
binary |
32x | Edge/IoT, massive scale |
| Metric | Best For |
|---|---|
cosine |
Text embeddings (default) |
euclidean |
Spatial/geographic data |
dot |
Pre-normalized vectors |
hamming |
Binary vectors |
jaccard |
Set similarity |
Add to your capabilities/default.json:
{
"permissions": [
"velesdb:default"
]
}
Or for granular control:
{
"permissions": [
"velesdb:allow-create-collection",
"velesdb:allow-search",
"velesdb:allow-upsert"
]
}
See the examples/basic-app directory for a complete Tauri app using this plugin.
| Operation | Latency |
|---|---|
| Vector search (10k vectors) | < 1ms |
| Text search (BM25) | < 5ms |
| Hybrid search | < 10ms |
| Insert (batch 100) | < 10ms |
Elastic License 2.0 (ELv2)
See LICENSE for details.