Wanted¶
What Lasagna would like to have next, and what "done" means for each. Every item has an open issue; comment there to claim it.
A method in Lasagna is measured against every other component of its stage, in a complete pipeline, on the same benchmarks, with everything else held fixed. If your paper's method is here, anyone can check it against theirs with one sweep, and the catalog lists it beside its paper.
| If you want to | Start with |
|---|---|
| Add your paper's method | Components |
| Make a first pull request | Good first issues |
| Add a dataset | Benchmarks |
| Run a study | Research questions |
| Run Lasagna in production | Deployment |
Components¶
Written for authors of RAG methods. The path is six commands, and
contributing components walks through each:
write the component, lasagna component validate, a smoke run, a sweep against a
built-in control, lasagna results significance, then lasagna results bundle.
The worked example there is a toy reranker against cross_encoder on 100 SciFact
queries: cross_encoder wins by +0.0913 ndcg@10 (d_z +0.38, p (Holm) 1.0e-04).
| Stage | Method | Paper | Note |
|---|---|---|---|
| document_processor | Unstructured | repository | No paper. Layout-aware parsing for mixed files. |
| embedder | jina-embeddings-v2, with late chunking | 2409.04701 | Late chunking exists as a setting; this is the Jina embedder behind it. |
| retriever | RAPTOR | 2401.18059 | The tree code exists behind enable_raptor; it needs registering as a retriever. |
| retriever | GraphRAG, LightRAG, HippoRAG, G-Retriever | 2404.16130, 2410.05779, 2405.14831, 2402.07630 | A small graph retriever exists behind enable_graph_retrieval; register it first. |
| retriever | ColBERTv2 with PLAID | 2112.01488 | Late interaction as a retriever, with its own index. |
| retriever | ColPali | 2407.01449 | Page images as the documents. |
| reranker | RankZephyr, RankVicuna | 2312.02724, 2309.15088 | Open-weight listwise rerankers, beside the built-in llm_listwise. |
| reranker | Setwise | 2310.09497 | Fewer LLM calls than listwise. |
| agentic_pipeline | Search-o1, Search-R1 | 2501.05366, 2503.09516 | A model that reasons and issues its own searches. |
| none yet | RECOMP, LongLLMLingua | 2310.04408, 2310.06839 | Context compression has no stage. Post a short design first: which stage, and what it returns. |
Already in Lasagna, so not on this list: BGE-M3, the ColBERT reranker,
llm_listwise, self_ask, ircot, MarkItDown, PyMuPDF4LLM, OpenTelemetry
tracing, and local models through Ollama, vLLM, Hugging Face and llama.cpp. The
component catalog lists all 55.
Done when:
- the component is registered with
paper=, and withclaims=when the paper reports a number on a benchmark Lasagna runs, so every leaderboard prints the paper's number beside yours; lasagna component validatepasses;- any weights it downloads are listed in
src/lasagna/core/model_licenses.py; - a results bundle compares it with a built-in control of its stage, at
n_runs: 1when only retrieval is measured and 3 or more with an LLM in the loop; - it ships in Lasagna through a pull request that meets
the pull request checklist,
or as a package of your own with a
lasagna_componentsentry point (template). Both count; a package of your own needs no review from us.
Your method is not in the table? Propose it with the component form. Open items are labeled component-wanted.
Good first issues¶
Small, with the files named and a test to write. Labeled good first issue.
- Claims for the built-in components. A component can declare the number its paper reports; no built-in declares one yet. Each one filled in puts a published number beside a reproduced one.
- A benchmark adapter. MIRACL and BRIGHT, below.
Benchmarks¶
Every built-in benchmark loads at a pinned revision, states its license and is
listed in DATASETS.md. Propose one with the
benchmark form;
open items are labeled
benchmark.
| Benchmark | Paper | Why |
|---|---|---|
| MIRACL | 2210.09984 | Lasagna's benchmarks are English. MIRACL has human-judged relevance in 18 languages; start with one. |
| BRIGHT | 2407.12883 | Relevance that needs reasoning, not word overlap. Shows whether a reranker or query enhancer helps when matching is not enough. |
To evaluate on data of your own, no adapter is needed: see your own data.
Research questions¶
Open questions that Lasagna can answer with a sweep. Write the plan before the run (the question, what changes, what is held fixed, and the result that would prove you wrong) with the research form. Either answer is worth publishing. Labeled research.
- Does composition hold with an open-weight generator? The paper tests whether the effect of changing one stage depends on the others, and every answer in it comes from one proprietary model, GPT-5.1.
- How much of the scaling loss survives out-of-domain distractors? The paper grows the corpus with distractors drawn from the same five domains as the corpus, and calls the result directional rather than a scaling law. Real corpora often grow with documents from other domains.
- How well does the judge agree with people? Faithfulness is scored by an LLM judge, and Lasagna does not yet measure that judge against human labels.
Deployment¶
For people running Lasagna as a service. Labeled deployment.
- Vector backends: Chroma, LanceDB, Elasticsearch. Six run today. Each new one is an adapter class and the shared conformance test, which says where an adapter differs. See vector backends.
- An OpenAI-compatible answer endpoint, with streaming. The REST API searches, but has no route that retrieves and then answers, and nothing streams.
- Weights & Biases and MLflow. A run writes a results bundle; nothing sends it to a tracker yet.
Also planned for 0.2.0, with no issue yet: export and import of a session's documents and chunks, a prebuilt Wikipedia index, and batched generation with vLLM. Open an issue before you start one.
How to claim an item¶
- Comment on its issue: "I'm taking this."
- Open a draft pull request within two weeks, or the claim lapses and someone else can take it.
- Before you ask for review, meet the bar.
Questions go to Discussions.