Projects02 of 15
LocalScholar
A private, laptop-scale research assistant
Why it exists
Two scoping reviews needed more PDFs than any hosted chatbot would take. LocalScholar keeps a permanent library on the laptop, answers questions across all of it at once, and grounds every claim in a page you can open.
How it answers
- Retrieval: BM25 and dense retrieval, fused by reciprocal rank, then reranked by a cross-encoder.
- Citations: computed, not reported. Extracted values are matched back against the retrieved passages instead of being taken from the model.
- Refusal: when the library cannot answer, it says so.
What was measured
An ablation of the retrieval pipeline over 30 hand-written questions:
| Measure | From | To |
|---|---|---|
| Recall@5 | 0.833 | 0.933 |
| MRR | 0.672 | 0.840 |
Refusal was measured too: four questions the library provably cannot answer, and four correct refusals.
Computing citations took structured extraction from 6 of 15 fields to 12 of 15, while making every remaining value more trustworthy.
Built with
FastAPI, React, ONNX and Ollama, with 100 tests. It runs on an 8 GB M1 with no API key, and nothing leaves the machine.