Skip to content

Cottontail DB is a column store vector database aimed at multimedia retrieval. It allows for classical boolean as well as vector-space retrieval (nearest neighbour search) used in similarity search using a unified data and query model.

License

Notifications You must be signed in to change notification settings

vitrivr/cottontaildb

Repository files navigation

Cottontail DB

Cottontail CI Maven Central

Cottontail DB is a column store aimed at multimedia retrieval. It allows for classical boolean as well as vector-space retrieval, i.e., nearest-neighbours lookup, as used in similarity search. If you're interested in using or contributing to Cottontail DB, please have a look at the Wiki.

Setup

Cottontail DB requires Java 11 or newer (Open JDK or Oracle JDK should both work). Please clone this repository using:

git clone https://github.com/vitrivr/cottontaildb.git

The entire project is a Gradle project and comes with a Gradle Wrapper so things should work pretty much out of the box.

Building and starting Cottontail DB

A distribution of Cottontail DB can be built from the sources using the Gradle tasks distTar or distZip. This distribution includes the actual DBMS as well as the CLI. Distributions are stored relatively to the project root in build/distributions as either TAR or ZIP file.

All the details as to how Cottontail DB can be setup and started can be found in the Wiki.

Using Cottontail DB Docker Image

Cottontail DB is available as Docker Image from DockerHub. Please have a look at the repository instructions and/or the Wiki for more information.

Connecting to Cottontail DB

Communication with Cottontail DB is facilitated by gRPC. By default, the gRPC endpoint runs on port 1865. To connect to Cottontail DB, you must first generate the model classes and stubs using the gRPC library of your preference based on the programming environment you use. You can find the latest gRPC definitions here.

For Kotlin and Java, there is also a Maven dependency, which includes pre-built stubs and models as well as a client API:

<dependency>
  <groupId>org.vitrivr</groupId>
  <artifactId>cottontaildb-client</artifactId>
  <version>0.16.0</version>
</dependency>

More information as to how to connect to and use Cottontail DB can be found in the Wiki and the example repository.

CLI / 🥕-LI

Cottontail DB comes with a CLI application called 🥕-LI. The CLI is bundled with the distribution but can also be built separately using the cottontaildb-cli:distTar or cottontaildb-cli:distZip gradle task.

Compatibility with vitrivr

Please refer to the compatibility matrix to check for compatibility with other vitrivr components.

Citation

We kindly ask you to refer to the following paper in publications mentioning or employing Cottontail DB:

Ralph Gasser, Luca Rossetto, Silvan Heller, Heiko Schuldt. Cottontail DB: An Open Source Database System for Multimedia Retrieval and Analysis. In Proceedings of 28th ACM International Conference on Multimedia (ACM MM 2020), Seattle, USA, 2020

Link: https://doi.org/10.1145/3394171.3414538

Bibtex:

@inproceedings{10.1145/3394171.3414538,
    author = {Gasser, Ralph and Rossetto, Luca and Heller, Silvan and Schuldt, Heiko},
    title = {Cottontail DB: An Open Source Database System for Multimedia Retrieval and Analysis},
    year = {2020},
    isbn = {9781450379885},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    doi = {10.1145/3394171.3414538},
    booktitle = {Proceedings of the 28th ACM International Conference on Multimedia},
    pages = {4465–4468},
    numpages = {4},
    keywords = {open source, multimedia retrieval, database, multimedia indexing, data management system},
    location = {Seattle, WA, USA},
    series = {MM '20}
}

Credits

Cottontail DB is based on the ideas presented in the following papers: