Vectors as first-class records. A hierarchical navigable small-world index sits on top of Strand-backed history, giving you content-addressed embeddings, sub-linear k-NN, and an audit trail that any peer can verify offline. Defaults — M=12, M0=24, ef=24 — tuned for agent-scale recall.
use basis::{Node, NodeConfig, Vector};
let node = Node::open(NodeConfig::default()).await?;
// Append a 768-dim embedding with metadata.
let id = node.add_vector(
Vector::from(embedding),
serde_json::json!({ "doc_id": "post:00a4" }),
).await?;
// k-NN search across 1M vectors at ef=24.
let hits = node.search_vectors(&query, /* k */ 8).await?;
for hit in hits {
println!("{} → score {:.4}", hit.id, hit.score);
}Start with the SDK or load the agent context. Every library is independently documented and versioned.