Expand description
§minimemory
Base de datos híbrida embebida para Rust. Como SQLite para documentos + búsqueda vectorial + full-text search.
§Características
- Sin servidor: Librería embebida, solo importar y usar
- Ligera: Sin dependencias pesadas
- Rápida: Optimizada para alto rendimiento
- Híbrida: Combina vectores, BM25 y filtros de metadata
- Flexible: Múltiples métricas de distancia (Cosine, Euclidean, DotProduct)
§Inicio Rápido
use minimemory::{VectorDB, Config, Distance, IndexType};
// Crear base de datos en memoria
let config = Config::new(4) // 4 dimensiones
.with_distance(Distance::Cosine)
.with_index(IndexType::Flat);
let db = VectorDB::new(config).unwrap();
// Insertar vectores
db.insert("doc-1", &[0.1, 0.2, 0.3, 0.4], None).unwrap();
db.insert("doc-2", &[0.2, 0.3, 0.4, 0.5], None).unwrap();
// Buscar los 2 más similares
let query = [0.15, 0.25, 0.35, 0.45];
let results = db.search(&query, 2).unwrap();
assert_eq!(results.len(), 2);
println!("Más cercano: {} (dist: {})", results[0].id, results[0].distance);§Documentos con Metadata (Sin Vector)
use minimemory::{VectorDB, Config, Metadata};
// Crear DB con full-text search habilitado
let db = VectorDB::with_fulltext(
Config::new(3),
vec!["title".into(), "content".into()]
).unwrap();
// Insertar documento SIN vector (como MongoDB)
let mut meta = Metadata::new();
meta.insert("title", "Mi Post de Blog");
meta.insert("content", "Contenido del post...");
meta.insert("author", "Juan");
db.insert_document("post-1", None, Some(meta)).unwrap();
// Insertar documento CON vector (para búsqueda semántica)
let mut meta2 = Metadata::new();
meta2.insert("title", "Otro Post");
db.insert_document("post-2", Some(&[0.1, 0.2, 0.3]), Some(meta2)).unwrap();§Búsqueda Híbrida
use minimemory::{VectorDB, Config, Filter, HybridSearchParams};
let db = VectorDB::with_fulltext(
Config::new(3),
vec!["title".into(), "content".into()]
).unwrap();
// Búsqueda por keywords (BM25)
let results = db.keyword_search("rust programming", 10).unwrap();
// Búsqueda por filtros de metadata
let results = db.filter_search(
Filter::eq("author", "Juan"),
10
).unwrap();
// Búsqueda vectorial con filtro
let results = db.search_with_filter(
&[0.1, 0.2, 0.3],
10,
Filter::eq("category", "tech")
).unwrap();
// Búsqueda híbrida: vector + keyword + filtro
let params = HybridSearchParams::hybrid(
vec![0.1, 0.2, 0.3],
"rust",
10
).with_filter(Filter::eq("category", "tech"));
let results = db.hybrid_search(params).unwrap();§Filtros de Metadata
use minimemory::Filter;
// Operadores básicos
Filter::eq("status", "active");
Filter::ne("status", "deleted");
Filter::gt("score", 0.5f64);
Filter::gte("count", 10i64);
Filter::lt("price", 100.0f64);
// Operadores de colección
Filter::contains("tags", "rust");
Filter::starts_with("title", "How to");
// Operadores lógicos
Filter::eq("category", "tech")
.and(Filter::gt("score", 0.5f64))
.or(Filter::eq("featured", true));
// Acceso a campos anidados (dot notation)
Filter::eq("author.name", "Juan");
Filter::gt("metadata.views", 1000i64);§Métricas de Distancia
Distance::Cosine- Similitud coseno (ideal para embeddings de texto)Distance::Euclidean- Distancia L2 (para vectores normalizados)Distance::DotProduct- Producto punto (cuando la magnitud importa)
§Tipos Principales
VectorDB- Interfaz principal de la base de datosConfig- Configuración de la base de datosDistance- Métricas de distancia disponiblesIndexType- Tipos de índice (Flat, HNSW)Metadata- Metadata asociada a documentosSearchResult- Resultado de búsqueda vectorialHybridSearchResult- Resultado de búsqueda híbridaFilter- Filtros de metadataHybridSearchParams- Parámetros de búsqueda híbrida
Re-exports§
pub use index::IndexType;pub use quantization::QuantizationType;pub use quantization::QuantizedVector;pub use quantization::Quantizer;pub use query::Filter;pub use query::FilterOp;pub use query::OrderBy;pub use query::SortDirection;pub use search::HybridSearchParams;pub use search::SearchMode;
Modules§
- agent_
memory - Memoria Agéntica para Desarrollo de Código
- chunking
- Módulo de chunking para procesamiento de Markdown.
- index
- memory_
traits - Memory Traits - Domain-Agnostic Memory System
- partial_
index - Índices Parciales
- quantization
- Vector Quantization Module
- query
- Sistema de filtrado para consultas de metadata.
- replication
- Sistema de Replicación
- reranker
- Reranker Module
- search
- Motor de búsqueda híbrida.
- transfer
- Sistema de Transferencia de Conocimiento
Structs§
- Config
- Configuración para crear una VectorDB.
- Hybrid
Search Result - Resultado de búsqueda híbrida (vector + keyword + filtros).
- Metadata
- Metadata asociada a un vector.
- Paged
Result - Paginated result wrapper.
- Search
Result - Resultado de una búsqueda de similitud.
- Stored
Vector - Internal representation of a stored document.
- VectorDB
- Base de datos vectorial embebida.
Enums§
- Distance
- Métricas de distancia para similitud vectorial.
- Error
- Errors that can occur in minimemory
- Metadata
Value - Tipos de valores soportados en metadata.