Table of Contents
EasyPaper is a Human-in-the-Loop AI tool designed for large-scale literature review across fields or topics. It offers:
- A CS database with 80K top-tier papers from recent years and the whole arXiv.
- Accurate RAG using vector-less tree-based indexing and AI.
- Deep Research and Chat agents built with Langchain and DeepAgents.
The system works as a self-hosted React/FastAPI web application.
Make sure you have the followings:
- node.js for Frontend
- Python 3.12+ for Backend
- Marker API for PDF OCR
- One Text Embedding API key (Paid API or Ollama) for RAG
- One AI API key (Paid API or Ollama) for Chat and Deep Research
- Clone the repo
git clone https://github.com/sucv/EasyPaper.git
- Install NPM packages
# under EasyPaper/frontend/ npm install - Install Python packages
# under EasyPaper/backend/ pip install -r requirements.txt - (Optional) Download the database (containing 80K top-tier CS papers) from Release, and put it into
EasyPaper/chroma_db/# under EasyPaper/ mkdir chroma_db # Then put the downloaded chroma.sqlite3 into EasyPaper/chroma_db # Note that the database is indexed using the qwen3-embedding:8b from Ollama. # If you use the database, you have to specify qwen3-embedding:8b for embedding_config in your config.yaml
- Provide your API keys and/or Ollama base url
# under EasyPaper/ cp .env.example .env # Then put your API keys or Ollama base url there
- Edit the
EasyPaper/config.yamlto specify your providers, models and configurations - Launch the app
# under EasyPaper/ python start.py # Then visit http://localhost:5173/
EasyPaper starts with creating a Project. You may also continue from an existing Project. A Project can have multiple Idea, each Idea can have multiple reports from different aspects. The Research Agent and Chat Agent can reach any reports or indexed papers under the same Project.
EasyPaper supports three data sources:
- A sqlite3 database containing 80K top-tier CS papers crawled from a crawler.
- About 80% are downloadable (Top CS conferences).
- The rest 20% contain only title, author, year, and publisher (Mostly top CS journals and a few conferences)
- The arXiv API
- Follow the official example or ask AI
- Your own PDFs
- Could be the top journal papers you manually downloaded
- If you are non-CS people and have some PDFs to analyze just like the PaperQA.
Choose your query method from Vector, Boolean Expression, or arXiv, select the Year and Venue, then click Search. Select the interested paper in the results or check the citation count.
- Both the
VectorandBoolean Expressionwill query with theTitleonly. Currently there is no way to add other field. See Example for theBoolean Expression. - For
arXiv, it's the official API, which allows "Title,Author`, and many more. See the [official example].
If you are interested in adding more venues or years to the database, please refer to paperCrawler and crawl by yourself. Then generate the Chroma vectorstore by running:
# under EasyPaper/
populate_chroma.py your_crawl.csv
Add the selected paper to the Cart (also load your local PDFs to the cart), select or create an Idea and send the cart papers to your Idea Panel.
The Idea serve as the prompt, guiding the AI to find relevant information from the papers in an Idea Panel. The Idea can be named as one single word or sentences. It is your best interest to think about your Idea.
Content in the Idea Panel is preserved on your file system.
# Example 1 for getting the methodology details:
methodology details
# Example 2 for getting methodology and experiment results
method and experiment
# Example 3 for getting the related works and reference
relevant works of the proposed method and the reference sectionClick the Index , followed by the Retrieve. EasyPaper will download the paper, run the OCR, run the vector-less indexing, and retrieve the relevant nodes using AI.
Once the relevant segments are retrieved, you can view or export them from the Column Action.
Input your prompt in the text field, then click the Research. Once completed, you may view or export the report.
More than one Research can be conducted for an Idea, sequentially.
In the Paper QA panel, you may create or continue a chat, and also choose the Scope of the conversation to one or all Idea(s).
The chat history is preserved on your file system.
| Type | Venue | Year |
|---|---|---|
| Conference | CVPR, ICCV, ECCV, ICLR, ICML, Neurips, AAAI, IJCAI, MM, KDD, WWW, ACL, EMNLP, NAACL, Interspeech, ICASSP | Recent 5 years |
| Journal | Nature, PNAS, Nat. Mach. Intell, TPAMI, IJCV, Proc. IEEE, ACM Comput. Surv., J. ACM, Info. Fusion., SIGGRAPH, TNNLS, etc... | Recent 10 years |
All journals and some conferences (MM, KDD, WWW) papers are not downloadable (up to 20% of the whole database) These entries have only title, venue, year, and author, without abstract and pdf url. The user need to download manually should they match the query and interest.
EasyPaper degrades to a GUI-version PaperQA for non-CS papers, as it can only rely on user provided papers or arXiv papers in that case.
- Polish the Prompt
- Add more tools and skills
- Try to add non-CS papers to the database
- Added simple query cache.
- Added shimmer placeholder for the search table.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- The RAG chunking and indexing are inspired by PageIndex.
- The surprisingly accurate OCR is powered by Marker.
- The 80K papers are crawled using paperCrawler.
- The tool is made using Claude AI.






