PaperQA2
Open-source RAG library for answering questions from scientific PDFs with citations
- Tool type
- Open-source Python package for retrieval-augmented question answering over documents
- Made for
- Researchers and developers working with scientific literature
- Runs on
- Local command line and Python environments, calling a configured LLM provider or local model server
- Installed with pip from PyPI; requires Python 3.11+.
What it does
PaperQA2 takes a set of local documents, including PDFs, text files, Microsoft Office files, and source code, and answers questions from them. It indexes and chunks the files, retrieves candidate passages, and produces a grounded answer with in-text citations. Metadata such as citation counts and journal quality is gathered from services including Semantic Scholar and Crossref.
People use it from the command line with the pqa tool or from Python code. Its default workflow lets a language agent search for papers, gather and rank evidence through re-ranking and contextual summarization, and generate an answer. Prior answers are indexed so earlier queries can be searched later.
The package suits researchers and developers who work with large collections of scientific literature and need cited answers. It is installed from PyPI and requires Python 3.11 or later. It calls an LLM, so users need an API key for a LiteLLM-compatible provider or a local open-source model server. Key limitations include model and API costs, public rate limits on metadata services without API keys, and the need to rebuild indexes created by older versions.
What it can do
- Answers questions over local PDF, text, Microsoft Office, and source code files with in-text citations
- Retrieves candidate papers via LLM-generated keyword queries and full-text search
- Ranks and re-scores evidence with LLM-based re-ranking and contextual summarization
- Fetches and stores paper metadata, including citation and journal quality data, from multiple providers
- Runs agentic workflows where a language agent iteratively refines queries and answers
- Provides an optional local embedding path via Sentence Transformers
Works with
- Semantic Scholar
- Crossref
- Unpaywall
- OpenAlex
- LiteLLM
Before you choose
- Pricing depends on the LLM and metadata API providers you use; the code itself carries no listed fee.
- Docs objects pickled from versions before version 5 are incompatible and must be rebuilt.
- Version naming changed in December 2025 to calendar versioning, while the PaperQA2 name still refers to paper-qa 5 and later.
Listed under
Get started
Requires an LLM API key or a local open-source LLM server.
- Install the package with pip install paper-qa>=5 in a Python 3.11+ environment.
- Set an LLM API key environment variable (for example OPENAI_API_KEY) or configure an open-source LLM server.
- Optionally set CROSSREF_API_KEY and SEMANTIC_SCHOLAR_API_KEY for large indexing jobs to avoid public rate limits.
Plans and prices
The code is open source under Apache-2.0. Costs come from the LLM and search/metadata APIs used at runtime, which are billed by those providers.
PaperQA2 is free to use. See their pricing page ↗
Sources for this overview
Product pages, documentation, and pricing checked 29 Oct 2026. Each source supports part of the overview; availability and prices can change.
- GitHub - Future-House/paper-qa: High accuracy RAG for answering questions from scientific documents with citations · GitHub ↗github.com
- PaperQA2 achieves SOTA performance on RAG-QA Arena | FutureHouse ↗www.futurehouse.org
- FutureHouse ↗www.futurehouse.org
- What is an AI Scientist? | FutureHouse ↗www.futurehouse.org
Ratings and reviews
No ratings for PaperQA2 yet.
What’s changed
Free accountSignals
Free accountData and security
Free accountCompare with similar tools
Free accountWhere this comes from
How we research- Company website
- github.com: product, pricing and policy pages
- Social accounts
- Accounts the company links, and its posts on X
- Human review
- Checked by a person
- knowledge_base
- manual_review
Last checked 29 Oct 2026. Every field keeps its source and date; unknown means we couldn’t confirm it.