Skip to content

Rust API

Full API documentation is available on docs.rs/yantrikdb.

use yantrikdb::{YantrikDB, Embedder, RecallQuery};
// Open database
let mut db = YantrikDB::open("memory.db", 384)?;
// Set embedder
db.set_embedder(Box::new(MyEmbedder));
// Record
let emb = db.embed("User likes Rust")?;
db.record_with_embedding("User likes Rust", &emb, "semantic", 0.8, 0.5)?;
// Recall with builder pattern
let query_emb = db.embed("programming languages")?;
let results = db.recall_query(
RecallQuery::new(query_emb)
.top_k(5)
.memory_type("semantic")
.namespace("default")
)?;
// Graph operations
db.relate("user", "Rust", "prefers", 0.9)?;
let edges = db.edges(Some("user"))?;
// Autonomous cognition
let think_result = db.think(&Default::default())?;

Implement this trait to plug in any embedding model:

pub trait Embedder: Send + Sync {
fn embed(&self, text: &str) -> Result<Vec<f32>, Box<dyn Error + Send + Sync>>;
fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>, Box<dyn Error + Send + Sync>> {
texts.iter().map(|t| self.embed(t)).collect()
}
fn dim(&self) -> usize;
}
TypeDescription
YantrikDBMain database engine
MemoryA stored memory record
RecallResultA recall result with scoring
RecallQueryBuilder for composable queries
EdgeA graph edge
TriggerA proactive trigger
ThinkConfigConfiguration for the cognition loop
ThinkResultResult of a think() pass
PatternA discovered behavioral pattern
ConflictA detected contradiction