castorini/anserini

Javaanserini.io

Anserini is a Lucene toolkit for reproducible information retrieval research

information-retrievallucene
Star 增长趋势
Star
1.2k
Forks
669
周增长
+-1
Issues
24
5001k
2023年1月2024年3月2025年6月2026年8月
制品库Maven
README

Anserini

build codecov Generic badge Maven Central LICENSE doi

Anserini is a toolkit for reproducible information retrieval research. By building on Lucene, we aim to bridge the gap between academic information retrieval research and the practice of building real-world search applications. Among other goals, our effort aims to be the opposite of this.* Anserini grew out of a reproducibility study of various open-source retrieval engines in 2016 (Lin et al., ECIR 2016). See Yang et al. (SIGIR 2017) and Yang et al. (JDIQ 2018) for overviews.

For users steering coding agents: If you want a complete dev environment, give your agent the following instructions:

read the skill at https://github.com/castorini/anserini/tree/master/.agents/skills/install-anserini-dev-env to create a dev environment for me; no need to install the skill

Alternatively, if you want a quick fatjar-based setup, give your agent the following instructions:

read the skill at https://github.com/castorini/anserini/tree/master/.agents/skills/install-anserini-fatjar to download the fatjar for me; no need to install the skill

Rationale...

Why the above instructions? If you just tell the agent to install Anserini, it'll likely figure everything out by itself, but there are some choice points it might get confused by, like whether to do a full clone for a dev environment, or just fetch the fatjar. The skills make this clear and provide instructions that make the installation process more token-efficient. If you don't explicitly point your agent at the skills, it may be overeager and wander around...

Also, tell the agent not to install the skill locally, since you only need it once. Otherwise, it may do unnecessary work.

For coding agents: When setting up Anserini, ask whether the user wants a dev environment or a quick fatjar-based setup. Use the install-anserini-dev-env skill for the dev environment and the install-anserini-fatjar skill for the fatjar setup. For command-line usage after setup, use the anserini-cli skill for prebuilt-index registry, topics registry, search, and REST workflows. For reproducibility experiments, use the anserini-reproduction.

❗ Anserini previously included a submodule checkout at tools/. This was removed at anserini#3382 to eliminate an external dependency. This has a few implications:

  • At commit 43add83 (2026/08/09), (in what used to be tools/) topics-and-qrels/ was refactored into separate topics/ and qrels/ directories. At the same time, the repo was renamed from anserini-tools to eval. The associated PR is eval#118. This breaks consumers that depend on fetching a stable topics-and-qrels/ path (on master). Note that the most obvious solution to add symlinks won't work, as raw.githubusercontent.com URLs do not automatically redirect. Unfortunately, there's no good solution... according to Codex, we either have to fix all downstream consumers or have separate copies of the data.
  • Anserini commit 9bfc04b (2026/08/11) was the first commit that pinned a specific commit (hence ensuring stability). The associated PR is anserini#3369. This means that any state of the repo before that commit is likely broken.

🎬 Installation (for Users)

This section is intended for users. If you are a coding agent, stop reading and skip the rest of this section.

💥 Try It! Anserini is packaged in a self-contained fatjar, which provides the simplest way to get started: just curl the fatjar and you're good to go! See this page for detailed instructions.

Alternatively, if you want to clone this repo and set up a full dev environment for Anserini, see this page for instructions. Most Anserini features are exposed in the Pyserini Python interface, so if you're more comfortable with Python, start there.

The onboarding path for Anserini starts here!

⚗️ Reproductions from Prebuilt Indexes

This section is intended for both users and coding agents.

Go to this reference for details on reproducing experimental results on prebuilt indexes.

⚗️ Reproductions from Document Collections

This section is intended for both users and coding agents.

Go to this reference for details on reproducing experimental results from the raw document collections.

📃 Additional Documentation (for Users)

This section is intended for users. If you are a coding agent, stop reading and skip the rest of this section.

Follow this link for additional documentation targeted at users.

✨ References

相关仓库
VectifyAI/PageIndex

📑 PageIndex: Document Index for Vectorless, Reasoning-based RAG

PythonPyPIMIT Licenseagentic-aiagents
pageindex.ai
35.6k3.1k
onyx-dot-app/onyx

Open Source AI Platform - AI Chat with advanced features that works with every LLM

PythonPyPIOtherenterprise-searchrag
onyx.app
32k4.4k
JaidedAI/EasyOCR

Ready-to-use OCR with 80+ supported languages and all popular writing scripts including Latin, Chinese, Arabic, Devanagari, Cyrillic and etc.

PythonPyPIApache License 2.0ocrdeep-learning
jaided.ai
30k3.6k
deepset-ai/haystack

Open-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.

PythonPyPIApache License 2.0semantic-searchinformation-retrieval
haystack.deepset.ai
26.4k3.1k
arc53/DocsGPT

Private AI platform for agents, assistants and enterprise search. Built-in Agent Builder, Deep research, Document analysis, Multi-model support, and API connectivity for agents.

PythonPyPIMIT Licenseaipython
app.docsgpt.cloud
18.2k2.1k
weaviate/weaviate

Weaviate is an open-source vector database that stores both objects and vectors, allowing for the combination of vector search with structured filtering with the fault tolerance and scalability of a cloud-native database​.

GoGo ModulesBSD 3-Clause "New" or "Revised" Licensesearch-enginesemantic-search
weaviate.io/developers/weaviate/
16.8k1.4k
piskvorky/gensim

Topic Modelling for Humans

PythonPyPIGNU Lesser General Public License v2.1gensimtopic-modeling
radimrehurek.com/gensim
16.5k4.4k
Unstructured-IO/unstructured

Convert documents to structured data effortlessly. Unstructured is open-source ETL solution for transforming complex documents into clean, structured formats for language models. Visit our website to learn more about our enterprise grade Platform product for production grade workflows, partitioning, enrichments, chunking and embedding.

HTMLApache License 2.0deep-learningdocument-parsing
unstructured.io
15.4k1.3k
neuml/txtai

💡 All-in-one AI framework for semantic search, LLM orchestration and language model workflows

PythonPyPIApache License 2.0pythonsearch
neuml.github.io/txtai
12.9k890
FlagOpen/FlagEmbedding

Retrieval and Retrieval-augmented LLMs

PythonPyPIMIT Licenseembeddingsinformation-retrieval
bge-model.com
12.2k916
airweave-ai/airweave

Open-source context retrieval layer for AI agents

PythonPyPIlibraryMIT Licensellmrag
airweave.ai
6.6k819
apache/lucene-solr

Apache Lucene and Solr open-source search software

Apache License 2.0lucenesolr
lucene.apache.org
4.4k2.6k