·
Last changedVersion:
This version passed the hardening gate. Hardening applied 1 targeted change and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 1. Review findings closed: 1. Review findings remaining: 9.
None
None
Expand | File | Group | Subtype | Severity | Status |
|---|
No findings available
0 findings
Guidance for storing and searching embeddings in Redis. Covers index configuration, algorithm selection, hybrid filtering, and the RAG retrieval pattern with RedisVL.
VECTOR field in FT.CREATE (raw RQE) or a RedisVL IndexSchema.This skill builds on the redis-query-engine skill — vector fields live inside RQE indexes and share the same FT.CREATE / FT.SEARCH machinery.
Three settings must match the embedding model:
DIM — the model's output dimensionality (e.g. 1536 for OpenAI text-embedding-3-small).DISTANCE_METRIC — COSINE for normalized text embeddings (the common case), IP for unnormalized inner-product, L2 for raw Euclidean.TYPE / datatype — usually FLOAT32. Use FLOAT16 or quantized variants only when memory cost is a hard constraint.Raw RQE:
RedisVL:
See references/index-creation.md for redis-py and RedisVL variants.
| Algorithm | Speed | Accuracy | Memory | Best for |
|---|---|---|---|---|
HNSW | Fast (approximate) | ~95%+ recall (tunable) | Higher | Large datasets (>10k vectors), latency-sensitive |
FLAT | Slow (exact) | 100% | Lower | Small datasets (<10k), accuracy-critical |
Default to HNSW for any production-scale workload. Tuning levers:
M — connections per node (16–64). Higher = better recall, more memory.EF_CONSTRUCTION — build-time graph quality (100–500). Higher = better index, slower build.EF_RUNTIME — query-time candidate-list size. Higher = better recall, slower queries.Use FLAT when the corpus is small and you need exact results (e.g. semantic dedup over a few thousand items).
See references/algorithm-choice.md.
Apply attribute filters (TAG / NUMERIC) so the engine narrows the search space before the vector comparison. Don't fetch a wide result set and then filter client-side — that's slower and less accurate.
For text + vector fusion (BM25-weighted text scoring combined with vector similarity), use HybridQuery on Redis ≥ 8.4 with redis-py ≥ 7.1, or AggregateHybridQuery on older Redis. That's a different "hybrid" from filtered vector search above.
See references/hybrid-search.md.
Standard pipeline: embed the user query → vector search Redis → pass top-K context to the LLM.
Practical tips:
COSINE.index.load([...]) instead of one call per record.See references/rag-pattern.md.
Get started with chainctlchainctl skill install public/redis/redis-vector-search:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.cgr.dev/public/github.com/redis/skills/redis-vector-search:latest
MIT
.cursor-plugin/plugin.json
HARDENING.md
LICENSE
SKILL.md
references/algorithm-choice.md
references/hybrid-search.md
references/index-creation.md
references/rag-pattern.md