Skip to content

Development

Loris Sauter edited this page Jun 18, 2024 · 2 revisions

Development with / to vitrivr-engine has various facettes:

  • Contributing to vitrivr-engine
  • Developing an application using vitrivr-engine as a dependency
  • Building a client to vitrivr-engine (possibly a UI)

Contributing to vitrivr-engine

If you want to contribute to vitrivr-engine, you are more than welcome to do so. There is a list of good first issues, if you want to start there or, just pick one of the open issues. In case your contribution would cover something new, it is best to first open an issue and assign yourself to it, such that we can integrate your work better.

Prerequisites

Setup

The project is set up as a multimodule Kotlin project:

Module Description Maven Dependency
vitrivr-engine-core The core library of the project, which provides basic interfaces & classes. Yes
vtirivr-engine-query Query / retrieval related extension to the core library with various retrievers and data manipulation operators. Yes
vitrivr-engine-index Indexing / ingestion related extension to the core library with various decoders and segmenters. Yes
vitrivr-engine-module-cottontaildb The database driver for the CottontailDB database, used for NNNS and other queries. Yes
vitrivr-engine-module-features Extension that contains specific indexing and retrieval implementations such as fulltext, colour, etc. Yes
vitrivr-engine-module-m3d Extension related to 3d model indexing and retrieval. Contains various feature modules and capability to process meshes. Yes
vitrivr-engine-module-fes Extension that can be used to harnes feature extraction provided by an external ML model server. Requires local generation of bindings: ./gradlew :vitrivr-engine-module-fes:generateFESClient Yes
vitrivr-engine-server A Javalin powered server providing an OpenApi documented REST API for both, ingestion and querying and a CLI, essentially the runtime of the project No

Depending on vitrivr-engine

If you want to build your own application which either entirely relies, or partially builds on vitrivr-engine, you can add the vitrivr-engine dependencies:

Releases: Gradle Groovy:

mavenCentral()

Snapshots: Gradle Groovy:

maven {
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }

Dependencies: Add one or multiple of the following to your dependencies:

implementation group: 'org.vitrivr', name: 'vitrivr-engine-core', version: '0.0.1-SNAPSHOT'
implementation group: 'org.vitrivr', name: 'vitrivr-engine-index', version: '0.0.1-SNAPSHOT'
implementation group: 'org.vitrivr', name: 'vitrivr-engine-module-features', version: '0.0.1-SNAPSHOT'
implementation group: 'org.vitrivr', name: 'vitrivr-engine-query', version: '0.0.1-SNAPSHOT'
implementation group: 'org.vitrivr', name: 'vitrivr-engine-module-cottontaildb', version: '0.0.1-SNAPSHOT'
implementation group: 'org.vitrivr', name: 'vitrivr-engine-module-m3d', version: '0.0.1-SNAPSHOT'

Please refer to the releases to find a list of releases (excludig snapshots).

Clients to vitrivr-engine

The intended way to facilitate a client using vitrivr-engine is via the OpenApi Specification. However, this requires a running instance of vitrivr-engine as a prerequisite. Using the openapi-generator, one can generate client-facing code for the desired setup.