AI applications
One store for the data
and the way you find it
RAG and agent memory usually mean three systems: a cache, a vector database, and a search index — with the same facts in all three, drifting apart. kevy has vector KNN, BM25 full-text and a change feed in the engine, over the keys you already wrote.
Why this fits
The expensive part of a RAG stack is not the search. It is keeping three copies of the truth in step: you write a document, then you have to remember to embed it, index it, and invalidate the cache. Every one of those is a place to forget.
In kevy the index is a declaration, not a pipeline. You tell the engine which keys and which field, and the write path keeps the index current. There is nothing to run afterwards and nothing to fall behind.
What kevy does not do is produce the embedding. There is no model in the engine and there will not be one — inference does not belong in a storage engine, and pretending otherwise would tie your vector format to our release cycle. You bring the vector; kevy stores it, indexes it and searches it.
How — vector search
# declare it once. the engine backfills, and answers
# INDEXBUILDING while it does.
IDX.CREATE idx:sem ON PREFIX doc: FIELD vec TYPE vector KIND ann DIM 768 DISTANCE cosine M 16 EF 200
# write a document the way you already write documents
HSET doc:4410 title "Ada on pipelining" vec "<768 f32, little-endian>"
# nearest ten. no separate system, no sync step.
IDX.QUERY idx:sem KNN "<query vector>" LIMIT 10
-> 1) doc:4410
2) doc:9982How — full text, and the two together
IDX.CREATE idx:ft ON PREFIX doc: FIELD title TYPE str KIND text
IDX.QUERY idx:ft MATCH "pipelining"
-> 1) 1) "doc:1"
2) "0.2877" # the BM25 score
# hybrid: fuse the text ranking and the vector ranking (RRF)
IDX.QUERY HYBRID idx:ft MATCH "pipelining" idx:sem KNN "<vector>" LIMIT 20 RRFK 60
# a change feed: tail every write from another process.
# needs [feed] enabled = true in kevy.toml
FEED.SHARDS -> (integer) 16
FEED.TAIL 0 -> 1) (integer) 1 # generation
2) (integer) 1 # offset
FEED.READ 0 1 0 COUNT 2 -> the writes themselves, replayableAn index build is O(N) over the matching keys, and the index answers INDEXBUILDING until it has caught up — plan the first build, do not discover it. The vector index is HNSW, which is approximate: recall is a tuning parameter (EF), not a guarantee. And there is no embedding model — if you were hoping kevy would call one for you, it will not, and you should know that before you plan around it. The vector guide and the text guide are specific.
llms-full.txt is one fetch: every command with its real cost and its real deviation from Redis, plus the complete text of all twenty-four guides. It is generated from the engine's own verb table, so it cannot drift from what the server does.