Skip to main content

Crate minimemory

Crate minimemory 

Source
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

§Tipos Principales

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.
HybridSearchResult
Resultado de búsqueda híbrida (vector + keyword + filtros).
Metadata
Metadata asociada a un vector.
PagedResult
Paginated result wrapper.
SearchResult
Resultado de una búsqueda de similitud.
StoredVector
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
MetadataValue
Tipos de valores soportados en metadata.

Type Aliases§

Result
Result type for minimemory operations
Vector
Un vector es un slice de valores f32.
VectorId
Identificador único para un vector.