About Retrieval Kit
Retrieval Kit is an MCP server in the RAG category: a small library for document ingestion, vector and keyword search to aid the creation of RAG systems and MCP servers for knowledge retrieval. It has been installed 0 times through Conduid.
Install
git clone https://github.com/nikelaz/retrieval-kitThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Retrieval Kit
Powered by Claude · Grounded in docs
Security checks
- ·README presentNot checked yet.
- ·License declaredNot checked yet.
- ·Tests presentNot checked yet.
- ·Dependencies pinnedNot checked yet.
- ·No dynamic code executionNot checked yet.
- ·Scoped permissionsNot checked yet.
README
Retrieval Kit
Retrieval Kit is a small Rust library for local document ingestion, vector search, keyword search, and MCP-style retrieval tool definitions.
It currently ships with:
- LanceDB storage for documents, chunks, vectors, and full-text search
- ONNX Runtime embeddings through
sentence-transformers/all-MiniLM-L12-v2 - single-document, batch, file, and glob ingestion
- semantic search, keyword search, document list/get/delete APIs
- JSON tool definitions and invocation helpers for retrieval integrations
Example
use retrieval_kit::{
DbEngine, EmbeddingsConfig, EmbeddingsProviderKind, RKit,
};
use std::path::PathBuf;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut rkit = RKit::new(
DbEngine::LanceDb {
path: PathBuf::from("./rkit-data"),
vector_dimensions: 384,
},
EmbeddingsProviderKind::Ort(EmbeddingsConfig::default()),
)?;
rkit.init().await?;
let ingested = rkit
.ingest_document("Rust makes local retrieval systems practical.".to_string())
.await?;
let semantic_results = rkit
.vector_search("local search in Rust".to_string(), 5)
.await?;
let keyword_results = rkit.keyword_search("Rust".to_string(), 5).await?;
let document = rkit.get_document(ingested.document_id).await?;
println!("{semantic_results:#?}");
println!("{keyword_results:#?}");
println!("{document:#?}");
Ok(())
}
Configuration Notes
The default embedder downloads model assets from Hugging Face unless local paths
are supplied in EmbeddingsConfig. To run fully offline, provide all four local
asset paths:
local_model_pathlocal_tokenizer_pathlocal_pooling_config_pathlocal_transformer_config_path
For the default all-MiniLM-L12-v2 model, set LanceDB vector_dimensions to
384. Initialization validates known embedder dimensions against the database
schema and fails early on mismatches.
Ingestion uses tokenizer-aware chunking when the ORT embedder is initialized, so
chunks are split before model truncation would drop content. The standalone
chunk_text helper remains character based.
Retrieval Tools
get_tool_definitions returns JSON schemas for:
semantic_searchkeyword_searchlist_documentsget_document
Use invoke_tool to dispatch those tools directly from JSON arguments. Search
tools default to a limit of 10 when no limit is provided.
Current Limits
- LanceDB and ORT are the only built-in backend/provider pair.
- Document metadata and metadata filters are not implemented yet.
- LanceDB writes are prevalidated and partially cleaned up on insert failure, but they are not fully transactional.
- Vector indexes are created only after enough rows exist for LanceDB's automatic vector index training. Keyword index and later vector index creation errors are returned to callers.
README mirrored from the source repository 4 months ago. The original is authoritative.