Redis 8.0 Native Vector Sets (VADD & VSIM with Q8 Quantization)
#!/usr/bin/env bash
# Redis 8.0+ Built-In Vector Sets (VADD / VSIM / VSETATTR) Semantic Search Blueprint
# Requires Redis 8.0+ open-source unified binary (no external module configuration needed)
set -euo pipefail
REDIS_CLI="${REDIS_CLI:-redis-cli}"
# 1. Insert Embeddings With Q8 Quantization & JSON Attributes (Auto-creates HNSW Vector Set)
# Syntax: VADD <key> VALUES <dim> <f1> <f2> ... <element_id> [Q8 | BIN | NOQUANT] [SETATTR <json>]
${REDIS_CLI} VADD kb:chunks VALUES 4 0.14 -0.52 0.88 0.11 "doc:pg18-aio" Q8 \
SETATTR '{"engine":"postgresql","version":18,"tier":"public"}'
${REDIS_CLI} VADD kb:chunks VALUES 4 0.16 -0.49 0.85 0.08 "doc:pg18-uuidv7" Q8 \
SETATTR '{"engine":"postgresql","version":18,"tier":"public"}'
${REDIS_CLI} VADD kb:chunks VALUES 4 -0.61 0.72 0.12 -0.30 "doc:redis8-io" Q8 \
SETATTR '{"engine":"redis","version":8,"tier":"internal"}'
# 2. Filtered Similarity Search (Hybrid ANN + Arithmetic/Boolean Attribute Filter)
echo "--- Top Public PostgreSQL Matches ---"
${REDIS_CLI} VSIM kb:chunks VALUES 4 0.15 -0.50 0.87 0.10 \
WITHSCORES COUNT 5 \
FILTER '.engine == "postgresql" and .tier == "public" and .version >= 18'
# 3. Search Using an Existing Element's Vector ("More Like This" Item-to-Item Recommendation)
echo "--- Similar to doc:pg18-aio ---"
${REDIS_CLI} VSIM kb:chunks ELE "doc:pg18-aio" WITHSCORES COUNT 3
# 4. Inspect Vector Set Cardinality, Quantization Mode & HNSW Graph Metadata
${REDIS_CLI} VINFO kb:chunks
${REDIS_CLI} VGETATTR kb:chunks "doc:pg18-aio"