SurrealDB has support for traditional indexing, unique indexes and constraints, full-text search indexes, and vector-embedding indexing. We reimagined how indexing might be implemented - opting for a completely custom-built indexing engine, which sits within the SurrealDB core itself.
The indexing engine is agnostic to its deployment environment - whether running on top of IndexedDB in the browser, an embedded run-time in Rust or Python, or distributed over multiple nodes in a highly-scalable cluster. The indexing engine is integrated with the SurrealQL query language natively, without the need for an additional external query language, or for indexing-specific functions or plugins
The indexing logic is handled directly within the ACID transaction model of the database. For a developer using SurrealDB, this means that any indexed data is consistent and in-sync with the data in the database.
For traditional and unique indexes, SurrealDB supports simple single-field indexes, multi-field compound indexes, nested object and array fields, and also has support for flattened indexing of array data.
Using the full-text search indexing engine, SurrealDB allows developers to define custom analysers which specify exactly how their text data should be processed, with support for multiple tokenizers, advanced filters including Ngram, EdgeNGram, and Snowball, and support for 17 languages from English to Arabic.
With vector-embedding indexing, our initial implementation supports exact nearest neighbour retrieval for vectors of arbitrary size using Metric Trees, with support for HNSW-based approximate nearest neighbours retrieval coming in the future.
The query language in SurrealDB looks and works similarly to traditional-SQL, but allows for querying over time-series and connected graph data. SurrealQL is an advanced query language, with programming language functionality, that allows developers or data analysts to work with SurrealDB in the ways they choose.
Live Queries in SurrealDB enable a simple yet seamless way of building modern, responsive applications, whether connecting to SurrealDB as a traditional backend database, or when connecting directly to the database from the frontend.
Change Feeds enable SurrealDB to play a role within within the wider ecosystem of enterprise, cloud, or micro-service based platforms, giving users the ability to retrieve and sync changes from SurrealDB to external systems and platforms.
SurrealML enables machine learning models to be greatly simplified, ensuring reproducibility and consistency in machine learning pipelines. Running on our Rust engine, models can be built in Python, and imported in to SurrealDB for inference within the database runtime.