Skip to main content

redis_vl/
lib.rs

1#![deny(missing_docs)]
2//! # redis-vl
3//!
4//! Async-first Rust implementation of the [Redis Vector Library](https://github.com/redis/redis-vl-python).
5//!
6//! This crate provides vector search, semantic caching, message history, and
7//! routing on top of Redis. It targets feature parity with the Python `redisvl`
8//! package while using idiomatic Rust APIs.
9//!
10//! ## Quick start
11//!
12//! ```rust,no_run
13//! use redis_vl::{IndexSchema, SearchIndex, Vector, VectorQuery};
14//!
15//! let schema = IndexSchema::from_yaml_file("schema.yaml").unwrap();
16//! let index = SearchIndex::new(schema, "redis://127.0.0.1:6379");
17//! index.create().unwrap();
18//!
19//! let query = VectorQuery::new(
20//!     Vector::new(&[0.1_f32; 128] as &[f32]),
21//!     "embedding",
22//!     5,
23//! );
24//! let result = index.search(&query).unwrap();
25//! ```
26//!
27//! ## Feature flags
28//!
29//! - `openai` *(default)* – OpenAI-compatible vectorizer
30//! - `litellm` *(default)* – LiteLLM vectorizer
31//! - `azure-openai` – Azure OpenAI vectorizer
32//! - `bedrock` – AWS Bedrock vectorizer
33//! - `cohere` – Cohere vectorizer and reranker support
34//! - `voyageai` – VoyageAI vectorizer
35//! - `mistral` – Mistral vectorizer
36//! - `anthropic` – Anthropic adapter (Voyage AI-backed)
37//! - `vertex-ai` – Google Vertex AI vectorizer
38//! - `hf-local` – HuggingFace local ONNX embedding via `fastembed`
39//! - `sql` – SQL query support (`SQLQuery`)
40//! - `rerankers` – Reranker support (`CohereReranker`)
41
42/// Error types returned by the library.
43///
44/// The [`Error`](error::Error) enum wraps Redis, JSON, YAML, HTTP, I/O,
45/// schema validation, and input errors. All fallible public APIs return
46/// `Result<T, Error>`.
47pub mod error;
48
49/// Cache and storage extensions: [`EmbeddingsCache`](extensions::cache::EmbeddingsCache),
50/// [`SemanticCache`](extensions::cache::SemanticCache),
51/// [`MessageHistory`](extensions::history::MessageHistory),
52/// [`SemanticMessageHistory`](extensions::history::SemanticMessageHistory),
53/// and [`SemanticRouter`](extensions::router::SemanticRouter).
54pub mod extensions;
55
56/// Filter DSL for Redis Search queries.
57///
58/// Build composable filters with [`Tag`](filter::Tag), [`Text`](filter::Text),
59/// [`Num`](filter::Num), [`Geo`](filter::Geo), [`GeoRadius`](filter::GeoRadius),
60/// and [`Timestamp`](filter::Timestamp). Combine with `&` (AND), `|` (OR),
61/// and `!` (NOT).
62pub mod filter;
63
64/// Search index lifecycle and Redis transport.
65///
66/// [`SearchIndex`](index::SearchIndex) provides blocking operations while
67/// [`AsyncSearchIndex`](index::AsyncSearchIndex) provides Tokio-based async
68/// operations. Both support create, delete, load, fetch, search, query,
69/// batch, pagination, hybrid search, aggregate queries, and multi-vector queries.
70pub mod index;
71
72/// Query builders for Redis Search.
73///
74/// Includes [`VectorQuery`](query::VectorQuery), [`VectorRangeQuery`](query::VectorRangeQuery),
75/// [`TextQuery`](query::TextQuery), [`FilterQuery`](query::FilterQuery),
76/// [`CountQuery`](query::CountQuery), [`HybridQuery`](query::HybridQuery),
77/// [`AggregateHybridQuery`](query::AggregateHybridQuery),
78/// [`MultiVectorQuery`](query::MultiVectorQuery), and (with `sql` feature)
79/// `SQLQuery`.
80pub mod query;
81
82/// Reranker abstractions and provider adapters.
83///
84/// The [`Reranker`](rerankers::Reranker) and [`AsyncReranker`](rerankers::AsyncReranker)
85/// traits define the reranking interface. Enable the `rerankers` feature for
86/// `CohereReranker`.
87pub mod rerankers;
88
89/// Schema types and Redis Search schema serialization.
90///
91/// [`IndexSchema`](schema::IndexSchema) describes the structure of a Redis
92/// Search index including name, key prefix, storage type, and field definitions.
93/// Supports YAML/JSON parsing, multi-prefix indexes, and stopword configuration.
94pub mod schema;
95
96/// Embedding provider abstractions and adapters.
97///
98/// The [`Vectorizer`](vectorizers::Vectorizer) trait (sync) and
99/// [`AsyncVectorizer`](vectorizers::AsyncVectorizer) trait (async) define the
100/// embedding interface. Provider implementations are gated behind feature flags.
101pub mod vectorizers;
102
103pub use error::Error;
104pub use extensions::cache::{
105    CacheConfig, EmbeddingCacheEntry, EmbeddingCacheItem, EmbeddingsCache, SemanticCache,
106};
107pub use extensions::history::{Message, MessageHistory, MessageRole, SemanticMessageHistory};
108pub use extensions::router::{
109    DistanceAggregationMethod, Route, RouteMatch, RoutingConfig, SemanticRouter,
110};
111pub use filter::{BetweenInclusivity, FilterExpression, Geo, GeoRadius, Num, Tag, Text, Timestamp};
112pub use index::{
113    AsyncSearchIndex, QueryOutput, RedisConnectionInfo, SearchDocument, SearchIndex, SearchResult,
114};
115pub use query::{
116    AggregateHybridQuery, CountQuery, FilterQuery, GeoFilter, HybridCombinationMethod,
117    HybridPolicy, HybridQuery, MultiVectorQuery, PageableQuery, QueryKind, QueryLimit, QueryParam,
118    QueryParamValue, QueryRender, QueryString, SearchHistoryMode, SortBy, SortDirection, TextQuery,
119    Vector, VectorDtype, VectorInput, VectorQuery, VectorRangeQuery, VectorSearchMethod,
120};
121#[cfg(feature = "sql")]
122pub use query::{SQLQuery, SqlParam};
123pub use rerankers::{AsyncReranker, RerankDoc, RerankResult, Reranker};
124#[cfg(feature = "rerankers")]
125pub use rerankers::{CohereReranker, CohereRerankerConfig};
126pub use schema::{
127    Field, FieldKind, GeoFieldAttributes, IndexDefinition, IndexSchema, NumericFieldAttributes,
128    Prefix, StorageType, SvsCompressionType, TagFieldAttributes, TextFieldAttributes,
129    TimestampFieldAttributes, VectorAlgorithm, VectorDataType, VectorDistanceMetric,
130    VectorFieldAttributes,
131};
132#[cfg(feature = "anthropic")]
133pub use vectorizers::{AnthropicConfig, AnthropicTextVectorizer};
134pub use vectorizers::{
135    AsyncVectorizer, CustomTextVectorizer, EmbeddingRequest, LiteLLMTextVectorizer,
136    OpenAICompatibleConfig, OpenAITextVectorizer, Vectorizer,
137};
138#[cfg(feature = "azure-openai")]
139pub use vectorizers::{AzureOpenAIConfig, AzureOpenAITextVectorizer};
140#[cfg(feature = "bedrock")]
141pub use vectorizers::{BedrockConfig, BedrockTextVectorizer};
142#[cfg(feature = "cohere")]
143pub use vectorizers::{CohereConfig, CohereTextVectorizer};
144#[cfg(feature = "mistral")]
145pub use vectorizers::{MistralAITextVectorizer, MistralConfig};
146#[cfg(feature = "vertex-ai")]
147pub use vectorizers::{VertexAIConfig, VertexAITextVectorizer};
148#[cfg(feature = "voyageai")]
149pub use vectorizers::{VoyageAIConfig, VoyageAITextVectorizer};