abu-rag
Retrieval-Augmented Generation system with document loading, splitting, embedding, and simple vector database operations.
Features
- Document
- Document Load (
DocumentLoadtrait)- text file
- Document chunk (
DocumentChunktrait)- fixed size
- paragraph
- Document Load (
- Embed, use abu-provider to support sentance embeddig
- VectorDB
- VectorIndex (
VectorIndextrait)- flat
- random hyperplane LSH
- inverted file
- VectorStorge (
VectorStoragetrait)- in memory
- sqlite
- VectorIndex (
Examples
let doc_process = new;
let embed_model = var?;
let chat_model = var?;
let openai = from_env?;
let embedder = new;
let index = new;
let storgae = new;
let mut vectordb = new;
// build rag
let chunks = doc_process.process?;
let embeded_chunks = embedder.embed_chunks.await?;
for in embeded_chunks.into_iter.enumerate
// use rag
let query = "令狐冲领悟了什么魔法?";
// build rag content
let query_embeding = embedder.embed_text.await?;
let retr_chunks = vectordb.search.await?;
let rag_content = retr_chunks.iter
.map
.
.join;
println!;