<!-- Canonical: https://lucioduran.com/topics/rag
Language: en
Content-SHA256: edcc0f51af99038abbd71ef62c3a7d7a378d23606b081ac9d8ace9851c2ce9c1
-->

# RAG: retrieval, search and evaluation

RAG combines document retrieval with answer generation. My public work in this area supports studying each stage separately: which evidence is retrieved, how much it costs to find, and whether it supports an answer. Project pages link to the experiments’ corpora, commands and reports.

By [Lucio Durán](<https://lucioduran.com/>) · Uruguay

## Which decision are you making?

### When an answer lacks evidence

Inspect retrieval first. RAG Evaluation Workbench compares BM25, dense and hybrid retrieval; Chunking Ablation Suite examines how chunking affects passages, tables and cross-references.

### When language or budget changes

Measure those segments explicitly. Bilingual Retrieval Evals separates English and Spanish queries and documents; Reranker Budget Router studies reranking decisions under a pair budget.

### When storage or the corpus changes

Check filters, updates and version consistency. Vector Search Portability compares engines using identical vectors; Incremental RAG Index exercises atomic publication and interrupted updates.

## Projects and evidence

Each project page provides code, environment details, published results and limitations. The experiments describe those configurations; they do not establish results in client systems.

- ### [RAG Evaluation Workbench](<https://lucioduran.com/projects/rag-evaluation-workbench>)

  Reproducible RAG evaluation with BM25, dense and hybrid retrieval, local CPU inference, and separate retrieval and answer metrics.

  Python · License: MIT

  [Read the project](<https://lucioduran.com/projects/rag-evaluation-workbench>) · [Repository](<https://github.com/lucioduran/rag-evaluation-workbench>)
- ### [Chunking Ablation Suite](<https://lucioduran.com/projects/chunking-ablation-suite>)

  Fixed, structural and semantic chunking ablations using the same MiniLM model. Measures complete retrieved evidence and indexing cost for code, tables and cross references.

  Python · License: MIT

  [Read the project](<https://lucioduran.com/projects/chunking-ablation-suite>) · [Repository](<https://github.com/lucioduran/chunking-ablation-suite>) · [Release v0.1.0](<https://github.com/lucioduran/chunking-ablation-suite/releases/tag/v0.1.0>)
- ### [Bilingual Retrieval Evals](<https://lucioduran.com/projects/bilingual-retrieval-evals>)

  EN/ES retrieval evaluation with BM25 and multilingual MiniLM. Separates languages, directions, accents and cultural expressions, with replayable rankings and evidence.

  Python · License: MIT

  [Read the project](<https://lucioduran.com/projects/bilingual-retrieval-evals>) · [Repository](<https://github.com/lucioduran/bilingual-retrieval-evals>) · [Release v0.1.0](<https://github.com/lucioduran/bilingual-retrieval-evals/releases/tag/v0.1.0>)
- ### [Reranker Budget Router](<https://lucioduran.com/projects/reranker-budget-router>)

  Reranking router with hard pair budgets, development-fitted policies and a local MiniLM cross-encoder. Publishes quality, latency, decisions and routing errors.

  Python · License: MIT

  [Read the project](<https://lucioduran.com/projects/reranker-budget-router>) · [Repository](<https://github.com/lucioduran/reranker-budget-router>) · [Release v0.1.0](<https://github.com/lucioduran/reranker-budget-router/releases/tag/v0.1.0>)
- ### [Vector Search Portability](<https://lucioduran.com/projects/vector-search-portability>)

  Real hnswlib and sqlite-vec comparison with identical vectors, filters and updates. Recall against exact search, concurrent read load and postfilter result loss.

  Python · License: MIT

  [Read the project](<https://lucioduran.com/projects/vector-search-portability>) · [Repository](<https://github.com/lucioduran/vector-search-portability>) · [Release v0.1.0](<https://github.com/lucioduran/vector-search-portability/releases/tag/v0.1.0>)
- ### [Incremental RAG Index](<https://lucioduran.com/projects/incremental-rag-index>)

  Versioned SQLite RAG indexes with content-hash embedding reuse and atomic publication. Compares full and incremental rebuilds and injects process exits.

  Python · License: MIT

  [Read the project](<https://lucioduran.com/projects/incremental-rag-index>) · [Repository](<https://github.com/lucioduran/incremental-rag-index>) · [Release v0.1.0](<https://github.com/lucioduran/incremental-rag-index/releases/tag/v0.1.0>)
