reindexer
Embeddable, in-memory, document-oriented database with a high-level Query builder interface.
GraphCanon updated today · GitHub synced today
Decision brief
Reindexer is an embeddable and in-memory document-oriented database designed for rapid vector search and similarity evaluation using a high-level query builder interface.
Good fit when
- When you need advanced vector search capabilities with fast performance as Reindexer specializes in efficient vector searches.
- For applications requiring full-text search and hybrid searching options, as Reindexer supports these functionalities natively.
Avoid when
- When the requirement is for a distributed database system; Reindexer operates as an embeddable solution and does not support distributed configurations out-of-the-box.
- If your project strictly avoids C++ libraries due to team expertise or environmental restrictions, since Reindexer is primarily developed in C++.
- Hosting:
- self hosted - Reindexer functions as a self-hosted solution integrated into applications
- Pricing:
- freemium - As an open-source tool under the Apache-2.0 license, Reindexer is freely available without licensing fees.
- Requirements:
- Min 1 GB RAM; It is optimized for in-memory operations, so available memory directly impacts performance.
Observed Jul 12, 2026 · Source: enrich:decision_facts
Verify the decision
Maintenance and security
Full trust report- Maintenance
- Very active (0d since push)
- As of today
- Provenance
- Not a fork · Organization account
- As of today
- Security (OSV)
- No lockfile
- As of 1mo
Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.
Install
git clone https://github.com/Restream/reindexerSimilar tools
Same-category neighbours. No typed graph edges are catalogued for this tool yet.
Evidence and technical details
Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.
Overview
Reindexer is an embeddable and in-memory document-oriented database offering advanced querying capabilities via a Query builder interface, suitable for applications requiring rapid vector search and similarity evaluation.
Capability facts
- Languages
- c++
Source: github.language · Aug 23, 2026
Categories
Tags
README
Installation
Reindexer can run in 3 different modes:
embedded (builtin)Reindexer is embedded into application as static library, and does not require separate server process.embedded with server (builtinserver)Reindexer is embedded into the application as a static library and starts a server. In this mode, other clients can connect to the application via cproto, cprotos, ucproto, http, or https.standaloneReindexer runs as a standalone server; the application connects to Reindexer via network or Unix domain sockets.
Installation for server mode
In this mode Reindexer's Go-binding does not depend on reindexer's static library.
- Install Reindexer Server
- go get -a github.com/restream/reindexer/v5
Official docker image
The simplest way to get Reindexer server is to pull and run the Docker image from Docker Hub.
docker run -p9088:9088 -p6534:6534 -it reindexer/reindexer
Dockerfile
Installation for embedded mode
Prerequisites
Reindexer's core is written in C++20 and uses LevelDB as the storage backend, so CMake, a C++20 toolchain, and LevelDB must be installed before installing Reindexer. Also, OpenMP and BLAS/LAPACK libraries may be required for full vector index support.
To build Reindexer, g++ 10+, clang 15+, or mingw64 is required.
In embedded mode, Reindexer's Go binding depends on Reindexer's static libraries (core, server, and resource).
Get Reindexer using go.mod
This way is recommended and will fit for the most scenarios.
Go modules with go.mod do not allow to build C++ libraries in modules' directories. Go-binding will use pkg-config to detect libraries' directories.
Reindexer's libraries must be either installed from sources or from prebuilt package via package manager.
Then get the module:
go get -a github.com/restream/reindexer/v5
Get Reindexer using go.mod and replace
If you need modified Reindexer's sources, you can use replace like that.
- Download and build reindexer:
---
## Events subscription
When reindexer used as caching DB by multiple applications, it may be helpful to subscribe on the database updates (for example, if you need to invalidate internal application cache on some database event):
```go
import events "github.com/restream/reindexer/v5/events"
// Create subscription options for the specific event types (any documents modifications + transactions commits)
opts := events.DefaultEventsStreamOptions().WithDocModifyEvents().WithTransactionCommitEvents()
// Create events stream
stream := db.Subscribe(opts)
if err := stream.Error(); err != nil {
panic(err)
}
// Stream must be finalized. Finalization here basically means 'unsubscribe'
defer stream.Close(context.Background())
for {
// Reading events
event, ok := <- stream.Chan()
if !ok {
// Events channel is closed
fmt.Printf("Reindexer events stream was invalidated: %v\n", stream.Error())
break
}
// Event handling logic
...
}
Single Go binding supports up to 32 simultaneous streams. All the streams are handled together via separated connection (for cproto) or separated goroutine (for builtin/builtinserver).
In case of critical errors Chan() will be closed automatically. New stream must be created to renew events subscription in this case.
To configure subscription EventsStreamOptions-object should be used. It is possible to subscribe for the specific operations types and namespaces.
There are predefined events collections in streamopts.go, but any required types may also be specified via WithEvents-option. With default options events stream will receive all
For agents
This page has a .md twin and JSON over the API.