Overview
LILT stores the vectors behind translation-memory matching and nearest-neighbour suggestions in Qdrant. The installer upgrades Qdrant in place, on its existing persistent volume, when you run the normal install command. Qdrant has two properties that make its upgrade different from every other component in LILT:- Qdrant migrates its storage one minor version at a time and cannot skip one. If your installation is more than one minor version behind the release you are installing, the installer stops rather than crossing several versions in a single restart, which can leave the storage partly migrated.
- Qdrant cannot be rebuilt from the LILT database. A snapshot is the only way to recover its contents.
Every command on this page assumes the LILT namespace is
lilt. If you
installed into a different namespace, substitute it for NAMESPACE.Connect to Qdrant
Everycurl command on this page reaches Qdrant through a port forward:
Collections
Qdrant stores vectors in collections. LILT creates and names them itself, one per organization and language direction, so you never choose a name — you look up the ones your installation has. Names look likememory_segments_source_organization_BM25_9058, where the trailing number is
the LILT organization ID.
Wherever a command on this page shows COLLECTION, substitute one of these
names:
Version
To see the version that is running, read the image from the pods rather than from the StatefulSet. A rollout that failed leaves the StatefulSet naming the new image while the storage on disk is still the old version:Where Qdrant keeps snapshots
By default, Qdrant writes snapshots to/qdrant/snapshots, which is a directory
on the same volume as its data. A volume you lose takes its snapshots with
it.
Because of that, always copy a snapshot off the pod, as the following procedure
does. To keep snapshots on their own volume instead, contact LILT support: the
change adds a second volume to the Qdrant StatefulSet, which Kubernetes cannot
apply to a running StatefulSet without recreating it.
Back up before you upgrade
Take a snapshot before every upgrade. Each version step changes the data on disk and cannot be reversed.-
Snapshot every collection and record its point count:
Keep
qdrant-backup.tsv. The point counts it records are how you tell a complete restore from a partial one. -
Confirm that each snapshot completed. A snapshot with a size of
0, or one missing from this list, did not finish:Substitute a collection name forCOLLECTION. -
Copy the snapshots off the pod:
kubectl cpis slow on a large collection. To download one snapshot over the API instead: - Record the Qdrant version you noted earlier alongside the files. A snapshot restores only into the version that produced it or the next minor version, so the version is part of the backup.
Upgrade
Qdrant is upgraded by one component script, which the full installer also runs. For a Qdrant version change you do not need to re-run the whole installer:helm upgrade, restarts the StatefulSet, and then waits up to
five minutes for the pod to become ready. Qdrant migrates its storage while it
starts, so on a large collection that wait can expire before the migration
finishes. If it does, the script reports a failed rollout; check the pod before
you re-run anything:
If the installer stops with a version error
The installer stops with a message like this:- Run the climb inside the maintenance window, before you upgrade LILT itself. The climb moves the Qdrant server ahead of the LILT services still talking to it, and those services are only tested against the Qdrant version their release shipped with. Open the maintenance window, climb, then run the installer, which upgrades LILT to matching versions. Never climb while LILT is serving traffic.
- Expect downtime at each step. A single-replica Qdrant stops and starts on the same volume, and it migrates the storage as it starts.
- Every step is irreversible. Take the snapshot first.
-
Find the repository the running pod uses. The intermediate versions ship in
your release under the same name:
-
Read the intermediate tags your release ships. Do not type version numbers
of your own: only the delivered tags exist in your registry, and their exact
form varies between releases:
The tags print lowest version first. Confirm that each one you need is present in your registry before you start, because an air-gapped installation cannot fetch a missing one part-way through the climb and there is no way back:Start from the tag just above the lowest version any pod reports, and skip any rung at or below it.
-
Read the chart pin from the install script, so these commands cannot go stale
against your release:
-
Apply each remaining tag from
$RUNGS, in order, one at a time. Wait for the pod to become ready before you move to the next — do not paste the whole sequence at once, because each step migrates the storage on disk:Substitute one tag from$RUNGSforRUNG_TAG, then repeat for the next. Confirm the running image before continuing, since a failed rollout leaves the StatefulSet naming the new tag while the storage is still on the old version: -
Run the component script again. The remaining step is a single minor
version, so the check passes and the script completes the upgrade with the
values your release ships:
Load
install.envfirst, and on AWS prefix the command withVALS_FILE=eks-values.yaml, as described in Upgrade.
Restore from a snapshot
A restore replaces the contents of the collection it targets. Run it in a maintenance window with LILT quiesced, otherwise LILT writes new vectors while the restore is in progress. Both procedures usepriority=snapshot, which makes the snapshot’s data win
over anything already in the collection. That is what a restore means. The
default, replica, keeps the live data instead.
When the snapshot is still on the Qdrant volume
When you are restoring a copy from outside the cluster
Verify the restore
Compare the point counts against the baseline you recorded:OK, and its status must be green:
yellow is still building its index. One that reports
red failed to restore, so recover it again.

