avocado_core/lib.rs
1//! AvocadoDB Core Engine
2//!
3//! The deterministic context compiler that fixes RAG.
4//!
5//! AvocadoDB replaces traditional vector databases' chaotic "top-k" retrieval
6//! with deterministic, citation-backed context generation using span-based
7//! compilation.
8//!
9//! # Key Features
10//!
11//! - **100% Deterministic**: Same query → same context, every time
12//! - **Citation-Backed**: Every piece of context has exact line number citations
13//! - **Token Efficient**: 95%+ token budget utilization (vs 60-70% in RAG)
14//! - **Fast**: < 500ms for 8K token context
15//!
16//! # Architecture
17//!
18//! ```text
19//! Query → Embed → [Semantic Search + Lexical Search] → Hybrid Fusion
20//! → MMR Diversification → Token Packing → Deterministic Sort → WorkingSet
21//! ```
22
23#![warn(missing_docs)]
24
25pub mod types;
26pub mod span;
27pub mod embedding;
28pub mod compiler;
29pub mod db;
30pub mod index;
31pub mod session;
32pub mod approx;
33
34// Re-export commonly used types
35pub use types::{
36 Artifact, Citation, CompilerConfig, Error, Result, ScoredSpan, Span, WorkingSet,
37 Session, Message, MessageRole, SessionWorkingSet,
38};
39
40pub use session::{SessionManager, SessionReplay, SessionTurn};
41
42/// The version of AvocadoDB
43pub const VERSION: &str = env!("CARGO_PKG_VERSION");
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn test_version() {
51 assert!(!VERSION.is_empty());
52 }
53
54 #[test]
55 fn test_working_set_hash_determinism() {
56 let ws1 = WorkingSet {
57 text: "Hello, world!".to_string(),
58 spans: vec![],
59 citations: vec![],
60 tokens_used: 3,
61 query: "test".to_string(),
62 compilation_time_ms: 100,
63 };
64
65 let ws2 = WorkingSet {
66 text: "Hello, world!".to_string(),
67 spans: vec![],
68 citations: vec![],
69 tokens_used: 3,
70 query: "test".to_string(),
71 compilation_time_ms: 200, // Different timing
72 };
73
74 // Hash should be the same because it only depends on text
75 assert_eq!(ws1.deterministic_hash(), ws2.deterministic_hash());
76 }
77}