elips/docs
Start · 5 minutes

Getting started

ELIPS runs inside your process. No daemon, no network hop, no sidecar — a database is a directory on disk and an open handle in memory. This page walks the shortest path from cmake to a first text-first query.

Install

Build the core and the Python module from source. The native binary is required even when you only use Python — the bindings are a thin layer over the C++23 runtime.

terminal
cmake -S . -B build -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DELIPS_BUILD_PYTHON=ON
cmake --build build -j
export PYTHONPATH=$PWD/bindings/python

See Installation for the full toolchain matrix and platform notes.

Your first database

An ELIPS database is identified by a path. Pass ":memory:" for an ephemeral database, or a directory path for a persistent one. The first argument to connect is the path; dimension is the embedding width.

python
import elips

engine = elips.connect(":memory:", dimension=128)
arena = engine.arena("documents")

New databases attach the built-in local text embedder automatically. Disable that with use_default_text_embedder=False when you bring your own.

Ingest documents

Use RecordInput with the modern wrapper, or callplace_document() on a vault for the low-level API. Both accept text plus typed metadata.

python
arena.write_many([
    elips.RecordInput(text="alpha design note", meta={"kind": "design"}),
    elips.RecordInput(text="beta incident runbook", meta={"kind": "ops"}),
])

Query

probe_text runs a text-first search; probe_hybrid fuses a vector with text; probe takes a raw vector. Each returns typed Hit rows with distance, payload, and the original document.

python
for hit in arena.probe_text("alpha", top=2):
    print(hit.key, hit.distance, hit.text, hit.meta)

Where to go next

  • Configuration — dimension, metric, durability, embedders.
  • Core concepts — the mental model behind vaults, records, and lineage.
  • Architecture — how the planner, indexes, and persistence layer compose.
  • EQL — the declarative query language.