A org.llm4s.vectorstore.VectorStore over one search index of a Redis server with the Redis Query Engine (Redis Stack, or Redis 8 and later), or of a Valkey server with valkey-search.
Each record is a hash at <keyPrefix><id> (see RedisConfig#effectivePrefix). The index is created on the first upsert if it does not exist (FT.CREATE ... ON HASH), with a VECTOR field sized to RedisConfig#dimensions (or to the first record) using the configured RedisVectorAlgorithm and RedisDistanceMetric. search is a KNN query whose metadata filter is a pre-filter, so topK results come back when that many match; count and list are filter queries, list sorted by write order.
Metadata is indexed as TAG values (see RedisQueries for the encoding), so every org.llm4s.vectorstore.MetadataFilter case is a query clause: Equals and In match entries, HasKey matches keys, Contains is a wildcard pattern (w'...', Redis Query Engine 2.6 or later; valkey-search does not support it) and And, Or and Not combine clauses. A wildcard expands to at most the server's maximum number of terms (search-max-prefix-expansions, 200 by default), so Contains over a key with more distinct values than that may miss records.
A search reply is limited by the server's search-max-search-results (10,000 by default), so list's offset + limit and search's topK may not exceed it. The store connects to one standalone server, not to a cluster.
The valkey-search in Valkey 9.0 answers only vector queries: there, search (with any filter but Contains) and the operations by ID or key work, while count and stats over an existing index, list and deleteByFilter are refused with the server's message.