← Back to all sparks
G

Groonga

DEVOPS
Velocity5.0

Full text search engine and column store

A veteran full-text engine quietly growing embedding functions alongside its string toolkit.

full-text-searchembeddingsvector-searchquery-functionswindows-packaging
Current state
Groonga ships small, precise releases roughly monthly, each documenting changes with runnable examples and crediting the reporter by name. The 16.0 line opened in February 2026 with an annual major release that deliberately carried no backward-incompatible changes. Recent work splits between conventional search functions — a new string_truncate(), vector support in between() — and a language model path where language_model_vectorize() consumes GGUF models from HuggingFace and TokenLanguageModelKNN handles query and passage prefixes. Contributor counts per release run to a handful of people.
Where it's heading
The embedding functions are the notable thread. A search engine of this vintage adding model-backed vectorization as ordinary functions, callable from the same query language as everything else, is positioning for hybrid retrieval without a separate vector store in the stack. The rest of the cadence is characteristic of the project: careful compatibility work, Windows packaging problems chased across multiple releases, and build-system fixes contributed by downstream packagers.
Prediction
Expect indexing support for the vector cases that currently work without an index — between() on vectors is explicitly flagged as unindexed — and further options on the language model functions. The project's no-breaking-changes stance on major releases suggests continuity rather than a rearchitecture.

Recent moves

  1. 2d ago

    New string_truncate() function with omission-mark handling

    Adds string_truncate(), which cuts a string to a character limit and substitutes an omission mark so the result including the mark hits the requested length — modeled explicitly on Rails' String#truncate. Also removes an incorrect compiler attribute for compatibility with recent GCC.

    View source ↗
  2. 26d ago

    between() accepts vector values, though without index support

    Extends between() to accept a vector as its first argument, returning true when any element falls in the range — useful for records carrying multiple values such as price lists. The notes are candid that this path does not yet use an index, which limits it to smaller result sets.

    View source ↗
  3. 2mo ago

    Second attempt at the missing Windows runtime DLL

    A Windows packaging fix for a runtime DLL missing from the 16.0.2 archive. The same fix text appears in the previous release, so this is the second attempt at closing the issue.

    View source ↗
  4. 2mo ago

    Missing Windows runtime DLL restored to the archive

    Ships the fix for a runtime DLL missing from the 16.0.2 Windows archive, affecting only that build. Packaging correction with no change for users on other platforms.

    View source ↗
  5. 3mo ago

    Ubuntu 26.04 support and an ODR fix that unblocks LTO builds

    Adds Ubuntu 26.04 LTS support and fixes a one-definition-rule violation that had been breaking link-time-optimized builds, alongside packaging corrections reported by downstream maintainers. Distribution and build-chain work rather than search capability.

    View source ↗
  6. 4mo ago

    language_model_vectorize() gains a prefix option

    Adds a prefix option to language_model_vectorize(), matching the query and passage prefix handling that embedding models frequently require, and exposes normalizer information in object_list output. Small additions, but on the part of Groonga that is newest — model-backed vectorization as a first-class query function.

    View source ↗