Full-Library Search in Zotero, Tested: 10,000 PDFs Indexed in 7 Minutes, Queried in 19.5 ms

Your Zotero library holds hundreds — maybe tens of thousands — of PDFs. "I remember a paper in my library that covered this"… and then what? Digging through tags, sorting by year, guessing keywords. Ten minutes later you're still looking. Zotero's built-in search can locate an item, but it won't answer a question — and it certainly won't synthesize conclusions across 50 papers for you.

PapersGPT's Full-Library Search exists to fix exactly this: check one box, and your entire library becomes a knowledge base you can question in natural language — returning direct answers with clickable citations, not a list of papers to open.

No concepts in this post — just three things: the benchmark numbers, how to use it, and where it pays off most.

The numbers first: 10,000 PDFs, still 19.5 ms

Official benchmarks ran complete indexing and query tests at two library sizes (data from the open-source repo, 2.7k+ stars):

Metric 1,000 PDFs 10,000 PDFs
Raw data 4.2 GB 42 GB (~170k pages)
Indexing time 51.5 s 7m 01s
Avg. query time 13.1 ms 19.5 ms
Memory (RSS) 353 MB 2.21 GB
Index size 100 MB 901 MB

Three numbers worth remembering:

  • 10× the library, +6.4 ms per query. 13.1 ms → 19.5 ms — less than a single network round-trip in your browser. In daily use, searching 100 papers feels identical to searching 10,000.
  • 170,000 pages in 7 minutes — a one-time cost. That's roughly 400 pages per second. After indexing, every query stays in the millisecond range, and newly added papers are indexed incrementally. No rebuilds.
  • 42 GB of raw PDFs compress to a 901 MB index (~2%) — which is why this runs comfortably on an ordinary laptop.

How it does it

Full-Library Search doesn't upload your PDFs to someone's cloud — everything happens on your machine:

  1. A native C++ engine. The indexing and retrieval core is written in C++ — the same class of language used by database engines and trading systems — with no Python/Node interpreter overhead on the search hot path.
  2. Structural indexing, not "fuzzy" vector semantic search. The engine understands document structure (where the title, sections, abstract, and references are) and pairs it with BM25 full-text ranking — the same ranking model behind modern search engines, far more reliable for scholarly text relevance than generic vector matching.
  3. Zero network round-trips. No upload queues, no server-side indexing, no API latency. The speed you see is the speed of your own machine.

From a user's perspective: four scenarios that pay off

1. Writing Related Work: let 50 papers line themselves up

"Which papers in my library use transformers for time-series forecasting, and what baselines do they compare against?"

Full-Library Search sweeps the whole library, ranks by relevance, and synthesizes — with a citation behind every claim that jumps straight to the source. You verify instead of searching.

2. Finding "that paper whose title I forgot"

"I read something months ago about mitigating hallucinations with synthetic data — German group, I think."

No title needed; describe the content. The search covers titles, authors, tags, abstracts, plus your own annotations and notes in Zotero — the margin note you wrote back then is the best query you could type today.

3. Conflicting-evidence checks: insurance before your defense

The advanced form of this is Global Library Synthesis: analyzing up to 10,000+ documents simultaneously to map research trends, term evolution, and — most importantly — contradictory conclusions. "What supporting and opposing evidence does my library contain on effect X?" A question that would take a week by hand takes minutes here.

4. Ten minutes before the group meeting

"Group the papers in my library on this biomarker by sample size, largest first, and summarize each group."

The answer lands in the chat window — copyable, savable as a Zotero note, with every citation traceable.

How it differs from Zotero's built-in search

Zotero built-in search PapersGPT Full-Library Search
Returns A list of items Direct answers + clickable citations
Cross-document synthesis ❌ ✅ Cross-paper comparison, conflicting-evidence analysis
Query style Keyword matching Natural language (any language)
Coverage Metadata + full-text index Full text + your annotations and notes
Typical latency Seconds ~19.5 ms to results
Summaries ❌ ✅ Powered by 30+ LLMs

They complement each other: Zotero's search finds the item; Full-Library Search gets you the answer.

Privacy: it works in Airplane Mode

Indexing and retrieval are 100% local with no cloud API dependency. In practice:

  • Airplane-mode friendly: search and indexing work fully offline.
  • Zero-byte leakage: your PDFs, notes, annotations, and queries never leave your machine.
  • A fully offline workflow: pair it with a local model via Ollama (or the built-in one-click open-source downloads) and the whole loop — question to answer — runs without a network. Ideal for unpublished data, internal corporate research, and compliance-sensitive work.

And if you want to plug your whole library into Claude Code, Cursor, or similar agents, the Zotero MCP Server can search the full library without even opening Zotero — same local index, on your terms.

Pair it with Literature Radar: discover → file → searchable

Literature Radar keeps adding new papers to your library (Explore to discover, Track to subscribe), while Full-Library Search turns every one of them — a ten-year-old classic or yesterday's preprint — into something you can question instantly. One manages the inflow; the other the retrieval. Together they close the loop.

Getting started

  1. Download the PapersGPT plugin (Zotero 7+), install it, and check Search entire library in the chat panel.
  2. Ask in natural language — answers come with citations.
  3. Full-Library Search is included in every paid plan; new users can try it first via the free trial.

FAQ

Are my PDFs uploaded to a server?

No. Indexing and retrieval run entirely locally — the benchmarks above were run without any external API dependency. Your PDFs, notes, and queries never leave your machine.

What library size is supported?

Anything from 100 to 10,000+ papers. The official benchmarks cover 1,000 PDFs (51.5 s indexing) and 10,000 PDFs (7m 01s indexing, 19.5 ms queries). Indexing cost scales roughly linearly; query latency stays constant.

How is this different from Zotero's built-in full-text search?

Zotero's full-text search returns a list of matching items you have to open and check one by one. Full-Library Search returns a synthesized answer across documents, with clickable citations, covering your annotations and notes too.

Can I ask questions in my own language?

Yes. The question language follows the LLM you select — Chinese, English, and others all work; the index itself handles full text in any language.

Does it work fully offline?

Indexing and retrieval do (purely local). Generating answers needs a network if you pick a cloud model (GPT, Claude, DeepSeek, etc.); switch to a local model via Ollama and the entire loop runs offline.