RedisVL
A powerful, AI-native Go client library for Redis. Leverage the speed, flexibility, and reliability of Redis for real-time data to supercharge your AI application.
What is RedisVL?
RedisVL is a comprehensive Go library for building AI-native applications with Redis. It provides a high-level interface for:
-
Vector similarity search with advanced filtering
-
Schema-based index management from YAML or programmatic configuration
-
Hybrid queries combining vector search with metadata filters and full-text scoring
-
Semantic and embedding caching for LLM applications
-
Local, in-process embedding models via ONNX Runtime — no API keys required
-
Flexible storage with both Redis Hash and JSON support
RedisVL for Golang is a port of the popular Python RedisVL library, bringing these capabilities to the Go ecosystem with idiomatic, context-aware APIs and goroutine-safe clients.
Resources
Features
RedisVL for Golang offers powerful features for AI-native applications:
-
Index Management - Design search schema and indices with ease from YAML or programmatic configuration
-
Advanced Vector Search - KNN, range, hybrid, and multi-vector queries with complex filtering support
-
Embedding Creation - OpenAI, Azure OpenAI, Cohere, Mistral, VoyageAI, Ollama, or local Hugging Face models via ONNX Runtime
-
Reranking - Improve search result quality with Cohere, VoyageAI, or local cross-encoder models
-
Semantic Caching - Cache LLM responses with semantic similarity, increasing QPS and decreasing system cost — self-hosted or via the managed LangCache service
-
Embeddings Cache - Cache vector embeddings to avoid redundant computation
-
Message History - Store chat history with recency- or relevancy-based retrieval
-
Semantic Routing - Route queries to topics and intents with vector similarity
-
Storage Flexibility - Choose between Hash and JSON storage based on your needs
-
Tooling - The
rvlcommand-line interface and a built-in MCP server for AI agents
Installation
Add RedisVL to your project:
go get github.com/redis/redis-vl-golang@v0.2.0
For local embedding models (a separate module because it uses ONNX Runtime via cgo):
go get github.com/redis/redis-vl-golang/extensions/vectorize/hf@v0.2.0
Quick Example
package main
import (
"context"
"fmt"
redisvl "github.com/redis/redis-vl-golang"
"github.com/redis/redis-vl-golang/filter"
"github.com/redis/redis-vl-golang/query"
"github.com/redis/redis-vl-golang/schema"
)
func main() {
ctx := context.Background()
// Define the index schema
vectorField, _ := schema.NewVectorField("embedding", schema.VectorAttrs{
Dims: 384, Algorithm: schema.HNSW, Datatype: "float32",
DistanceMetric: schema.Cosine,
})
s, _ := schema.NewIndexSchema(
schema.IndexInfo{Name: "products", Prefixes: []string{"products"}},
schema.NewTextField("description"),
schema.NewTagField("category"),
schema.NewNumericField("price"),
vectorField,
)
// Create the index
index, _ := redisvl.NewSearchIndexFromURL(s, "redis://localhost:6379")
defer index.Close()
index.Create(ctx)
// Load data, then run a filtered vector search
q := query.NewVectorQuery("embedding", queryVector).
NumResults(5).
Filter(filter.Tag("category").Eq("electronics").
And(filter.Num("price").Le(100))).
ReturnFields("description", "category", "price")
results, _ := index.Query(ctx, q)
fmt.Println(results)
}
Connecting with the Community
Join the Redis community to get help, share your experiences, and contribute: