Zotero library search · Open source
RAG Assistant for Zotero
Semantic search across your Zotero library. Describe what's on your mind and it finds related passages in your PDFs, cited to the exact document and page. A library clerk, not a summariser. Runs fully local with Ollama or LM Studio — your library never leaves your machine.
What it does
RAG Assistant indexes the PDFs in your Zotero library and uses retrieval-augmented generation to answer questions grounded in their content. Every answer includes citations to the specific sources and page numbers used, so you can verify each claim and follow up on interesting findings rather than trusting a summary that obscures where the information came from.
It's built for researchers navigating large literature collections — preprints, embargoed work, sensitive material. With a local model via Ollama or LM Studio, your documents and queries never leave your machine. When you'd rather use a cloud model, it connects to OpenAI, Anthropic, Google, Mistral, Groq, or OpenRouter.
- Hybrid Search
- Combines dense semantic embeddings with BM25 keyword search, merged by Reciprocal Rank Fusion, then reranked by a cross-encoder that scores the query and each passage together. Captures both conceptual similarity and exact terminology, so specific terms and proper nouns aren't lost.
- Cited Answers
- Responses reference the specific documents and page numbers they draw from. An Evidence Panel shows the exact text passages used to generate each answer, and document titles open straight in Zotero or your PDF reader.
- Metadata Filtering
- Filter by year, tags, collections, authors, or item type — either through manual controls or by describing the constraint in natural language, which an LLM extracts into structured filters. If auto-extracted filters return nothing, the system retries without them to avoid over-restriction.
- Conversational Follow-ups
- Follow-up questions with pronouns or contextual references are rewritten into standalone queries before retrieval, so they match the corpus correctly without you repeating yourself. Sessions are trimmed to fit each provider's context window.
- Multiple LLM Providers
- Run local models via Ollama or LM Studio with no API key, or connect to OpenAI, Anthropic, Google, Mistral, Groq, or OpenRouter. Switch providers and models anytime; retrieval limits scale automatically to the active model's context window.
- Profiles
- Maintain separate workspaces with their own settings, libraries, and chat histories — one profile per research project. Academic scaffolding prompt templates are built in for common literature-review tasks.
How it works
PDFs are extracted with page-level granularity and split into roughly 800-character chunks with 200-character overlap, cut on sentence boundaries. Each chunk carries its item ID, title, authors, year, tags, collections, item type, and page number — the metadata behind both filtering and citations.
Embeddings are generated with SentenceTransformers (downloaded automatically on first use) and stored in ChromaDB. Choose from BGE-base (default, best quality), SPECTER (scientific papers), MiniLM-L6 (balanced), or MiniLM-L3 (fastest); each model creates its own collection, so you can switch without re-indexing if the index already exists. The backend is FastAPI, the frontend React and TypeScript, packaged as an Electron desktop app with automatic updates.
Install
On macOS, install via Homebrew. On Windows, install via winget. Linux .deb builds are available from the GitHub Releases page.
brew tap Quiet-Signals-Lab/rag-assistant-for-zotero brew install --cask rag-assistant-for-zotero
winget install aahepburn.RAGAssistantForZotero
System requirements
- macOS
- macOS 11 Big Sur or later. Apple Silicon (M1/M2/M3 or newer) only — there are no Intel builds. Signed and notarized.
- Windows
- Windows 10 or later (64-bit). Install via
wingetor the installer from Releases. May show a SmartScreen warning, as the build isn't code-signed. - Linux
- Debian/Ubuntu-based distributions (Ubuntu 18.04+, Debian 10+). Install the
.debpackage; Python and all dependencies are bundled. - Zotero
- The Zotero desktop client, installed with your library synced. The app reads your local
zotero.sqlitedatabase for PDFs and metadata.
Documentation
Setup and usage guides covering LLM providers, profiles, and prompting. Browse all docs →
- LLM Providers & API Keys
- Connect local models (Ollama, LM Studio) or cloud providers, and where to get each API key.
- Profiles
- Separate workspaces with their own settings, library, and chat history — one profile per project.
- Prompting & Generation
- How answers are generated, how to tune generation, and how the prompt is structured.
Frequently asked questions
Does my library leave my machine?
All indexing and processing happen locally. If you use a local model via Ollama or LM Studio, nothing leaves your machine at all. If you choose a cloud provider, only your queries and the retrieved document chunks are sent to their API — never your full library.
Do I need an API key?
Not if you run a local model with Ollama or LM Studio. Cloud providers (OpenAI, Anthropic, Google, Mistral, Groq, OpenRouter) require an API key you add in Settings.
Can it index scanned PDFs?
Only if they contain selectable text. Scanned documents without OCR cannot be indexed — run OCR on them first.
How long does indexing take?
It depends on library size. Initial indexing builds embeddings for every PDF and can take a while for large collections; subsequent runs only process new or changed items.
How much does it cost?
The app is free and open source under the GPL-3.0 licence. Your only potential cost is cloud LLM API usage, if you opt for a cloud provider instead of a local model.
Support
RAG Assistant for Zotero is built and maintained by Quiet Signals Lab. Bug reports and feature requests are welcome as GitHub issues; contributions are welcome too — open an issue to discuss significant changes first.
For issues, include your OS, the LLM provider you're using, and a description of what happened. For anything else, reach out directly.