diff --git a/docs/api/message_history.md b/docs/api/message_history.md
new file mode 100644
index 000000000..240a4a9c6
--- /dev/null
+++ b/docs/api/message_history.md
@@ -0,0 +1,19 @@
+---
+description: LLM message history primitives for RedisVL.
+---
+
+# LLM Message History
+
+## SemanticMessageHistory
+
+::: redisvl.extensions.message_history.semantic_history.SemanticMessageHistory
+ options:
+ show_root_heading: true
+ inherited_members: true
+
+## MessageHistory
+
+::: redisvl.extensions.message_history.message_history.MessageHistory
+ options:
+ show_root_heading: true
+ inherited_members: true
diff --git a/docs/api/message_history.rst b/docs/api/message_history.rst
deleted file mode 100644
index 1f5be14fe..000000000
--- a/docs/api/message_history.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-*******************
-LLM Message History
-*******************
-
-SemanticMessageHistory
-======================
-
-.. _semantic_message_history_api:
-
-.. currentmodule:: redisvl.extensions.message_history.semantic_history
-
-.. autoclass:: SemanticMessageHistory
- :show-inheritance:
- :members:
- :inherited-members:
-
-
-MessageHistory
-==============
-
-.. _message_history_api:
-
-.. currentmodule:: redisvl.extensions.message_history.message_history
-
-.. autoclass:: MessageHistory
- :show-inheritance:
- :members:
- :inherited-members:
diff --git a/docs/api/query.md b/docs/api/query.md
new file mode 100644
index 000000000..92041cf12
--- /dev/null
+++ b/docs/api/query.md
@@ -0,0 +1,173 @@
+---
+description: Query builders for RedisVL: vector, range, hybrid, text, filter, count, multi-vector, and SQL.
+---
+
+# Query
+
+Query classes provide a structured way to define simple or complex queries for
+different use cases. Each class wraps the underlying redis-py
+[Query module](https://github.com/redis/redis-py/blob/master/redis/commands/search/query.py)
+with extended functionality for ease of use.
+
+## VectorQuery
+
+::: redisvl.query.VectorQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+!!! note "Runtime parameters for performance tuning"
+
+ `VectorQuery` supports runtime parameters for HNSW and SVS-VAMANA indexes
+ that can be adjusted at query time without rebuilding the index.
+
+ **HNSW:** `ef_runtime` controls search accuracy (higher = better recall,
+ slower search).
+
+ **SVS-VAMANA:** `search_window_size`, `use_search_history`, and
+ `search_buffer_capacity`.
+
+ ```python
+ from redisvl.query import VectorQuery
+
+ query = VectorQuery(
+ vector=[0.1, 0.2, 0.3],
+ vector_field_name="embedding",
+ num_results=10,
+ ef_runtime=150, # higher = better recall
+ )
+ ```
+
+## VectorRangeQuery
+
+::: redisvl.query.VectorRangeQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+!!! note "Runtime parameters for range queries"
+
+ `VectorRangeQuery` supports `epsilon` (HNSW & SVS-VAMANA) plus the
+ SVS-VAMANA-specific `search_window_size`, `use_search_history`, and
+ `search_buffer_capacity`.
+
+## AggregateHybridQuery
+
+::: redisvl.query.AggregateHybridQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+!!! note
+
+ `AggregateHybridQuery` uses `FT.AGGREGATE` and does **not** support runtime
+ parameters. For `ef_runtime` / `search_window_size` etc. use
+ [`HybridQuery`](#hybridquery), [`VectorQuery`](#vectorquery), or
+ [`VectorRangeQuery`](#vectorrangequery).
+
+!!! note
+
+ `HybridQuery` and `AggregateHybridQuery` apply linear combination
+ inconsistently. `HybridQuery` uses `linear_alpha` to weight the text
+ score, while `AggregateHybridQuery` uses `alpha` to weight the vector
+ score. Take care when switching between them.
+
+## HybridQuery
+
+::: redisvl.query.hybrid.HybridQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+
+## TextQuery
+
+::: redisvl.query.TextQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+## FilterQuery
+
+::: redisvl.query.FilterQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+## CountQuery
+
+::: redisvl.query.CountQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+## MultiVectorQuery
+
+::: redisvl.query.MultiVectorQuery
+ options:
+ show_root_heading: true
+ inherited_members: true
+ filters:
+ - "!^_"
+ - "!^add_filter$"
+ - "!^get_args$"
+ - "!^highlight$"
+ - "!^return_field$"
+ - "!^summarize$"
+
+## SQLQuery
+
+::: redisvl.query.SQLQuery
+ options:
+ show_root_heading: true
+
+!!! note
+
+ `SQLQuery` requires the optional `sql-redis` package. Install with
+ `pip install redisvl[sql-redis]`.
+
+ It accepts a `sql_redis_options` dictionary that is passed through to the
+ `sql-redis` executor. The most common option is `schema_cache_strategy`:
+ `"lazy"` (default) loads schemas on demand, `"load_all"` loads them all up
+ front.
diff --git a/docs/api/query.rst b/docs/api/query.rst
deleted file mode 100644
index 4602f4f75..000000000
--- a/docs/api/query.rst
+++ /dev/null
@@ -1,263 +0,0 @@
-
-*****
-Query
-*****
-
-Query classes in RedisVL provide a structured way to define simple or complex
-queries for different use cases. Each query class wraps the ``redis-py`` Query module
-https://github.com/redis/redis-py/blob/master/redis/commands/search/query.py with extended functionality for ease-of-use.
-
-
-VectorQuery
-===========
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: VectorQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-.. note::
- **Runtime Parameters for Performance Tuning**
-
- VectorQuery supports runtime parameters for HNSW and SVS-VAMANA indexes that can be adjusted at query time without rebuilding the index:
-
- **HNSW Parameters:**
-
- - ``ef_runtime``: Controls search accuracy (higher = better recall, slower search)
-
- **SVS-VAMANA Parameters:**
-
- - ``search_window_size``: Size of search window for KNN searches
- - ``use_search_history``: Whether to use search buffer (OFF/ON/AUTO)
- - ``search_buffer_capacity``: Tuning parameter for 2-level compression
-
- Example with HNSW runtime parameters:
-
- .. code-block:: python
-
- from redisvl.query import VectorQuery
-
- query = VectorQuery(
- vector=[0.1, 0.2, 0.3],
- vector_field_name="embedding",
- num_results=10,
- ef_runtime=150 # Higher for better recall
- )
-
- Example with SVS-VAMANA runtime parameters:
-
- .. code-block:: python
-
- query = VectorQuery(
- vector=[0.1, 0.2, 0.3],
- vector_field_name="embedding",
- num_results=10,
- search_window_size=20,
- use_search_history='ON',
- search_buffer_capacity=30
- )
-
-
-VectorRangeQuery
-================
-
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: VectorRangeQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-.. note::
- **Runtime Parameters for Range Queries**
-
- VectorRangeQuery supports runtime parameters for controlling range search behavior:
-
- **HNSW & SVS-VAMANA Parameters:**
-
- - ``epsilon``: Range search approximation factor (default: 0.01)
-
- **SVS-VAMANA Parameters:**
-
- - ``search_window_size``: Size of search window
- - ``use_search_history``: Whether to use search buffer (OFF/ON/AUTO)
- - ``search_buffer_capacity``: Tuning parameter for 2-level compression
-
- Example:
-
- .. code-block:: python
-
- from redisvl.query import VectorRangeQuery
-
- query = VectorRangeQuery(
- vector=[0.1, 0.2, 0.3],
- vector_field_name="embedding",
- distance_threshold=0.3,
- epsilon=0.05, # Approximation factor
- search_window_size=20, # SVS-VAMANA only
- use_search_history='AUTO' # SVS-VAMANA only
- )
-
-AggregateHybridQuery
-====================
-
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: AggregateHybridQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-.. note::
- The ``stopwords`` parameter in :class:`AggregateHybridQuery` (and :class:`HybridQuery`) controls query-time stopword filtering (client-side).
- For index-level stopwords configuration (server-side), see :class:`redisvl.schema.IndexInfo.stopwords`.
- Using query-time stopwords with index-level ``STOPWORDS 0`` is counterproductive.
-
-.. note::
- :class:`HybridQuery` and :class:`AggregateHybridQuery` apply linear combination inconsistently. :class:`HybridQuery` uses ``linear_alpha`` to weight the text score, while :class:`AggregateHybridQuery` uses ``alpha`` to weight the vector score. When switching between the two classes, take care to revise your ``alpha`` setting.
-
-.. note::
- **Runtime Parameters for Hybrid Queries**
-
- **Important:** AggregateHybridQuery uses FT.AGGREGATE commands which do NOT support runtime parameters.
- Runtime parameters (``ef_runtime``, ``search_window_size``, ``use_search_history``, ``search_buffer_capacity``)
- are only supported with FT.SEARCH commands.
-
- For runtime parameter support, use :class:`HybridQuery`, :class:`VectorQuery`, or :class:`VectorRangeQuery` instead of AggregateHybridQuery.
-
- Example with HybridQuery (supports runtime parameters):
-
- .. code-block:: python
-
- from redisvl.query import HybridQuery
-
- query = HybridQuery(
- text="query string",
- text_field_name="description",
- vector=[0.1, 0.2, 0.3],
- vector_field_name="embedding",
- vector_search_method="KNN",
- knn_ef_runtime=150, # Runtime parameters work with HybridQuery
- return_fields=["description"],
- num_results=10,
- )
-
-HybridQuery
-================
-
-
-.. currentmodule:: redisvl.query.hybrid
-
-
-.. autoclass:: HybridQuery
- :members:
- :inherited-members:
- :show-inheritance:
-
-.. note::
- The ``stopwords`` parameter in :class:`HybridQuery` (and :class:`AggregateHybridQuery`) controls query-time stopword filtering (client-side).
- For index-level stopwords configuration (server-side), see :class:`redisvl.schema.IndexInfo.stopwords`.
- Using query-time stopwords with index-level ``STOPWORDS 0`` is counterproductive.
-
-.. note::
- :class:`HybridQuery` and :class:`AggregateHybridQuery` apply linear combination inconsistently. :class:`HybridQuery` uses ``linear_alpha`` to weight the text score, while :class:`AggregateHybridQuery` uses ``alpha`` to weight the vector score. When switching between the two classes, take care to revise your ``alpha`` setting.
-
-TextQuery
-================
-
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: TextQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-.. note::
- The ``stopwords`` parameter in :class:`TextQuery` controls query-time stopword filtering (client-side).
- For index-level stopwords configuration (server-side), see :class:`redisvl.schema.IndexInfo.stopwords`.
- Using query-time stopwords with index-level ``STOPWORDS 0`` is counterproductive.
-
-
-FilterQuery
-===========
-
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: FilterQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-
-
-CountQuery
-==========
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: CountQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-
-
-MultiVectorQuery
-================
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: MultiVectorQuery
- :members:
- :inherited-members:
- :show-inheritance:
- :exclude-members: add_filter,get_args,highlight,return_field,summarize
-
-
-SQLQuery
-========
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: SQLQuery
- :members:
- :show-inheritance:
-
-.. note::
- SQLQuery requires the optional ``sql-redis`` package. Install with:
- ``pip install redisvl[sql-redis]``
-
-.. note::
- SQLQuery translates SQL SELECT statements into Redis FT.SEARCH or FT.AGGREGATE commands.
- The SQL syntax supports WHERE clauses, field selection, ordering, and parameterized queries
- for vector similarity searches.
-
-.. note::
- SQLQuery accepts a ``sql_redis_options`` dictionary that is passed through to
- ``sql-redis`` executor creation. The most common option is
- ``schema_cache_strategy``:
-
- - ``"lazy"`` (default) loads schemas on demand, which keeps one-off or
- narrow queries cheaper.
- - ``"load_all"`` eagerly loads all schemas up front, which can help when
- running many SQL queries across many indexes.
diff --git a/docs/api/reranker.md b/docs/api/reranker.md
new file mode 100644
index 000000000..237250685
--- /dev/null
+++ b/docs/api/reranker.md
@@ -0,0 +1,27 @@
+---
+description: Reranker providers for RedisVL: Cohere, HuggingFace cross-encoder, VoyageAI.
+---
+
+# Rerankers
+
+Rerankers reorder a candidate list using a higher-quality model after the
+initial vector or hybrid search. RedisVL provides adapters for several
+reranking services and local cross-encoders.
+
+## CohereReranker
+
+::: redisvl.utils.rerank.cohere.CohereReranker
+ options:
+ show_root_heading: true
+
+## HFCrossEncoderReranker
+
+::: redisvl.utils.rerank.hf_cross_encoder.HFCrossEncoderReranker
+ options:
+ show_root_heading: true
+
+## VoyageAIReranker
+
+::: redisvl.utils.rerank.voyageai.VoyageAIReranker
+ options:
+ show_root_heading: true
diff --git a/docs/api/reranker.rst b/docs/api/reranker.rst
deleted file mode 100644
index 3515b0ae4..000000000
--- a/docs/api/reranker.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-***********
-Rerankers
-***********
-
-CohereReranker
-==============
-
-.. _coherereranker_api:
-
-.. currentmodule:: redisvl.utils.rerank.cohere
-
-.. autoclass:: CohereReranker
- :show-inheritance:
- :members:
-
-
-HFCrossEncoderReranker
-======================
-
-.. _hfcrossencoderreranker_api:
-
-.. currentmodule:: redisvl.utils.rerank.hf_cross_encoder
-
-.. autoclass:: HFCrossEncoderReranker
- :show-inheritance:
- :members:
-
-
-VoyageAIReranker
-================
-
-.. _voyageaireranker_api:
-
-.. currentmodule:: redisvl.utils.rerank.voyageai
-
-.. autoclass:: VoyageAIReranker
- :show-inheritance:
- :members:
diff --git a/docs/api/router.md b/docs/api/router.md
new file mode 100644
index 000000000..7245b71f4
--- /dev/null
+++ b/docs/api/router.md
@@ -0,0 +1,35 @@
+---
+description: Semantic router for RedisVL.
+---
+
+# Semantic Router
+
+## SemanticRouter
+
+::: redisvl.extensions.router.SemanticRouter
+ options:
+ show_root_heading: true
+
+## RoutingConfig
+
+::: redisvl.extensions.router.RoutingConfig
+ options:
+ show_root_heading: true
+
+## Route
+
+::: redisvl.extensions.router.Route
+ options:
+ show_root_heading: true
+
+## RouteMatch
+
+::: redisvl.extensions.router.schema.RouteMatch
+ options:
+ show_root_heading: true
+
+## DistanceAggregationMethod
+
+::: redisvl.extensions.router.schema.DistanceAggregationMethod
+ options:
+ show_root_heading: true
diff --git a/docs/api/router.rst b/docs/api/router.rst
deleted file mode 100644
index 191d3e0fb..000000000
--- a/docs/api/router.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-
-***************
-Semantic Router
-***************
-
-.. _semantic_router_api:
-
-
-Semantic Router
-===============
-
-.. currentmodule:: redisvl.extensions.router
-
-.. autoclass:: SemanticRouter
- :members:
-
-
-Routing Config
-==============
-
-.. currentmodule:: redisvl.extensions.router
-
-.. autoclass:: RoutingConfig
- :members:
-
-
-Route
-=====
-
-.. currentmodule:: redisvl.extensions.router
-
-.. autoclass:: Route
- :members:
-
-
-Route Match
-===========
-
-.. currentmodule:: redisvl.extensions.router.schema
-
-.. autoclass:: RouteMatch
- :members:
-
-
-Distance Aggregation Method
-===========================
-
-.. currentmodule:: redisvl.extensions.router.schema
-
-.. autoclass:: DistanceAggregationMethod
- :members:
diff --git a/docs/api/schema.md b/docs/api/schema.md
new file mode 100644
index 000000000..74f53cff4
--- /dev/null
+++ b/docs/api/schema.md
@@ -0,0 +1,188 @@
+---
+description: IndexSchema and field type API reference for RedisVL.
+---
+
+# Schema
+
+Schemas describe an index: which fields exist, their types, attributes, and the
+storage backing them. Build them in YAML, in Python dictionaries, or directly
+from objects.
+
+A schema is composed of three top-level pieces:
+
+| Component | Description |
+|-----------|-------------|
+| `version` | Schema spec version. Current supported version is `0.1.0`. |
+| `index` | Index settings: name, key prefix, key separator, storage type. |
+| `fields` | Subset of fields to index, with type-specific attributes. |
+
+## IndexSchema
+
+::: redisvl.schema.IndexSchema
+ options:
+ members_order: source
+ filters:
+ - "!^_"
+ - "!^generate_fields$"
+ - "!^validate_and_create_fields$"
+ - "!^redis_fields$"
+
+## Index-Level Stopwords Configuration
+
+The `IndexInfo` class supports index-level stopwords configuration through the
+`stopwords` field. This controls which words are filtered during indexing
+(server-side), as opposed to query-time filtering (client-side).
+
+**Configuration Options:**
+
+- `None` (default): Use Redis default stopwords (~300 common words)
+- `[]` (empty list): Disable stopwords completely (`STOPWORDS 0`)
+- Custom list: Specify your own stopwords (e.g. `["the", "a", "an"]`)
+
+```python
+from redisvl.schema import IndexSchema
+
+# Disable stopwords to search for phrases like "Bank of Glasberliner"
+schema = IndexSchema.from_dict({
+ "index": {
+ "name": "company-idx",
+ "prefix": "company",
+ "stopwords": [], # STOPWORDS 0
+ },
+ "fields": [
+ {"name": "name", "type": "text"},
+ ],
+})
+```
+
+For detailed information about stopwords configuration and best practices, see
+the [Advanced Queries](../user_guide/11_advanced_queries.ipynb) guide.
+
+## Field Types
+
+### Text Fields
+
+::: redisvl.schema.fields.TextField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.TextFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+### Tag Fields
+
+::: redisvl.schema.fields.TagField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.TagFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+### Numeric Fields
+
+::: redisvl.schema.fields.NumericField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.NumericFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+### Geo Fields
+
+::: redisvl.schema.fields.GeoField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.GeoFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+## Vector Field Types
+
+All vector fields share a base set of attributes (`dims`, `algorithm`,
+`datatype`, `distance_metric`, `initial_cap`, `index_missing`) and add
+algorithm-specific configuration on top.
+
+### Common Vector Attributes
+
+::: redisvl.schema.fields.BaseVectorFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+### HNSW
+
+Graph-based approximate search with excellent recall. Best for general-purpose
+vector search (10K–1M+ vectors).
+
+::: redisvl.schema.fields.HNSWVectorField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.HNSWVectorFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+### SVS-VAMANA
+
+Fast approximate nearest neighbor search with optional compression. Best for
+large datasets (>100K vectors) on Intel hardware with memory constraints.
+Requires Redis >= 8.2.0 with Redis Search >= 2.8.10.
+
+::: redisvl.schema.fields.SVSVectorField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.SVSVectorFieldAttributes
+ options:
+ show_root_heading: true
+ members_order: source
+
+### FLAT
+
+Brute-force exact search. Best for small datasets (<10K vectors) requiring
+100% accuracy.
+
+::: redisvl.schema.fields.FlatVectorField
+ options:
+ show_root_heading: true
+
+::: redisvl.schema.fields.FlatVectorFieldAttributes
+ options:
+ show_root_heading: true
+
+## SVS-VAMANA Configuration Utilities
+
+For SVS-VAMANA indices, RedisVL provides utilities to help configure
+compression settings and estimate memory savings.
+
+### CompressionAdvisor
+
+::: redisvl.utils.compression.CompressionAdvisor
+ options:
+ show_root_heading: true
+
+### SVSConfig
+
+::: redisvl.utils.compression.SVSConfig
+ options:
+ show_root_heading: true
+
+## Vector Algorithm Comparison
+
+| Algorithm | Best for | Performance | Memory | Trade-offs |
+|-----------|----------|-------------|--------|------------|
+| **FLAT** | <100K vectors | 100% recall, O(n) | Minimal | Exact, slow at scale |
+| **HNSW** | 100K–1M+ vectors | 95–99% recall, O(log n) | Moderate | Fast approximate |
+| **SVS-VAMANA** | Memory-constrained, large | 90–95% recall, O(log n) | Low (with compression) | Intel-optimized, requires Redis >= 8.2 |
+
+For complete Redis field documentation, see the official
+[FT.CREATE reference](https://redis.io/commands/ft.create/).
diff --git a/docs/api/schema.rst b/docs/api/schema.rst
deleted file mode 100644
index aab08fc31..000000000
--- a/docs/api/schema.rst
+++ /dev/null
@@ -1,522 +0,0 @@
-***********
-Schema
-***********
-
-Schema in RedisVL provides a structured format to define index settings and
-field configurations using the following three components:
-
-.. list-table::
- :widths: 20 80
- :header-rows: 1
-
- * - Component
- - Description
- * - `version`
- - The version of the schema spec. Current supported version is `0.1.0`.
- * - `index`
- - Index specific settings like name, key prefix, key separator, and storage type.
- * - `fields`
- - Subset of fields within your data to include in the index and any custom settings.
-
-
-IndexSchema
-===========
-
-.. _indexschema_api:
-
-.. currentmodule:: redisvl.schema
-
-.. autoclass:: IndexSchema
- :members:
- :exclude-members: generate_fields,validate_and_create_fields,redis_fields
-
-
-Index-Level Stopwords Configuration
-====================================
-
-The :class:`IndexInfo` class supports index-level stopwords configuration through
-the ``stopwords`` field. This controls which words are filtered during indexing
-(server-side), as opposed to query-time filtering (client-side).
-
-**Configuration Options:**
-
-- ``None`` (default): Use Redis default stopwords (~300 common words)
-- ``[]`` (empty list): Disable stopwords completely (``STOPWORDS 0``)
-- Custom list: Specify your own stopwords (e.g., ``["the", "a", "an"]``)
-
-**Example:**
-
-.. code-block:: python
-
- from redisvl.schema import IndexSchema
-
- # Disable stopwords to search for phrases like "Bank of Glasberliner"
- schema = IndexSchema.from_dict({
- "index": {
- "name": "company-idx",
- "prefix": "company",
- "stopwords": [] # STOPWORDS 0
- },
- "fields": [
- {"name": "name", "type": "text"}
- ]
- })
-
-**Important Notes:**
-
-- Index-level stopwords affect what gets indexed (server-side)
-- Query-time stopwords (in :class:`TextQuery` and :class:`AggregateHybridQuery`) affect what gets searched (client-side)
-- Using query-time stopwords with index-level ``STOPWORDS 0`` is counterproductive
-
-For detailed information about stopwords configuration and best practices, see the
-Advanced Queries user guide (``docs/user_guide/11_advanced_queries.ipynb``).
-
-
-Defining Fields
-===============
-
-Fields in the schema can be defined in YAML format or as a Python dictionary, specifying a name, type, an optional path, and attributes for customization.
-
-**YAML Example**:
-
-.. code-block:: yaml
-
- - name: title
- type: text
- path: $.document.title
- attrs:
- weight: 1.0
- no_stem: false
- withsuffixtrie: true
-
-**Python Dictionary Example**:
-
-.. code-block:: python
-
- {
- "name": "location",
- "type": "geo",
- "attrs": {
- "sortable": true
- }
- }
-
-Basic Field Types
-=================
-
-RedisVL supports several basic field types for indexing different kinds of data. Each field type has specific attributes that customize its indexing and search behavior.
-
-Text Fields
------------
-
-Text fields support full-text search with stemming, phonetic matching, and other text analysis features.
-
-.. currentmodule:: redisvl.schema.fields
-
-.. autoclass:: TextField
- :members:
- :show-inheritance:
-
-.. autoclass:: TextFieldAttributes
- :members:
- :undoc-members:
-
-Tag Fields
-----------
-
-Tag fields are optimized for exact-match filtering and faceted search on categorical data.
-
-.. autoclass:: TagField
- :members:
- :show-inheritance:
-
-.. autoclass:: TagFieldAttributes
- :members:
- :undoc-members:
-
-Numeric Fields
---------------
-
-Numeric fields support range queries and sorting on numeric data.
-
-.. autoclass:: NumericField
- :members:
- :show-inheritance:
-
-.. autoclass:: NumericFieldAttributes
- :members:
- :undoc-members:
-
-Geo Fields
-----------
-
-Geo fields enable location-based search with geographic coordinates.
-
-.. autoclass:: GeoField
- :members:
- :show-inheritance:
-
-.. autoclass:: GeoFieldAttributes
- :members:
- :undoc-members:
-
-Vector Field Types
-==================
-
-Vector fields enable semantic similarity search using various algorithms. All vector fields share common attributes but have algorithm-specific configurations.
-
-Common Vector Attributes
-------------------------
-
-All vector field types share these base attributes:
-
-.. autoclass:: BaseVectorFieldAttributes
- :members:
- :undoc-members:
-
-**Key Attributes:**
-
-- `dims`: Dimensionality of the vector (e.g., 768, 1536).
-- `algorithm`: Indexing algorithm for vector search:
-
- - `flat`: Brute-force exact search. 100% recall, slower for large datasets. Best for <10K vectors.
- - `hnsw`: Graph-based approximate search. Fast with high recall (95-99%). Best for general use.
- - `svs-vamana`: SVS-VAMANA (Scalable Vector Search with VAMANA graph algorithm) provides fast approximate nearest neighbor search with optional compression support. This algorithm is optimized for Intel hardware and offers reduced memory usage through vector compression.
-
- .. note::
- For detailed algorithm comparison and selection guidance, see :ref:`vector-algorithm-comparison`.
-
-- `datatype`: Float precision (`bfloat16`, `float16`, `float32`, `float64`). Note: SVS-VAMANA only supports `float16` and `float32`.
-- `distance_metric`: Similarity metric (`COSINE`, `L2`, `IP`).
-- `initial_cap`: Initial capacity hint for memory allocation (optional).
-- `index_missing`: When True, allows searching for documents missing this field (optional).
-
-HNSW Vector Fields
-------------------
-
-HNSW (Hierarchical Navigable Small World) - Graph-based approximate search with excellent recall. **Best for general-purpose vector search (10K-1M+ vectors).**
-
-.. dropdown:: When to use HNSW & Performance Details
- :color: info
-
- **Use HNSW when:**
-
- - Medium to large datasets (100K-1M+ vectors) requiring high recall rates
- - Search accuracy is more important than memory usage
- - Need general-purpose vector search with balanced performance
- - Cross-platform deployments where hardware-specific optimizations aren't available
-
- **Performance characteristics:**
-
- - **Search speed**: Very fast approximate search with tunable accuracy (via ``ef_runtime`` at query time)
- - **Memory usage**: Higher than compressed SVS-VAMANA but reasonable for most applications
- - **Recall quality**: Excellent recall rates (95-99%), tunable via ``ef_runtime`` parameter
- - **Build time**: Moderate construction time, faster than SVS-VAMANA for smaller datasets
-
- **Runtime parameters** (adjustable at query time without rebuilding index):
-
- - ``ef_runtime``: Controls search accuracy (higher = better recall, slower search). Default: 10
- - ``epsilon``: Range search approximation factor for VectorRangeQuery. Default: 0.01
-
-.. autoclass:: HNSWVectorField
- :members:
- :show-inheritance:
-
-.. autoclass:: HNSWVectorFieldAttributes
- :members:
- :undoc-members:
-
-**HNSW Examples:**
-
-**Balanced configuration (recommended starting point):**
-
-.. code-block:: yaml
-
- - name: embedding
- type: vector
- attrs:
- algorithm: hnsw
- dims: 768
- distance_metric: cosine
- datatype: float32
- # Index-time parameters (set during index creation)
- m: 16 # Graph connectivity
- ef_construction: 200 # Build-time accuracy
- # Note: ef_runtime can be set at query time via VectorQuery
-
-**High-recall configuration:**
-
-.. code-block:: yaml
-
- - name: embedding
- type: vector
- attrs:
- algorithm: hnsw
- dims: 768
- distance_metric: cosine
- datatype: float32
- # Index-time parameters tuned for maximum accuracy
- m: 32
- ef_construction: 400
- # Note: ef_runtime=50 can be set at query time for higher recall
-
-SVS-VAMANA Vector Fields
-------------------------
-
-SVS-VAMANA (Scalable Vector Search with VAMANA graph algorithm) provides fast approximate nearest neighbor search with optional compression support. This algorithm is optimized for Intel hardware and offers reduced memory usage through vector compression. **Best for large datasets (>100K vectors) on Intel hardware with memory constraints.**
-
-.. dropdown:: When to use SVS-VAMANA & Detailed Guide
- :color: info
-
- **Requirements:**
- - Redis >= 8.2.0 with Redis Search >= 2.8.10
- - datatype must be 'float16' or 'float32' (float64/bfloat16 not supported)
-
- **Use SVS-VAMANA when:**
- - Large datasets where memory is expensive
- - Cloud deployments with memory-based pricing
- - When 90-95% recall is acceptable
- - High-dimensional vectors (>1024 dims) with LeanVec compression
-
- **Performance vs other algorithms:**
- - **vs FLAT**: Much faster search, significantly lower memory usage with compression, but approximate results
-
- - **vs HNSW**: Better memory efficiency with compression, similar or better recall, Intel-optimized
-
- **Runtime parameters** (adjustable at query time without rebuilding index):
-
- - ``epsilon``: Range search approximation factor. Default: 0.01
- - ``search_window_size``: Size of search window for KNN searches. Higher = better recall, slower search
- - ``use_search_history``: Whether to use search buffer (OFF/ON/AUTO). Default: AUTO
- - ``search_buffer_capacity``: Tuning parameter for 2-level compression. Default: search_window_size
-
- **Compression selection guide:**
-
- - **No compression**: Best performance, standard memory usage
-
- - **LVQ4/LVQ8**: Good balance of compression (2x-4x) and performance
-
- - **LeanVec4x8/LeanVec8x8**: Maximum compression (up to 8x) with dimensionality reduction
-
- **Memory Savings Examples (1M vectors, 768 dims):**
- - No compression (float32): 3.1 GB
-
- - LVQ4x4 compression: 1.6 GB (~48% savings)
-
- - LeanVec4x8 + reduce to 384: 580 MB (~81% savings)
-
-.. autoclass:: SVSVectorField
- :members:
- :show-inheritance:
-
-.. autoclass:: SVSVectorFieldAttributes
- :members:
- :undoc-members:
-
-**SVS-VAMANA Examples:**
-
-**Basic configuration (no compression):**
-
-.. code-block:: yaml
-
- - name: embedding
- type: vector
- attrs:
- algorithm: svs-vamana
- dims: 768
- distance_metric: cosine
- datatype: float32
- # Index-time parameters (set during index creation)
- graph_max_degree: 40
- construction_window_size: 250
- # Note: search_window_size and other runtime params can be set at query time
-
-**High-performance configuration with compression:**
-
-.. code-block:: yaml
-
- - name: embedding
- type: vector
- attrs:
- algorithm: svs-vamana
- dims: 768
- distance_metric: cosine
- datatype: float32
- # Index-time parameters tuned for better recall
- graph_max_degree: 64
- construction_window_size: 500
- # Maximum compression with dimensionality reduction
- compression: LeanVec4x8
- reduce: 384 # 50% dimensionality reduction
- training_threshold: 1000
- # Note: search_window_size=40 can be set at query time for higher recall
-
-**Important Notes:**
-
-- **Requirements**: SVS-VAMANA requires Redis >= 8.2 with Redis Search >= 2.8.10.
-- **Datatype limitations**: SVS-VAMANA only supports `float16` and `float32` datatypes (not `bfloat16` or `float64`).
-- **Compression compatibility**: The `reduce` parameter is only valid with LeanVec compression types (`LeanVec4x8` or `LeanVec8x8`).
-- **Platform considerations**: Intel's proprietary LVQ and LeanVec optimizations are not available in Redis Open Source. On non-Intel platforms and Redis Open Source, SVS-VAMANA with compression falls back to basic 8-bit scalar quantization.
-- **Performance tip**: Runtime parameters like ``search_window_size``, ``epsilon``, and ``use_search_history`` can be adjusted at query time without rebuilding the index. Start with defaults and tune ``search_window_size`` first for your speed vs accuracy requirements.
-
-FLAT Vector Fields
-------------------
-
-FLAT - Brute-force exact search. **Best for small datasets (<10K vectors) requiring 100% accuracy.**
-
-.. dropdown:: When to use FLAT & Performance Details
- :color: info
-
- **Use FLAT when:**
- - Small datasets (<100K vectors) where exact results are required
- - Search accuracy is critical and approximate results are not acceptable
- - Baseline comparisons when evaluating approximate algorithms
- - Simple use cases where setup simplicity is more important than performance
-
- **Performance characteristics:**
- - **Search accuracy**: 100% exact results (no approximation)
- - **Search speed**: Linear time O(n) - slower as dataset grows
- - **Memory usage**: Minimal overhead, stores vectors as-is
- - **Build time**: Fastest index construction (no preprocessing)
-
- **Trade-offs vs other algorithms:**
- - **vs HNSW**: Much slower search but exact results, faster index building
- - **vs SVS-VAMANA**: Slower search and higher memory usage, but exact results
-
-.. autoclass:: FlatVectorField
- :members:
- :show-inheritance:
-
-.. autoclass:: FlatVectorFieldAttributes
- :members:
- :undoc-members:
-
-**FLAT Example:**
-
-.. code-block:: yaml
-
- - name: embedding
- type: vector
- attrs:
- algorithm: flat
- dims: 768
- distance_metric: cosine
- datatype: float32
- # Optional: tune for batch processing
- block_size: 1024
-
-**Note**: FLAT is recommended for small datasets or when exact results are mandatory. For larger datasets, consider HNSW or SVS-VAMANA for better performance.
-
-SVS-VAMANA Configuration Utilities
-==================================
-
-For SVS-VAMANA indices, RedisVL provides utilities to help configure compression settings and estimate memory savings.
-
-CompressionAdvisor
-------------------
-
-.. currentmodule:: redisvl.utils.compression
-
-.. autoclass:: CompressionAdvisor
- :members:
- :show-inheritance:
-
-SVSConfig
----------
-
-.. autoclass:: SVSConfig
- :members:
- :show-inheritance:
-
-.. _vector-algorithm-comparison:
-
-Vector Algorithm Comparison
-===========================
-
-This section provides detailed guidance for choosing between vector search algorithms.
-
-Algorithm Selection Guide
--------------------------
-
-.. list-table:: Vector Algorithm Comparison
- :header-rows: 1
- :widths: 15 20 20 20 25
-
- * - Algorithm
- - Best For
- - Performance
- - Memory Usage
- - Trade-offs
- * - **FLAT**
- - Small datasets (<100K vectors)
- - 100% recall, O(n) search
- - Minimal overhead
- - Exact but slow for large data
- * - **HNSW**
- - General purpose (100K-1M+ vectors)
- - 95-99% recall, O(log n) search
- - Moderate (graph overhead)
- - Fast approximate search
- * - **SVS-VAMANA**
- - Large datasets with memory constraints
- - 90-95% recall, O(log n) search
- - Low (with compression)
- - Intel-optimized, requires newer Redis
-
-When to Use Each Algorithm
---------------------------
-
-**Choose FLAT when:**
- - Dataset size < 100,000 vectors
- - Exact results are mandatory
- - Simple setup is preferred
- - Query latency is not critical
-
-**Choose HNSW when:**
- - Dataset size 100K - 1M+ vectors
- - Need balanced speed and accuracy
- - Cross-platform compatibility required
- - Most common choice for production
-
-**Choose SVS-VAMANA when:**
- - Dataset size > 100K vectors
- - Memory usage is a primary concern
- - Running on Intel hardware
- - Can accept 90-95% recall for memory savings
-
-Performance Characteristics
----------------------------
-
-**Search Speed:**
- - FLAT: Linear time O(n) - gets slower as data grows
- - HNSW: Logarithmic time O(log n) - scales well
- - SVS-VAMANA: Logarithmic time O(log n) - scales well
-
-**Memory Usage (1M vectors, 768 dims, float32):**
- - FLAT: ~3.1 GB (baseline)
- - HNSW: ~3.7 GB (20% overhead for graph)
- - SVS-VAMANA: 1.6-3.1 GB (depends on compression)
-
-**Recall Quality:**
- - FLAT: 100% (exact search)
- - HNSW: 95-99% (tunable via ``ef_runtime`` at query time)
- - SVS-VAMANA: 90-95% (tunable via ``search_window_size`` at query time, also depends on compression)
-
-Migration Considerations
-------------------------
-
-**From FLAT to HNSW:**
- - Straightforward migration
- - Expect slight recall reduction but major speed improvement
- - Tune ``ef_runtime`` at query time to balance speed vs accuracy (no index rebuild needed)
-
-**From HNSW to SVS-VAMANA:**
- - Requires Redis >= 8.2 with Redis Search >= 2.8.10
- - Change datatype to float16 or float32 if using others
- - Consider compression options for memory savings
-
-**From SVS-VAMANA to others:**
- - May need to change datatype back if using float64/bfloat16
- - HNSW provides similar performance with broader compatibility
-
-For complete Redis field documentation, see: https://redis.io/commands/ft.create/
\ No newline at end of file
diff --git a/docs/api/searchindex.md b/docs/api/searchindex.md
new file mode 100644
index 000000000..436269b7c
--- /dev/null
+++ b/docs/api/searchindex.md
@@ -0,0 +1,24 @@
+---
+description: SearchIndex and AsyncSearchIndex API reference for RedisVL.
+---
+
+# Search Index Classes
+
+| Class | Description |
+|-------|-------------|
+| [`SearchIndex`](#searchindex) | Primary class to write, read, and search across data structures in Redis. |
+| [`AsyncSearchIndex`](#asyncsearchindex) | Async variant of `SearchIndex`. |
+
+## SearchIndex
+
+::: redisvl.index.SearchIndex
+ options:
+ show_root_heading: true
+ inherited_members: true
+
+## AsyncSearchIndex
+
+::: redisvl.index.AsyncSearchIndex
+ options:
+ show_root_heading: true
+ inherited_members: true
diff --git a/docs/api/searchindex.rst b/docs/api/searchindex.rst
deleted file mode 100644
index 6080d2744..000000000
--- a/docs/api/searchindex.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-********************
-Search Index Classes
-********************
-
-.. list-table::
- :widths: 25 75
- :header-rows: 1
-
- * - Class
- - Description
- * - :ref:`searchindex_api`
- - Primary class to write, read, and search across data structures in Redis.
- * - :ref:`asyncsearchindex_api`
- - Async version of the SearchIndex to write, read, and search across data structures in Redis.
-
-.. _searchindex_api:
-
-SearchIndex
-===========
-
-.. currentmodule:: redisvl.index
-
-.. autoclass:: SearchIndex
- :inherited-members:
- :members:
-
-.. _asyncsearchindex_api:
-
-AsyncSearchIndex
-================
-
-.. currentmodule:: redisvl.index
-
-.. autoclass:: AsyncSearchIndex
- :inherited-members:
- :members:
diff --git a/docs/api/vector.md b/docs/api/vector.md
new file mode 100644
index 000000000..5fb1e38db
--- /dev/null
+++ b/docs/api/vector.md
@@ -0,0 +1,16 @@
+---
+description: Vector API reference for RedisVL.
+---
+
+# Vector
+
+The `Vector` class is a container that encapsulates a numerical vector, its
+datatype, the corresponding index field name, and an optional importance
+weight. It is used when constructing multi-vector queries with
+[`MultiVectorQuery`](query.md#multivectorquery).
+
+## Vector
+
+::: redisvl.query.Vector
+ options:
+ show_root_heading: true
diff --git a/docs/api/vector.rst b/docs/api/vector.rst
deleted file mode 100644
index c82ec18dd..000000000
--- a/docs/api/vector.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-
-******
-Vector
-******
-
-The Vector class in RedisVL is a container that encapsulates a numerical vector, it's datatype, corresponding index field name, and optional importance weight. It is used when constructing multi-vector queries using the MultiVectorQuery class.
-
-
-Vector
-===========
-
-.. currentmodule:: redisvl.query
-
-
-.. autoclass:: Vector
- :members:
- :exclude-members:
diff --git a/docs/api/vectorizer.md b/docs/api/vectorizer.md
new file mode 100644
index 000000000..ed5dd4c1a
--- /dev/null
+++ b/docs/api/vectorizer.md
@@ -0,0 +1,74 @@
+---
+description: Vectorizer providers for RedisVL: OpenAI, Cohere, HuggingFace, Vertex, Bedrock, Mistral, VoyageAI.
+---
+
+# Vectorizers
+
+Vectorizers convert text into embedding vectors. RedisVL ships with adapters
+for common cloud and local providers, all behind a single interface.
+
+!!! note "Backwards compatibility"
+
+ Several vectorizers have deprecated aliases in `redisvl.utils.vectorize.text`:
+
+ - `VoyageAITextVectorizer` → use `VoyageAIVectorizer`
+ - `VertexAITextVectorizer` → use `VertexAIVectorizer`
+ - `BedrockTextVectorizer` → use `BedrockVectorizer`
+ - `CustomTextVectorizer` → use `CustomVectorizer`
+
+ These aliases are deprecated as of version 0.13.0 and will be removed in a
+ future major release.
+
+## HFTextVectorizer
+
+::: redisvl.utils.vectorize.text.huggingface.HFTextVectorizer
+ options:
+ show_root_heading: true
+
+## OpenAITextVectorizer
+
+::: redisvl.utils.vectorize.text.openai.OpenAITextVectorizer
+ options:
+ show_root_heading: true
+
+## AzureOpenAITextVectorizer
+
+::: redisvl.utils.vectorize.text.azureopenai.AzureOpenAITextVectorizer
+ options:
+ show_root_heading: true
+
+## VertexAIVectorizer
+
+::: redisvl.utils.vectorize.vertexai.VertexAIVectorizer
+ options:
+ show_root_heading: true
+
+## CohereTextVectorizer
+
+::: redisvl.utils.vectorize.text.cohere.CohereTextVectorizer
+ options:
+ show_root_heading: true
+
+## BedrockVectorizer
+
+::: redisvl.utils.vectorize.bedrock.BedrockVectorizer
+ options:
+ show_root_heading: true
+
+## CustomVectorizer
+
+::: redisvl.utils.vectorize.custom.CustomVectorizer
+ options:
+ show_root_heading: true
+
+## VoyageAIVectorizer
+
+::: redisvl.utils.vectorize.voyageai.VoyageAIVectorizer
+ options:
+ show_root_heading: true
+
+## MistralAITextVectorizer
+
+::: redisvl.utils.vectorize.text.mistral.MistralAITextVectorizer
+ options:
+ show_root_heading: true
diff --git a/docs/api/vectorizer.rst b/docs/api/vectorizer.rst
deleted file mode 100644
index e7167efc9..000000000
--- a/docs/api/vectorizer.rst
+++ /dev/null
@@ -1,143 +0,0 @@
-***********
-Vectorizers
-***********
-
-.. note::
- **Backwards Compatibility:** Several vectorizers have deprecated aliases
- available in the ``redisvl.utils.vectorize.text`` module for backwards
- compatibility:
-
- - ``VoyageAITextVectorizer`` → Use ``VoyageAIVectorizer`` instead
- - ``VertexAITextVectorizer`` → Use ``VertexAIVectorizer`` instead
- - ``BedrockTextVectorizer`` → Use ``BedrockVectorizer`` instead
- - ``CustomTextVectorizer`` → Use ``CustomVectorizer`` instead
-
- These aliases are deprecated as of version 0.13.0 and will be removed
- in a future major release.
-
-HFTextVectorizer
-================
-
-.. _hftextvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.text.huggingface
-
-.. autoclass:: HFTextVectorizer
- :show-inheritance:
- :members:
-
-
-OpenAITextVectorizer
-====================
-
-.. _openaitextvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.text.openai
-
-.. autoclass:: OpenAITextVectorizer
- :show-inheritance:
- :members:
-
-
-AzureOpenAITextVectorizer
-=========================
-
-.. _azureopenaitextvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.text.azureopenai
-
-.. autoclass:: AzureOpenAITextVectorizer
- :show-inheritance:
- :members:
-
-
-VertexAIVectorizer
-======================
-
-.. _vertexaivectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.vertexai
-
-.. note::
- For backwards compatibility, an alias ``VertexAITextVectorizer`` is available
- in the ``redisvl.utils.vectorize.text`` module. This alias is deprecated
- as of version 0.13.0 and will be removed in a future major release.
-
-.. autoclass:: VertexAIVectorizer
- :show-inheritance:
- :members:
-
-
-CohereTextVectorizer
-====================
-
-.. _coheretextvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.text.cohere
-
-.. autoclass:: CohereTextVectorizer
- :show-inheritance:
- :members:
-
-
-BedrockVectorizer
-=====================
-
-.. _bedrockvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.bedrock
-
-.. note::
- For backwards compatibility, an alias ``BedrockTextVectorizer`` is available
- in the ``redisvl.utils.vectorize.text`` module. This alias is deprecated
- as of version 0.13.0 and will be removed in a future major release.
-
-.. autoclass:: BedrockVectorizer
- :show-inheritance:
- :members:
-
-
-CustomVectorizer
-====================
-
-.. _customvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.custom
-
-.. note::
- For backwards compatibility, an alias ``CustomTextVectorizer`` is available
- in the ``redisvl.utils.vectorize.text`` module. This alias is deprecated
- as of version 0.13.0 and will be removed in a future major release.
-
-.. autoclass:: CustomVectorizer
- :show-inheritance:
- :members:
-
-
-VoyageAIVectorizer
-======================
-
-.. _voyageaivectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.voyageai
-
-.. note::
- For backwards compatibility, an alias ``VoyageAITextVectorizer`` is available
- in the ``redisvl.utils.vectorize.text`` module. This alias is deprecated
- as of version 0.13.0 and will be removed in a future major release.
-
-.. autoclass:: VoyageAIVectorizer
- :show-inheritance:
- :members:
-
-
-MistralAITextVectorizer
-========================
-
-.. _mistralaitextvectorizer_api:
-
-.. currentmodule:: redisvl.utils.vectorize.text.mistral
-
-.. autoclass:: MistralAITextVectorizer
- :show-inheritance:
- :members:
diff --git a/docs/_static/Redis_Favicon_32x32_Red.png b/docs/assets/favicon.png
similarity index 100%
rename from docs/_static/Redis_Favicon_32x32_Red.png
rename to docs/assets/favicon.png
diff --git a/docs/assets/redis-logo-script-red.svg b/docs/assets/redis-logo-script-red.svg
new file mode 100644
index 000000000..082a5a882
--- /dev/null
+++ b/docs/assets/redis-logo-script-red.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/docs/assets/redis-logo-script.svg b/docs/assets/redis-logo-script.svg
new file mode 100644
index 000000000..151ac350f
--- /dev/null
+++ b/docs/assets/redis-logo-script.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/docs/_static/redisvl-architecture.svg b/docs/assets/redisvl-architecture.svg
similarity index 100%
rename from docs/_static/redisvl-architecture.svg
rename to docs/assets/redisvl-architecture.svg
diff --git a/docs/concepts/architecture.md b/docs/concepts/architecture.md
index 3cd596330..c2e539132 100644
--- a/docs/concepts/architecture.md
+++ b/docs/concepts/architecture.md
@@ -1,19 +1,9 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL architecture - how the library structures vector search on Redis.
----
# Architecture
RedisVL sits between your application and Redis, providing a structured way to define, populate, and query vector search indexes.
-```{image} /_static/redisvl-architecture.svg
-:alt: RedisVL Architecture
-:align: center
-:width: 100%
-```
+
## The Core Pattern
@@ -67,7 +57,7 @@ Each extension manages its own Redis index internally. You interact with a clean
---
-**Related concepts:** {doc}`search-and-indexing` covers schemas and field types in detail. {doc}`queries` explains the different query types available.
+**Related concepts:** [search-and-indexing](search-and-indexing.md) covers schemas and field types in detail. [queries](queries.md) explains the different query types available.
-**Learn more:** {doc}`/user_guide/01_getting_started` covers the core workflow. {doc}`extensions` explains each extension pattern in detail.
+**Learn more:** the [Getting Started](../user_guide/01_getting_started.ipynb) notebook covers the core workflow. [Extensions](extensions.md) explains each extension pattern in detail.
diff --git a/docs/concepts/extensions.md b/docs/concepts/extensions.md
index 54c54eb57..2aa352e42 100644
--- a/docs/concepts/extensions.md
+++ b/docs/concepts/extensions.md
@@ -1,9 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL extensions - semantic caching, embeddings caching, message history, and routing.
----
# Extensions
@@ -33,9 +27,9 @@ In applications serving multiple users or contexts, you often want separate cach
### Redis vs LangCache managed service
-`SemanticCache` stores data in your Redis deployment and uses RedisVL’s search index under the hood—you control sizing, networking, and advanced filtering with {doc}`FilterExpression `.
+`SemanticCache` stores data in your Redis deployment and uses RedisVL’s search index under the hood—you control sizing, networking, and advanced filtering with [FilterExpression](../api/filter.md).
-If you prefer a hosted semantic cache that is operated as a service you can use `LangCacheSemanticCache` (install `redisvl[langcache]`). It uses the LangCache API endpoint instead of Redis directly. While these are similar, they do not share all the same properties. Refer to {doc}`/user_guide/03_llmcache` to see `SemanticCache` in detail, and {doc}`/user_guide/13_langcache_semantic_cache` covers `LangCacheSemanticCache` in detail.
+If you prefer a hosted semantic cache that is operated as a service you can use `LangCacheSemanticCache` (install `redisvl[langcache]`). It uses the LangCache API endpoint instead of Redis directly. While these are similar, they do not share all the same properties. Refer to [user_guide/03_llmcache](../user_guide/03_llmcache.ipynb) to see `SemanticCache` in detail, and [user_guide/13_langcache_semantic_cache](../user_guide/13_langcache_semantic_cache.ipynb) covers `LangCacheSemanticCache` in detail.
## Embeddings Cache
@@ -49,15 +43,16 @@ This is useful when the same content is embedded multiple times—common in appl
### Wrapping Vectorizers
-The embeddings cache can wrap any {doc}`vectorizer `, adding transparent caching. Calling the wrapped vectorizer checks the cache first. This requires no changes to your embedding code—just wrap the vectorizer and caching happens automatically.
+The embeddings cache can wrap any [vectorizer](utilities.md), adding transparent caching. Calling the wrapped vectorizer checks the cache first. This requires no changes to your embedding code—just wrap the vectorizer and caching happens automatically.
## Message History
LLMs are stateless. To have a conversation, you must include previous messages in each prompt. Message history manages this context, storing conversation turns and retrieving them when building prompts.
-```{note}
-`SessionManager` and `SemanticSessionManager` have been renamed to `MessageHistory` and `SemanticMessageHistory`. The old names are deprecated and will be removed in a future release.
-```
+!!! note
+
+ `SessionManager` and `SemanticSessionManager` have been renamed to `MessageHistory` and `SemanticMessageHistory`. The old names are deprecated and will be removed in a future release.
+
### Storage Model
@@ -73,7 +68,7 @@ Semantic message history adds vector search. Messages are embedded, and you can
Session tags are critical for multi-user applications. Each user's conversation should be isolated, so retrieving context for User A doesn't include messages from User B. The session tag provides this isolation, and you can structure sessions however makes sense—per-user, per-thread, per-agent, or any other grouping.
-**Learn more:** {doc}`/user_guide/07_message_history` explains conversation management in detail.
+**Learn more:** [user_guide/07_message_history](../user_guide/07_message_history.ipynb) explains conversation management in detail.
## Semantic Router
@@ -95,8 +90,8 @@ If no route matches (all distances exceed their thresholds), the router returns
Semantic routing is useful for intent classification (determining what a user wants), topic detection (categorizing content), guardrails (detecting and blocking certain query types), and agent dispatch (sending queries to specialized sub-agents).
-**Learn more:** {doc}`/user_guide/08_semantic_router` walks through routing setup in detail.
+**Learn more:** [user_guide/08_semantic_router](../user_guide/08_semantic_router.ipynb) walks through routing setup in detail.
---
-**Related concepts:** {doc}`queries` explains the query types used internally by extensions. {doc}`utilities` covers vectorizers used for embedding.
+**Related concepts:** [queries](queries.md) explains the query types used internally by extensions. [utilities](utilities.md) covers vectorizers used for embedding.
diff --git a/docs/concepts/field-attributes.md b/docs/concepts/field-attributes.md
index c7764a4a7..090a650b0 100644
--- a/docs/concepts/field-attributes.md
+++ b/docs/concepts/field-attributes.md
@@ -1,9 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL field attributes - configuring sortable, no_index, index_missing, and other field options.
----
# Field Attributes
@@ -261,7 +255,7 @@ Geo fields support the common attributes (`sortable`, `no_index`, `index_missing
## Vector Field Attributes
-Vector fields have a different attribute structure. See {doc}`/api/schema` for complete vector field documentation.
+Vector fields have a different attribute structure. See [api/schema](../api/schema.md) for complete vector field documentation.
Key vector attributes:
- `dims`: Vector dimensionality (required)
@@ -374,5 +368,5 @@ fields:
path: $.location
```
-**Learn more:** {doc}`/api/schema` provides the complete API reference for all field types and attributes.
+**Learn more:** [api/schema](../api/schema.md) provides the complete API reference for all field types and attributes.
diff --git a/docs/concepts/index.md b/docs/concepts/index.md
index a68d0802e..675fd97e4 100644
--- a/docs/concepts/index.md
+++ b/docs/concepts/index.md
@@ -1,77 +1,53 @@
---
-myst:
- html_meta:
- "description lang=en": |
- Core concepts for RedisVL - architecture, search, indexing, and AI extensions.
+description: Core concepts for RedisVL. Architecture, search and indexing, field attributes, query types, utilities, MCP, and extensions.
---
# Concepts
-Foundational knowledge for building AI applications with RedisVL. These concepts are language-agnostic and apply across all RedisVL implementations.
+Foundational knowledge for building AI applications with RedisVL. These concepts apply across every RedisVL implementation and explain why the library is shaped the way it is.
-::::{grid} 2
-:gutter: 3
+
-:::{grid-item-card} 🏗️ Architecture
-:link: architecture
-:link-type: doc
+- :material-sitemap:{ .lg .middle } **[Architecture](architecture.md)**
-How RedisVL components connect: schemas, indexes, queries, and extensions.
-:::
+ ---
-:::{grid-item-card} 🔍 Search & Indexing
-:link: search-and-indexing
-:link-type: doc
+ How RedisVL components connect: schemas, indexes, queries, and extensions.
-Schemas, fields, documents, storage types, and query patterns.
-:::
+- :material-database-search:{ .lg .middle } **[Search and indexing](search-and-indexing.md)**
-:::{grid-item-card} 🏷️ Field Attributes
-:link: field-attributes
-:link-type: doc
+ ---
-Configure sortable, no_index, index_missing, and other field options.
-:::
+ Schemas, fields, documents, storage types, and query patterns.
-:::{grid-item-card} 🔎 Query Types
-:link: queries
-:link-type: doc
+- :material-tag-multiple:{ .lg .middle } **[Field attributes](field-attributes.md)**
-Vector, filter, text, hybrid, and multi-vector query options.
-:::
+ ---
-:::{grid-item-card} 🔧 Utilities
-:link: utilities
-:link-type: doc
+ Configure sortable, no_index, index_missing, and other per-field options.
-Vectorizers for embeddings and rerankers for result optimization.
-:::
+- :material-magnify:{ .lg .middle } **[Query types](queries.md)**
-:::{grid-item-card} 🧠 MCP
-:link: mcp
-:link-type: doc
+ ---
-How RedisVL exposes an existing Redis index to MCP clients through a stable tool contract.
-:::
+ Vector, filter, text, hybrid, and multi-vector query options.
-:::{grid-item-card} 🧩 Extensions
-:link: extensions
-:link-type: doc
+- :material-tools:{ .lg .middle } **[Utilities](utilities.md)**
-Pre-built patterns: caching, message history, and semantic routing.
-:::
+ ---
-::::
+ Vectorizers for embeddings and rerankers for result optimization.
-```{toctree}
-:maxdepth: 2
-:hidden:
+- :material-robot:{ .lg .middle } **[MCP](mcp.md)**
-architecture
-search-and-indexing
-field-attributes
-queries
-utilities
-mcp
-extensions
-```
+ ---
+
+ How RedisVL exposes an existing Redis index to MCP clients through a stable tool contract.
+
+- :material-puzzle:{ .lg .middle } **[Extensions](extensions.md)**
+
+ ---
+
+ Pre-built patterns: caching, message history, and semantic routing.
+
+
diff --git a/docs/concepts/mcp.md b/docs/concepts/mcp.md
index 9a6970e51..f83beaf86 100644
--- a/docs/concepts/mcp.md
+++ b/docs/concepts/mcp.md
@@ -1,9 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL MCP concepts: how the RedisVL MCP server exposes an existing Redis index to MCP clients.
----
# RedisVL MCP
@@ -107,4 +101,4 @@ RedisVL MCP is a good fit when:
- you need a read-only or tightly controlled write boundary
- you want to reuse an existing Redis index without rebuilding retrieval logic in every client
-For setup steps, config, commands, and examples, see {doc}`/user_guide/how_to_guides/mcp`.
+For setup steps, config, commands, and examples, see [Run RedisVL MCP](../user_guide/how_to_guides/mcp.md).
diff --git a/docs/concepts/queries.md b/docs/concepts/queries.md
index 05adfe25e..5b0378695 100644
--- a/docs/concepts/queries.md
+++ b/docs/concepts/queries.md
@@ -1,9 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL query types - vector search, filtering, text search, and hybrid queries.
----
# Query Types
@@ -132,9 +126,10 @@ results = index.query(query)
Use when neither pure keyword search nor pure semantic search gives good enough results. Common in RAG applications where you want both exact matches and semantic understanding.
-```{note}
-HybridQuery requires Redis >= 8.4.0 and redis-py >= 7.1.0.
-```
+!!! note
+
+ HybridQuery requires Redis >= 8.4.0 and redis-py >= 7.1.0.
+
### AggregateHybridQuery
@@ -275,9 +270,10 @@ query = SQLQuery("""
Use when your team is more comfortable with SQL syntax, or when integrating with tools that generate SQL.
-```{note}
-SQLQuery requires the optional `sql-redis` package. Install with: `pip install redisvl[sql-redis]`
-```
+!!! note
+
+ SQLQuery requires the optional `sql-redis` package. Install with: `pip install redisvl[sql-redis]`
+
For comprehensive examples including geographic filtering, date functions, and vector search, see the [SQL to Redis Queries guide](../user_guide/12_sql_to_redis_queries.ipynb).
@@ -329,5 +325,5 @@ query = HybridQuery(
)
```
-**Learn more:** {doc}`/user_guide/11_advanced_queries` demonstrates these query types in detail.
+**Learn more:** [user_guide/11_advanced_queries](../user_guide/11_advanced_queries.ipynb) demonstrates these query types in detail.
diff --git a/docs/concepts/search-and-indexing.md b/docs/concepts/search-and-indexing.md
index b4fe69569..5a86adcf1 100644
--- a/docs/concepts/search-and-indexing.md
+++ b/docs/concepts/search-and-indexing.md
@@ -1,9 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL search and indexing - schemas, field types, storage, and query patterns.
----
# Search & Indexing
@@ -108,7 +102,7 @@ Planning your schema carefully upfront reduces the need for migrations, but the
---
-**Related concepts:** {doc}`field-attributes` explains how to configure field options like `sortable` and `index_missing`. {doc}`queries` covers the different query types available.
+**Related concepts:** [field-attributes](field-attributes.md) explains how to configure field options like `sortable` and `index_missing`. [queries](queries.md) covers the different query types available.
-**Learn more:** {doc}`/user_guide/01_getting_started` walks through building your first index. {doc}`/user_guide/05_hash_vs_json` compares storage options in depth. {doc}`/user_guide/02_complex_filtering` covers query composition.
+**Learn more:** [user_guide/01_getting_started](../user_guide/01_getting_started.ipynb) walks through building your first index. [user_guide/05_hash_vs_json](../user_guide/05_hash_vs_json.ipynb) compares storage options in depth. [user_guide/02_complex_filtering](../user_guide/02_complex_filtering.ipynb) covers query composition.
diff --git a/docs/concepts/utilities.md b/docs/concepts/utilities.md
index 77ae9ed78..73304d00f 100644
--- a/docs/concepts/utilities.md
+++ b/docs/concepts/utilities.md
@@ -1,9 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- RedisVL utilities - vectorizers for embeddings and rerankers for result optimization.
----
# Utilities
@@ -35,7 +29,7 @@ Vectorizers handle batching internally, breaking large batches into provider-app
### Supported Providers
-RedisVL includes vectorizers for OpenAI, Azure OpenAI, Cohere, HuggingFace (local), Mistral, Google Vertex AI, AWS Bedrock, VoyageAI, and others. See the {doc}`/api/vectorizer` for the complete list. You can also create custom vectorizers that wrap any embedding function.
+RedisVL includes vectorizers for OpenAI, Azure OpenAI, Cohere, HuggingFace (local), Mistral, Google Vertex AI, AWS Bedrock, VoyageAI, and others. See the [api/vectorizer](../api/vectorizer.md) for the complete list. You can also create custom vectorizers that wrap any embedding function.
## Rerankers
@@ -69,7 +63,7 @@ This pattern separates recall (finding everything potentially relevant) from pre
---
-**Related concepts:** {doc}`queries` explains how to use embeddings in vector search queries. {doc}`search-and-indexing` covers schema configuration for vector fields.
+**Related concepts:** [queries](queries.md) explains how to use embeddings in vector search queries. [search-and-indexing](search-and-indexing.md) covers schema configuration for vector fields.
-**Learn more:** {doc}`/user_guide/04_vectorizers` covers embedding providers. {doc}`/user_guide/06_rerankers` explains reranking in practice.
+**Learn more:** [user_guide/04_vectorizers](../user_guide/04_vectorizers.ipynb) covers embedding providers. [user_guide/06_rerankers](../user_guide/06_rerankers.ipynb) explains reranking in practice.
diff --git a/docs/conf.py b/docs/conf.py
deleted file mode 100644
index cfac39be9..000000000
--- a/docs/conf.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# Configuration file for the Sphinx documentation builder.
-#
-# This file only contains a selection of the most common options. For a full
-# list see the documentation:
-# https://www.sphinx-doc.org/en/master/usage/configuration.html
-
-# -- Path setup --------------------------------------------------------------
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#
-import os
-import sys
-sys.path.insert(0, os.path.abspath('.'))
-
-print(f"Sphinx is using Python executable at: {sys.executable}", flush=True)
-print(f"Python version: {sys.version}", flush=True)
-
-# -- Project information -----------------------------------------------------
-
-from redisvl import __version__
-
-project = 'RedisVL'
-copyright = '2024, Redis Inc.'
-author = 'Redis Applied AI'
-version = __version__
-
-# The full version, including alpha/beta/rc tags
-release = version
-
-
-# -- General configuration ---------------------------------------------------
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'sphinx.ext.autodoc',
- 'sphinx.ext.todo',
- 'sphinx.ext.coverage',
- 'sphinx.ext.imgmath',
- 'sphinx.ext.viewcode',
- 'sphinx.ext.githubpages',
- 'sphinx.ext.autosummary',
- 'sphinx.ext.napoleon',
- "sphinx_design",
- "sphinx_copybutton",
- "_extension.gallery_directive",
- "myst_nb",
- "sphinx_favicon"
-]
-
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', "**.ipynb_checkpoints"]
-
-
-# -- Options for HTML output -------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.
-html_theme = "sphinx_book_theme"
-
-# Pygments syntax highlighting style
-pygments_style = "friendly"
-pygments_dark_style = "monokai"
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-html_css_files = ["css/custom.css"]
-html_title = "RedisVL"
-html_logo = "_static/Redis_Favicon_32x32_Red.png"
-html_favicon = "_static/Redis_Favicon_32x32_Red.png"
-
-html_context = {
- "github_user": "redis",
- "github_repo": "redis-vl-python",
- "github_version": "main",
- "doc_path": "docs",
- "default_mode": "auto",
-}
-
-# This allows us to use ::: to denote directives, useful for admonitions
-myst_enable_extensions = ["colon_fence"]
-myst_heading_anchors = 3
-
-# Sphinx Book Theme options
-html_theme_options = {
- "repository_url": "https://github.com/redis/redis-vl-python",
- "use_repository_button": True,
- "use_edit_page_button": True,
- "use_source_button": True,
- "use_issues_button": True,
- "use_download_button": True,
- "use_fullscreen_button": True,
- "repository_branch": "main",
- "path_to_docs": "docs",
- "show_navbar_depth": 2,
- "navigation_depth": 4,
- "show_toc_level": 3,
- "home_page_in_toc": True,
- "logo": {
- "text": "Redis Vector Library",
- "image_light": "_static/Redis_Favicon_32x32_Red.png",
- "image_dark": "_static/Redis_Favicon_32x32_Red.png",
- },
-}
-
-
-autoclass_content = 'both'
-add_module_names = False
-
-nb_execution_mode = "off"
-
-# -- Options for autosummary/autodoc output ------------------------------------
-autosummary_generate = True
-autodoc_typehints = "description"
-autodoc_member_order = "groupwise"
-
-# -- Options for autoapi -------------------------------------------------------
-autoapi_type = "python"
-autoapi_dirs = ["../src/redisvl"]
-autoapi_keep_files = True
-autoapi_root = "api"
-autoapi_member_order = "groupwise"
-
-
-# -- favicon options ---------------------------------------------------------
-
-# see https://sphinx-favicon.readthedocs.io for more information about the
-# sphinx-favicon extension
-
-favicons = [
- # generic icons compatible with most browsers
- "Redis_Favicon_32x32_Red.png",
- "Redis_Favicon_16x16_Red.png",
- "Redis_Favicon_144x144_Red.png",
-]
diff --git a/docs/examples/index.md b/docs/examples/index.md
index 843ae24dd..7ec7b2213 100644
--- a/docs/examples/index.md
+++ b/docs/examples/index.md
@@ -1,33 +1,21 @@
---
-myst:
- html_meta:
- "description lang=en": |
- Examples for RedisVL users
+description: Examples and code recipes for RedisVL. RAG, agents, semantic caching, recommendation systems, and more.
---
-
# Example Gallery
Explore community examples of RedisVL in the wild.
-```{tip}
-For a comprehensive collection of Redis AI examples, tutorials, and recipes, visit the
-**[Redis AI Resources](https://github.com/redis-developer/redis-ai-resources)** repository.
-It includes notebooks for RAG, agents, semantic caching, recommendation systems, and more.
-```
-
-## Demo Applications
+!!! tip
-Full-stack applications showcasing RedisVL and Redis vector search capabilities.
+ For a comprehensive collection of Redis AI examples, tutorials, and recipes, visit the
+ **[Redis AI Resources](https://github.com/redis-developer/redis-ai-resources)** repository.
+ It includes notebooks for RAG, agents, semantic caching, recommendation systems, and more.
-```{gallery-grid} ../_static/gallery.yaml
-:grid-columns: "1 1 2 2"
-```
+!!! note
-```{note}
-If you are using RedisVL, please consider adding your example to this page by
-opening a Pull Request on [GitHub](https://github.com/redis/redis-vl-python)
-```
+ If you are using RedisVL, please consider adding your example to this page by
+ opening a Pull Request on [GitHub](https://github.com/redis/redis-vl-python).
---
@@ -112,7 +100,6 @@ Reduce costs and latency with caching and routing.
Looking for more examples and tutorials?
-- **[Redis AI Resources](https://github.com/redis-developer/redis-ai-resources)** -- Comprehensive collection of code recipes, demos, and tutorials
-- **[Java Recipes](https://github.com/redis-developer/redis-ai-resources/tree/main/java-recipes)** -- Spring AI, Redis OM Spring, and semantic routing examples
-- **[Redis Developer Hub](https://redis.io/developers/)** -- Official Redis developer resources
-
+- **[Redis AI Resources](https://github.com/redis-developer/redis-ai-resources)** — Comprehensive collection of code recipes, demos, and tutorials
+- **[Java Recipes](https://github.com/redis-developer/redis-ai-resources/tree/main/java-recipes)** — Spring AI, Redis OM Spring, and semantic routing examples
+- **[Redis Developer Hub](https://redis.io/developers/)** — Official Redis developer resources
diff --git a/docs/for-ais-only/BUILD_AND_TEST.md b/docs/for-ais-only/BUILD_AND_TEST.md
new file mode 100644
index 000000000..034ae5e28
--- /dev/null
+++ b/docs/for-ais-only/BUILD_AND_TEST.md
@@ -0,0 +1,100 @@
+---
+description: Exact build, test, and docs commands for AI agents working on the redisvl repository.
+---
+
+# Build and test
+
+The shortest path from a fresh checkout to a green build.
+
+## One-time setup
+
+```bash
+make install # uv sync --all-extras
+make redis-start # docker run -d --name redis -p 6379:6379 redis:8.4
+```
+
+`make install` uses [uv](https://docs.astral.sh/uv/) and writes the lock file
+in `uv.lock`. Do **not** edit `pyproject.toml` to add or remove dependencies;
+use `uv add` / `uv remove` (with `--group dev` or `--group docs` where
+appropriate) so the lock stays consistent.
+
+`make redis-start` is required for any test that talks to Redis.
+`testcontainers` will create its own ephemeral container per integration test,
+but the notebook suite uses the long-lived container on port 6379.
+
+## Format and lint
+
+```bash
+make format # isort + black on redisvl/ and tests/
+make check-types # mypy
+make lint # format + check-types
+```
+
+Run `make format` before committing. CI re-runs the same commands.
+
+## Tests
+
+```bash
+make test # default suite (no API-dependent tests)
+make test ARGS="--run-api-tests" # full suite including paid providers
+make test-all # alias for the above
+make test-verbose # -vv -s
+make test-notebooks # nbval-lax across docs/user_guide/*.ipynb
+```
+
+`make test` runs `pytest -n auto`. Set `ARGS="-k name_substring"` to subset.
+
+API-dependent tests need the appropriate environment variables set, for
+example `OPENAI_API_KEY`, `COHERE_API_KEY`, `VOYAGE_API_KEY`,
+`LANGCACHE_API_KEY`, etc. Tests that require keys you have not provided are
+skipped, not failed.
+
+## Docs
+
+```bash
+make docs-build # mkdocs build --strict
+make docs-serve # mkdocs serve --dev-addr 127.0.0.1:8000
+```
+
+`docs-build` is the contract: it must pass with `--strict`, which fails on
+broken cross-references and on unrecognized config. `docs-serve` watches the
+`redisvl/` package as well as the docs tree, so changes to docstrings reflow
+the API reference live.
+
+The docs depend on the `docs` group:
+
+```bash
+uv sync --group docs
+```
+
+The lock file already pins compatible versions; `make install` pulls these in
+as part of the default groups.
+
+## Pre-commit
+
+```bash
+pre-commit install
+pre-commit run --all-files
+```
+
+The hooks run formatting, type checking, and a codespell pass.
+
+## Releasing
+
+The release workflow auto-bumps `pyproject.toml` `version`. **Do not** edit
+that field by hand. Tag conventions and the actual cut are handled in CI.
+
+## Things that *will* break the build
+
+- Adding a public symbol without re-exporting it from the relevant
+ `__init__.py`. The mkdocstrings pages reference subpackage paths, not module
+ paths.
+- Changing a docstring section header from a Google-style `Args:` /
+ `Returns:` / `Raises:` to a non-Google format. mkdocstrings is configured
+ with `docstring_style: google`.
+- Renaming a notebook under `docs/user_guide/`. The path appears in
+ `mkdocs.yml`'s `nav:` section and in the how-to-guide and use-case index
+ cards. Update all three.
+- Editing `pyproject.toml` directly to bump or add a dependency. Use `uv add`.
+- Adding a doc file outside the `nav:` tree without listing it. `mkdocs build
+ --strict` fails on orphaned pages.
diff --git a/docs/for-ais-only/FAILURE_MODES.md b/docs/for-ais-only/FAILURE_MODES.md
new file mode 100644
index 000000000..600d61ba5
--- /dev/null
+++ b/docs/for-ais-only/FAILURE_MODES.md
@@ -0,0 +1,103 @@
+---
+description: Common ways changes break the redisvl test suite or surface as runtime errors, and the canonical fixes.
+---
+
+# Failure modes
+
+The recurring ways a redisvl change goes wrong, and the smallest fix that
+restores green.
+
+## `mkdocs build --strict` fails
+
+### "Doc file ... contains a link to ... which is not found"
+
+A page links to another page that doesn't exist (typo, wrong relative path,
+or the target file was deleted/renamed).
+
+- **Notebook references**: notebook nodes are addressed by their on-disk
+ path, including the `.ipynb` suffix. From `docs/concepts/extensions.md` the
+ Getting Started notebook is `../user_guide/01_getting_started.ipynb`, **not**
+ `../user_guide/01_getting_started.md`.
+- **API references**: API pages use `.md`. From `docs/concepts/utilities.md`
+ the vectorizer reference is `../api/vectorizer.md`.
+- **Concept-to-concept refs**: stay flat — `[Architecture](architecture.md)`,
+ not `[Architecture](../concepts/architecture.md)`.
+
+### "404 page exists but is not in the navigation"
+
+You added a new page under `docs/` but didn't add it to `nav:` in
+`mkdocs.yml`. Either add it or delete it.
+
+### "mkdocstrings could not find ..."
+
+The dotted path under `:::` does not import. mkdocstrings imports the package
+in-process; if the import fails (missing optional extra, circular import) the
+whole API page fails. Reproduce with:
+
+```bash
+uv run python -c "from redisvl.utils.vectorize.text.openai import OpenAITextVectorizer"
+```
+
+If it fails, the docs will fail too. Either fix the import or wrap the page's
+listing in a different module path.
+
+## Tests fail with `redis.exceptions.ConnectionError`
+
+The container is not running:
+
+```bash
+make redis-start
+```
+
+If `make redis-start` says `Conflict. The container name "/redis" is already
+in use`, you have a stopped container; `make redis-stop && make redis-start`.
+
+## Notebook tests (`make test-notebooks`) fail with output mismatch
+
+`nbval-lax` compares cell outputs loosely, but it still flags hard
+exceptions and changed sentinel values. Common causes:
+
+- Schema or query API changed and the notebook still calls the old surface —
+ re-run the notebook locally, save the corrected outputs, commit.
+- A newer Redis version changed default behavior (most often around stopwords
+ or scoring). Either pin the notebook to a Redis version or rewrite the
+ assertion.
+- The SVS-VAMANA notebook (`09_svs_vamana.ipynb`) requires Redis 8.2+. The
+ Makefile auto-skips it when running against an older container.
+
+## Type checking fails after adding an optional dependency
+
+Optional providers (OpenAI, Cohere, etc.) are imported lazily inside the
+vectorizer modules. If you add a new top-level import for an optional package,
+either:
+
+- gate it behind `if TYPE_CHECKING:` for type-only imports, or
+- wrap it in a try/except `ImportError` and raise a clear error from
+ `__init__` when the provider is actually used.
+
+Mypy is configured with `ignore_missing_imports = true`, so you will see the
+failure first as a runtime `ImportError`, not a type error.
+
+## `uv sync` complains about a stale lock
+
+Someone hand-edited `pyproject.toml`. Re-run the dependency change through uv:
+
+```bash
+uv add # or
+uv add --group docs
+```
+
+That regenerates `uv.lock` consistently.
+
+## A notebook drifts from the docs
+
+Three things must agree on every notebook rename or addition:
+
+1. The notebook file under `docs/user_guide/`.
+2. The `nav:` entry in `mkdocs.yml`.
+3. The card and quick-reference table entries in
+ `docs/user_guide/how_to_guides/index.md` and
+ `docs/user_guide/use_cases/index.md`.
+
+If you add a notebook and only do (1) + (2), the user-facing index pages will
+silently miss the new content; `mkdocs build --strict` will not flag that.
diff --git a/docs/for-ais-only/REPOSITORY_MAP.md b/docs/for-ais-only/REPOSITORY_MAP.md
new file mode 100644
index 000000000..a5ee5c0f2
--- /dev/null
+++ b/docs/for-ais-only/REPOSITORY_MAP.md
@@ -0,0 +1,118 @@
+---
+description: Source-tree map of the redisvl repository for AI agents working on the codebase.
+---
+
+# Repository map
+
+The redisvl repo is a flat Python package plus the docs and tests. Every public
+symbol is reachable from `redisvl.`; sub-modules under those names
+are implementation detail and may be reorganized between minor versions.
+
+## Top level
+
+| Path | Purpose |
+|------|---------|
+| `redisvl/` | The library source. |
+| `tests/` | Pytest suite. `unit/` is offline; `integration/` requires Redis (via `testcontainers`); `notebooks/` runs the user-guide notebooks. |
+| `docs/` | mkdocs source tree (Concepts, User Guide, Examples, API, For AI Agents). |
+| `mkdocs.yml` | Site config (Material theme, Redis branding, mkdocstrings, mkdocs-jupyter, llmstxt). |
+| `pyproject.toml` | Package metadata, optional extras, dev/docs dep groups. |
+| `Makefile` | Convenience targets for install, format, lint, test, docs. |
+| `.readthedocs.yaml` | RTD build config (uv install + mkdocs build). |
+| `AGENTS.md` | Quick reference for AI agents *using* the library. |
+| `CLAUDE.md` | Project conventions surfaced to coding agents. |
+| `CONTRIBUTING.md` | Contributor onboarding. |
+
+## Package layout
+
+```
+redisvl/
+├── __init__.py # version + public re-exports
+├── exceptions.py # public exception classes
+├── types.py # type aliases for sync/async redis clients
+├── version.py # __version__ source of truth
+│
+├── cli/ # `rvl` CLI entry points
+│ ├── runner.py # main(); wires sub-commands
+│ ├── index.py # `rvl index` (create, list, info, delete)
+│ ├── stats.py # `rvl stats`
+│ ├── mcp.py # `rvl mcp`
+│ └── version.py # `rvl version`
+│
+├── extensions/
+│ ├── cache/ # SemanticCache, EmbeddingsCache, LangCacheSemanticCache
+│ ├── llmcache/ # legacy alias kept for back-compat imports
+│ ├── message_history/ # MessageHistory + SemanticMessageHistory
+│ ├── router/ # SemanticRouter, Route, RoutingConfig
+│ └── session_manager/ # deprecated alias of message_history
+│
+├── index/
+│ ├── index.py # SearchIndex, AsyncSearchIndex
+│ └── storage.py # Hash and JSON storage adapters
+│
+├── mcp/ # `rvl mcp` server implementation
+│ ├── config.py # YAML config loading + env-var substitution
+│ ├── server.py # FastMCP server wiring
+│ ├── tools/ # search + upsert MCP tool implementations
+│ └── filters.py # schema-derived typed filter helpers
+│
+├── migration/ # internal migration helpers
+│
+├── query/
+│ ├── query.py # VectorQuery, VectorRangeQuery, FilterQuery, CountQuery, TextQuery, MultiVectorQuery, AggregateHybridQuery, Vector
+│ ├── hybrid.py # HybridQuery (FT.SEARCH-based hybrid)
+│ ├── filter.py # Tag/Text/Num/Geo/GeoRadius filter expressions
+│ ├── aggregate.py # AggregateQuery base class
+│ └── sql.py # SQLQuery (delegates to sql-redis)
+│
+├── redis/
+│ ├── connection.py # client factories, sentinel, cluster helpers
+│ ├── constants.py # version constants
+│ └── utils.py # bytes/dict conversions, cluster-aware FT helpers
+│
+├── schema/
+│ ├── schema.py # IndexSchema, IndexInfo, StorageType
+│ ├── fields.py # TextField, TagField, NumericField, GeoField, FlatVectorField, HNSWVectorField, SVSVectorField + *Attributes
+│ ├── type_utils.py
+│ └── validation.py
+│
+└── utils/
+ ├── compression.py # CompressionAdvisor, SVSConfig
+ ├── full_text_query_helper.py
+ ├── log.py
+ ├── redis_protocol.py
+ ├── token_escaper.py
+ ├── utils.py # deprecated_argument, deprecated_function, sync_wrapper
+ ├── rerank/ # CohereReranker, HFCrossEncoderReranker, VoyageAIReranker
+ └── vectorize/ # text/{openai,azureopenai,cohere,huggingface,mistral}, voyageai, vertexai, bedrock, custom
+```
+
+## Where things are publicly imported from
+
+User-facing imports use the **subpackage**, never the module:
+
+```python
+from redisvl.index import SearchIndex, AsyncSearchIndex
+from redisvl.schema import IndexSchema
+from redisvl.query import VectorQuery, FilterQuery, HybridQuery, MultiVectorQuery, Vector
+from redisvl.query.filter import Tag, Text, Num, Geo, GeoRadius
+from redisvl.extensions.cache.llm import SemanticCache, LangCacheSemanticCache
+from redisvl.extensions.message_history import MessageHistory, SemanticMessageHistory
+from redisvl.extensions.router import SemanticRouter, Route, RoutingConfig
+from redisvl.utils.vectorize import HFTextVectorizer, OpenAITextVectorizer # etc.
+from redisvl.utils.rerank import CohereReranker, HFCrossEncoderReranker, VoyageAIReranker
+```
+
+If you change the **module** something lives in, keep the subpackage import
+working: re-export through `__init__.py`.
+
+## Test layout
+
+| Path | Scope |
+|------|-------|
+| `tests/unit/` | Pure unit tests, no Redis. Safe to run anywhere. |
+| `tests/integration/` | Spins up Redis via `testcontainers`. Requires Docker. |
+| `tests/notebooks/` (via `make test-notebooks`) | Executes every `docs/user_guide/*.ipynb` end-to-end with `nbval-lax`. |
+
+API-dependent tests (LangCache, paid vectorizer/reranker providers) only run
+when invoked with `pytest --run-api-tests`. They require the relevant API keys.
diff --git a/docs/for-ais-only/index.md b/docs/for-ais-only/index.md
new file mode 100644
index 000000000..beb0af485
--- /dev/null
+++ b/docs/for-ais-only/index.md
@@ -0,0 +1,46 @@
+---
+description: For AI agents working on the redisvl codebase. Repository map, build and test, failure modes.
+---
+
+# For AI Agents
+
+This section is written for AI coding agents working on the redisvl codebase
+itself, not for end users of the library.
+
+If you are an AI agent contributing patches, start here. The user-facing docs
+(Concepts, User Guide, API Reference) are the right reading for understanding
+what the library does. The pages in this section are about *how the source is
+laid out*, *how to build and test it*, and *how it tends to fail*.
+
+A flat [`AGENTS.md`](https://github.com/redis/redis-vl-python/blob/main/AGENTS.md)
+file lives at the repo root with a usage-oriented quick reference for agents
+that need to call the library, not contribute to it.
+
+
+
+- :material-map:{ .lg .middle } **[Repository map](REPOSITORY_MAP.md)**
+
+ ---
+
+ Where every package lives, what it owns, and which tests cover it.
+
+- :material-hammer-wrench:{ .lg .middle } **[Build and test](BUILD_AND_TEST.md)**
+
+ ---
+
+ The exact `make` targets, environment variables, and Redis fixtures the
+ test suite expects.
+
+- :material-bug:{ .lg .middle } **[Failure modes](FAILURE_MODES.md)**
+
+ ---
+
+ The common ways changes break the test suite or surface as runtime errors,
+ and the canonical fixes.
+
+
+
+## Machine-readable indexes
+
+- [`llms.txt`](https://docs.redisvl.com/llms.txt) — short, flat index of every doc page in this site.
+- [`llms-full.txt`](https://docs.redisvl.com/llms-full.txt) — full content of every doc page concatenated for one-shot loading.
diff --git a/docs/index.md b/docs/index.md
index 8ccc795b2..3562ad351 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,21 +1,17 @@
---
-myst:
- html_meta:
- "description lang=en": |
- RedisVL documentation - the AI-native Python client for Redis.
-html_theme.sidebar_secondary.remove: false
+description: RedisVL documentation. The AI-native Redis Python client for vector search, semantic caching, message history, and more.
---
-```{image} _static/Redis_Logo_Red_RGB.svg
-:alt: Redis
-:width: 240px
-:align: center
-```
+
## Quick Start
@@ -29,56 +25,45 @@ docker run -d --name redis -p 6379:6379 redis:8.4
Or connect to [Redis Cloud](https://redis.io/cloud) for a managed experience.
-→ *{doc}`/user_guide/01_getting_started`*
+→ *[Getting Started](user_guide/01_getting_started.ipynb)*
---
## Explore the Docs
-::::{grid} 2
-:gutter: 4
+
-:::{grid-item-card} 📖 Concepts
-:link: concepts/index
-:link-type: doc
-:class-card: sd-shadow-sm
+- :material-book-open-variant:{ .lg .middle } **[Concepts](concepts/index.md)**
-Understand how RedisVL works. Architecture, search fundamentals, and extension patterns.
-:::
+ ---
-:::{grid-item-card} 🚀 User Guides
-:link: user_guide/index
-:link-type: doc
-:class-card: sd-shadow-sm
+ Understand how RedisVL works. Architecture, search fundamentals, field attributes, query types, and extension patterns.
-Step-by-step tutorials. Installation, getting started, and deep dives on every feature.
-:::
+- :material-rocket-launch:{ .lg .middle } **[User Guide](user_guide/index.md)**
-:::{grid-item-card} 💡 Examples
-:link: examples/index
-:link-type: doc
-:class-card: sd-shadow-sm
+ ---
-Real-world applications. RAG pipelines, chatbots, recommendation systems, and more.
-:::
+ Step by step. Installation, getting started, and task-oriented recipes for every feature.
-:::{grid-item-card} 📚 API Reference
-:link: api/index
-:link-type: doc
-:class-card: sd-shadow-sm
+- :material-lightbulb-on:{ .lg .middle } **[Examples](examples/index.md)**
-Complete API documentation. Classes, methods, parameters, and examples.
-:::
+ ---
-::::
+ Real-world applications. RAG pipelines, chatbots, recommendation systems, and more.
-```{toctree}
-:maxdepth: 2
-:hidden:
+- :material-api:{ .lg .middle } **[API Reference](api/index.md)**
-Concepts
-User Guides
-Examples
-API
-Changelog
-```
+ ---
+
+ Every public class, method, and parameter, generated from docstrings.
+
+
+
+## For AI agents
+
+If you are an AI agent reading these docs, start with
+[`AGENTS.md`](https://github.com/redis/redis-vl-python/blob/main/AGENTS.md)
+at the repo root for a usage-oriented quick reference, or
+[For AI Agents](for-ais-only/index.md) for an internal map of the source tree. A
+flat [`llms.txt`](https://docs.redisvl.com/llms.txt) index of every doc page is
+also auto-generated at build time.
diff --git a/docs/make.bat b/docs/make.bat
deleted file mode 100644
index 2119f5109..000000000
--- a/docs/make.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=.
-set BUILDDIR=_build
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
- echo.
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
- echo.installed, then set the SPHINXBUILD environment variable to point
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
- echo.may add the Sphinx directory to PATH.
- echo.
- echo.If you don't have Sphinx installed, grab it from
- echo.http://sphinx-doc.org/
- exit /b 1
-)
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-
-:end
-popd
diff --git a/docs/stylesheets/redis-brand.css b/docs/stylesheets/redis-brand.css
new file mode 100644
index 000000000..72412fb73
--- /dev/null
+++ b/docs/stylesheets/redis-brand.css
@@ -0,0 +1,91 @@
+/* Redis brand tokens and Material theme overrides for the redisvl docs.
+ * Mirrors the redis-docs tailwind palette (Redis red #FF4438, Redis ink
+ * #091A23) and self-hosts the Space Grotesk + Space Mono pairing used on
+ * redis.io.
+ */
+@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap");
+
+:root {
+ /* Mirrors redis-docs tailwind.config.js. */
+ --rds-red: #FF4438; /* redis-red-500: primary brand red */
+ --rds-red-hover: #D52D1F; /* redis-red-600: hover/pressed */
+ --rds-red-bright: #E4291E; /* redis-red-700 */
+ --rds-midnight: #091A23; /* redis-ink-900 */
+ --rds-ink: #161F31; /* midnight-700 */
+ --rds-slate: #2D4754; /* redis-pen-700 */
+ --rds-mute: #B9C2C6; /* redis-pen-300 */
+ --rds-line: #E8EBEC; /* redis-pen-200 */
+ --rds-bg: #FFFFFF;
+}
+
+/* Wire the Redis red into Material's primary/accent slots so the top bar,
+ * search bar, links, and active nav items pick it up. */
+:root,
+[data-md-color-scheme="default"],
+[data-md-color-scheme="slate"] {
+ --md-primary-fg-color: var(--rds-red);
+ --md-primary-fg-color--light: #FF6B5F;
+ --md-primary-fg-color--dark: var(--rds-red-hover);
+ --md-accent-fg-color: var(--rds-red);
+ --md-accent-fg-color--transparent: rgba(255, 68, 56, 0.1);
+}
+
+/* Bold every top-level entry in the left sidebar. With navigation.sections,
+ * group labels (Concepts, User Guide, ...) get the section-title treatment,
+ * but single-page top-level items like Home stay regular weight. This rule
+ * gives them the same visual weight as the section headers. */
+.md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__link {
+ font-weight: 700;
+}
+
+/* Landing-page hero: Redis script logo stacked over the wordmark and tagline.
+ * Mirrors the marketing card used on docs.redisvl.com hand-offs. */
+.rds-hero {
+ text-align: center;
+ margin: 1.5rem auto 2.5rem;
+ padding: 0 1rem;
+}
+
+.rds-hero__logo {
+ display: block;
+ margin: 0 auto 0.75rem;
+ width: clamp(180px, 32vw, 280px);
+ aspect-ratio: 85 / 27;
+ height: auto;
+}
+
+.rds-hero h1 {
+ margin: 0;
+ font-weight: 700;
+ font-size: clamp(1.5rem, 3.2vw, 2.125rem);
+ line-height: 1.15;
+ color: var(--rds-midnight);
+ letter-spacing: -0.01em;
+}
+
+[data-md-color-scheme="slate"] .rds-hero h1 {
+ color: #F2F4F5;
+}
+
+.rds-hero__tagline {
+ margin: 0.5rem 0 0;
+ font-size: clamp(1rem, 2vw, 1.25rem);
+ color: var(--rds-slate);
+ font-weight: 400;
+}
+
+[data-md-color-scheme="slate"] .rds-hero__tagline {
+ color: var(--rds-mute);
+}
+
+/* Layout: pin the left sidebar to the viewport's left edge and the right
+ * TOC to the viewport's right edge by removing Material's centered grid
+ * cap. Sidebars keep their default 12.1rem widths; the content column
+ * absorbs all remaining space. Header/tabs use the same grid so they
+ * also span full width, keeping the layout consistent.
+ */
+@media screen and (min-width: 76.25em) {
+ .md-grid {
+ max-width: none;
+ }
+}
diff --git a/docs/user_guide/how_to_guides/index.md b/docs/user_guide/how_to_guides/index.md
index 08a748978..0b773f51f 100644
--- a/docs/user_guide/how_to_guides/index.md
+++ b/docs/user_guide/how_to_guides/index.md
@@ -1,49 +1,58 @@
+---
+description: Task-oriented recipes for RedisVL. LLM extensions, querying, embeddings, optimization, storage, and CLI operations.
+---
+
# How-To Guides
How-to guides are **task-oriented** recipes that help you accomplish specific goals. Each guide focuses on solving a particular problem and can be completed independently.
-::::{grid} 2
-:gutter: 3
+
+
+- :material-robot:{ .lg .middle } **LLM Extensions**
+
+ ---
+
+ - [Cache LLM Responses](../03_llmcache.ipynb) — semantic caching to reduce costs and latency
+ - [Use LangCache as the LLM cache](../13_langcache_semantic_cache.ipynb) — managed cache service with LangCache
+ - [Manage LLM Message History](../07_message_history.ipynb) — persistent chat history with relevancy retrieval
+ - [Route Queries with SemanticRouter](../08_semantic_router.ipynb) — classify intents and route queries
-:::{grid-item-card} 🤖 LLM Extensions
+- :material-magnify:{ .lg .middle } **Querying**
-- [Cache LLM Responses](../03_llmcache.ipynb) -- semantic caching to reduce costs and latency
-- [Use LangCache as the LLM cache](../13_langcache_semantic_cache.ipynb) -- managed cache service with LangCache
-- [Manage LLM Message History](../07_message_history.ipynb) -- persistent chat history with relevancy retrieval
-- [Route Queries with SemanticRouter](../08_semantic_router.ipynb) -- classify intents and route queries
-:::
+ ---
-:::{grid-item-card} 🔍 Querying
+ - [Query and Filter Data](../02_complex_filtering.ipynb) — combine tag, numeric, geo, and text filters
+ - [Use Advanced Query Types](../11_advanced_queries.ipynb) — hybrid, multi-vector, range, and text queries
+ - [Write SQL Queries for Redis](../12_sql_to_redis_queries.ipynb) — translate SQL to Redis query syntax
-- [Query and Filter Data](../02_complex_filtering.ipynb) -- combine tag, numeric, geo, and text filters
-- [Use Advanced Query Types](../11_advanced_queries.ipynb) -- hybrid, multi-vector, range, and text queries
-- [Write SQL Queries for Redis](../12_sql_to_redis_queries.ipynb) -- translate SQL to Redis query syntax
-:::
+- :material-vector-square:{ .lg .middle } **Embeddings**
-:::{grid-item-card} 🧮 Embeddings
+ ---
-- [Create Embeddings with Vectorizers](../04_vectorizers.ipynb) -- OpenAI, Cohere, HuggingFace, and more
-- [Cache Embeddings](../10_embeddings_cache.ipynb) -- reduce costs by caching embedding vectors
-:::
+ - [Create Embeddings with Vectorizers](../04_vectorizers.ipynb) — OpenAI, Cohere, HuggingFace, and more
+ - [Cache Embeddings](../10_embeddings_cache.ipynb) — reduce costs by caching embedding vectors
-:::{grid-item-card} ⚡ Optimization
+- :material-flash:{ .lg .middle } **Optimization**
-- [Rerank Search Results](../06_rerankers.ipynb) -- improve relevance with cross-encoders and rerankers
-- [Optimize Indexes with SVS-VAMANA](../09_svs_vamana.ipynb) -- graph-based vector search with compression
-:::
+ ---
-:::{grid-item-card} 💾 Storage
+ - [Rerank Search Results](../06_rerankers.ipynb) — improve relevance with cross-encoders and rerankers
+ - [Optimize Indexes with SVS-VAMANA](../09_svs_vamana.ipynb) — graph-based vector search with compression
-- [Choose a Storage Type](../05_hash_vs_json.ipynb) -- Hash vs JSON formats and nested data
-:::
+- :material-database:{ .lg .middle } **Storage**
-:::{grid-item-card} 💻 CLI Operations
+ ---
-- [Manage Indices with the CLI](../cli.ipynb) -- create, inspect, and delete indices from your terminal
-- [Run RedisVL MCP](mcp.md) -- expose an existing Redis index to MCP clients
-:::
+ - [Choose a Storage Type](../05_hash_vs_json.ipynb) — Hash vs JSON formats and nested data
-::::
+- :material-console:{ .lg .middle } **CLI & MCP**
+
+ ---
+
+ - [Manage Indices with the CLI](../cli.ipynb) — create, inspect, and delete indices from your terminal
+ - [Run RedisVL MCP](mcp.md) — expose an existing Redis index to MCP clients
+
+
## Quick Reference
@@ -63,21 +72,3 @@ How-to guides are **task-oriented** recipes that help you accomplish specific go
| Decide on storage format | [Choose a Storage Type](../05_hash_vs_json.ipynb) |
| Manage indices from terminal | [Manage Indices with the CLI](../cli.ipynb) |
| Expose an index through MCP | [Run RedisVL MCP](mcp.md) |
-
-```{toctree}
-:hidden:
-
-Cache LLM Responses <../03_llmcache>
-Use LangCache as the LLM cache <../13_langcache_semantic_cache>
-Manage LLM Message History <../07_message_history>
-Route Queries with SemanticRouter <../08_semantic_router>
-Query and Filter Data <../02_complex_filtering>
-Create Embeddings with Vectorizers <../04_vectorizers>
-Choose a Storage Type <../05_hash_vs_json>
-Rerank Search Results <../06_rerankers>
-Optimize Indexes with SVS-VAMANA <../09_svs_vamana>
-Cache Embeddings <../10_embeddings_cache>
-Use Advanced Query Types <../11_advanced_queries>
-Write SQL Queries for Redis <../12_sql_to_redis_queries>
-Run RedisVL MCP
-```
diff --git a/docs/user_guide/how_to_guides/mcp.md b/docs/user_guide/how_to_guides/mcp.md
index 5a1755aa0..818896368 100644
--- a/docs/user_guide/how_to_guides/mcp.md
+++ b/docs/user_guide/how_to_guides/mcp.md
@@ -1,15 +1,12 @@
---
-myst:
- html_meta:
- "description lang=en": |
- How to run the RedisVL MCP server, configure it, and use its search and upsert tools.
+description: Run the RedisVL MCP server, configure it, and use its search and upsert tools.
---
# Run RedisVL MCP
This guide shows how to run the RedisVL MCP server against an existing Redis index, configure its behavior, and use the MCP tools it exposes.
-For the higher-level design, see {doc}`/concepts/mcp`.
+For the higher-level design, see [MCP](../../concepts/mcp.md).
## Before You Start
@@ -53,9 +50,9 @@ Run it over SSE:
uvx --from redisvl[mcp] rvl mcp --config /path/to/mcp.yaml --transport sse --host 0.0.0.0 --port 9000
```
-```{warning}
-Streamable HTTP and SSE endpoints are **unauthenticated by default**. Only bind to public interfaces (`--host 0.0.0.0`) on trusted networks or behind an authenticating reverse proxy. When not using `--read-only`, the `upsert-records` tool is also exposed to any client that can reach the server.
-```
+!!! warning
+
+ Streamable HTTP and SSE endpoints are **unauthenticated by default**. Only bind to public interfaces (`--host 0.0.0.0`) on trusted networks or behind an authenticating reverse proxy. When not using `--read-only`, the `upsert-records` tool is also exposed to any client that can reach the server.
Run it in read-only mode to expose search without upsert:
@@ -167,338 +164,3 @@ indexes:
- `vectorizer` is required for query embedding and server-side embedding, but optional for fulltext-only configs
- `runtime.max_result_window` caps deep paging by limiting the maximum `offset + limit`
- `schema_overrides` is only for patching incomplete field attrs discovered from Redis
-
-### Fulltext-Only Config
-
-For a non-vector deployment, omit vector-only settings entirely:
-
-```yaml
-server:
- redis_url: ${REDIS_URL}
-
-indexes:
- knowledge:
- redis_name: knowledge
-
- search:
- type: fulltext
- params:
- text_scorer: BM25STD
- stopwords: english
-
- runtime:
- text_field_name: content
- default_limit: 10
- max_limit: 25
- max_result_window: 1000
- max_upsert_records: 64
- skip_embedding_if_present: true
- startup_timeout_seconds: 30
- request_timeout_seconds: 60
- max_concurrency: 16
-```
-
-## Tool Contracts
-
-RedisVL MCP exposes a small, implementation-owned contract.
-
-### `search-records`
-
-Arguments:
-
-- `query`
-- `limit`
-- `offset`
-- `filter`
-- `return_fields`
-
-Example request payload:
-
-```json
-{
- "query": "incident response runbook",
- "limit": 2,
- "offset": 0,
- "filter": {
- "and": [
- { "field": "category", "op": "eq", "value": "operations" },
- { "field": "rating", "op": "gte", "value": 4 }
- ]
- },
- "return_fields": ["title", "content", "category", "rating"]
-}
-```
-
-Example response payload:
-
-```json
-{
- "search_type": "hybrid",
- "offset": 0,
- "limit": 2,
- "results": [
- {
- "id": "knowledge:runbook:eu-failover",
- "score": 0.82,
- "score_type": "hybrid_score",
- "record": {
- "title": "EU failover runbook",
- "content": "Restore traffic after a regional failover.",
- "category": "operations",
- "rating": 5
- }
- }
- ]
-}
-```
-
-Notes:
-
-- `search_type` is response metadata, not a request argument
-- when `return_fields` is omitted, RedisVL MCP returns all non-vector fields
-- returning the configured vector field is rejected
-- `filter` accepts either a raw string or a JSON DSL object
-- the `search-records` tool description includes schema-derived hints for typed JSON DSL filter fields, object-filter `exists` support, and valid `return_fields`
-- `offset + limit` must stay within `runtime.max_result_window`
-- startup rejects schemas that use MCP-reserved score metadata field names:
- `id`, `__key`, `key`, `score`, `vector_distance`, `__score`, `text_score`, `vector_similarity`, `hybrid_score`
-
-### `upsert-records`
-
-Arguments:
-
-- `records`
-- `id_field`
-- `skip_embedding_if_present`
-
-Example request payload:
-
-```json
-{
- "records": [
- {
- "doc_id": "doc-42",
- "content": "Updated operational guidance for failover handling.",
- "category": "operations",
- "rating": 5
- }
- ],
- "id_field": "doc_id"
-}
-```
-
-Example response payload:
-
-```json
-{
- "status": "success",
- "keys_upserted": 1,
- "keys": ["knowledge:doc-42"]
-}
-```
-
-Notes:
-
-- this tool is not registered in read-only mode
-- when server-side embedding is configured, records that need embedding must contain `runtime.default_embed_text_field`
-- when `skip_embedding_if_present` is `true`, records that already contain the configured vector field can skip re-embedding
-- when a vector field is configured but server-side embedding is disabled, callers must supply vectors explicitly
-
-## Search Examples
-
-### Read-Only Vector Search
-
-Use read-only mode when assistants should only retrieve data:
-
-```bash
-uvx --from redisvl[mcp] rvl mcp --config /path/to/mcp.yaml --read-only
-```
-
-With a `search.type` of `vector`, callers send only the query, filters, pagination, and field projection:
-
-```json
-{
- "query": "cache invalidation incident",
- "limit": 3,
- "return_fields": ["title", "content", "category"]
-}
-```
-
-### Raw String Filter
-
-Pass a raw Redis filter string through unchanged:
-
-```json
-{
- "query": "science",
- "filter": "@category:{science}",
- "return_fields": ["content", "category"]
-}
-```
-
-### JSON DSL Filter
-
-The DSL supports logical operators and type-checked field operators:
-
-```json
-{
- "query": "science",
- "filter": {
- "and": [
- { "field": "category", "op": "eq", "value": "science" },
- { "field": "rating", "op": "gte", "value": 4 }
- ]
- },
- "return_fields": ["content", "category", "rating"]
-}
-```
-
-### Pagination and Field Projection
-
-```json
-{
- "query": "science",
- "limit": 1,
- "offset": 1,
- "return_fields": ["content", "category"]
-}
-```
-
-### Hybrid Search With `schema_overrides`
-
-Use `schema_overrides` when Redis inspection cannot recover complete vector attrs, then keep hybrid behavior in config:
-
-```yaml
-schema_overrides:
- fields:
- - name: embedding
- type: vector
- attrs:
- algorithm: flat
- dims: 1536
- datatype: float32
- distance_metric: cosine
-
-search:
- type: hybrid
- params:
- text_scorer: BM25STD
- stopwords: english
- vector_search_method: KNN
- combination_method: LINEAR
- linear_text_weight: 0.3
-```
-
-The MCP caller still sends the same request shape:
-
-```json
-{
- "query": "legacy cache invalidation flow",
- "filter": { "field": "category", "op": "eq", "value": "release-notes" },
- "return_fields": ["title", "content", "release_version"]
-}
-```
-
-## Upsert Examples
-
-### Auto-Embed New Records
-
-If a record does not include the configured vector field, RedisVL MCP embeds `runtime.default_embed_text_field` and writes the result:
-
-```json
-{
- "records": [
- {
- "content": "First upserted document",
- "category": "science",
- "rating": 5
- },
- {
- "content": "Second upserted document",
- "category": "health",
- "rating": 4
- }
- ]
-}
-```
-
-### Update Existing Records With `id_field`
-
-```json
-{
- "records": [
- {
- "doc_id": "doc-1",
- "content": "Updated content",
- "category": "engineering",
- "rating": 5
- }
- ],
- "id_field": "doc_id"
-}
-```
-
-### Control Re-Embedding With `skip_embedding_if_present`
-
-```json
-{
- "records": [
- {
- "doc_id": "doc-2",
- "content": "Existing content",
- "category": "science",
- "rating": 4
- }
- ],
- "id_field": "doc_id",
- "skip_embedding_if_present": false
-}
-```
-
-Set `skip_embedding_if_present` to `false` when you want the server to regenerate embeddings during upsert. In most cases, the caller should omit the vector field and let the server manage embeddings from `runtime.default_embed_text_field`.
-
-### Plain Writes Without Embedding
-
-For fulltext-only indexes, `upsert-records` can write records without any vectorizer or vector field configuration:
-
-```json
-{
- "records": [
- {
- "content": "Updated FAQ entry",
- "category": "support",
- "rating": 5
- }
- ]
-}
-```
-
-If you configure a vector field but omit server-side embedding support, the caller must send vectors in each record instead of relying on the server to generate them.
-
-## Troubleshooting
-
-### Missing MCP Dependencies
-
-If `rvl mcp` reports missing optional dependencies, install the MCP extra:
-
-```bash
-pip install redisvl[mcp]
-```
-
-If the configured vectorizer needs a provider SDK, install that provider extra too. Fulltext-only configs can omit the vectorizer entirely.
-
-### Configured Redis Index Does Not Exist
-
-The server only binds to an existing index. Create the index first, then point `indexes..redis_name` at that index name.
-
-### Missing Required Environment Variables
-
-YAML values support `${VAR}` and `${VAR:-default}` substitution. Missing required variables fail startup before the server registers tools.
-
-### Vectorizer Dimension Mismatch
-
-If the vectorizer dims do not match the configured vector field dims, startup fails. Make sure the embedding model and the effective vector field dimensions are aligned.
-
-### Hybrid Config Requires Native Runtime Support
-
-Some hybrid params depend on native hybrid support in Redis and redis-py. If your environment does not support that path, remove native-only params such as `knn_ef_runtime` or upgrade Redis and redis-py.
diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md
index 680abb3fc..75868d708 100644
--- a/docs/user_guide/index.md
+++ b/docs/user_guide/index.md
@@ -1,85 +1,59 @@
---
-myst:
- html_meta:
- "description lang=en": |
- User guides for RedisVL - Learn how to build AI applications with Redis as your vector database
+description: RedisVL user guide. Installation, getting started, how-to guides, CLI reference, and use cases.
---
-# Guides
+# User Guide
-Welcome to the RedisVL guides! Whether you're just getting started or building advanced AI applications, these guides will help you make the most of Redis as your vector database.
+RedisVL guides cover everything from installation to advanced AI patterns. Whether you're just getting started or building production workloads, these guides will help you make the most of Redis as your vector database.
-::::{grid} 2
-:gutter: 3
+
-:::{grid-item-card} 📦 Installation
-:link: installation
-:link-type: doc
+- :material-package-variant:{ .lg .middle } **[Installation](installation.md)**
-**Set up RedisVL.** Install the library and configure your Redis instance for vector search.
+ ---
-+++
-pip install • Redis Cloud • Docker
-:::
+ Set up RedisVL. Install the library and configure your Redis instance for vector search.
-:::{grid-item-card} 🚀 Getting Started
-:link: 01_getting_started
-:link-type: doc
+ pip install · Redis Cloud · Docker
-**New to RedisVL?** Start here to learn the basics and build your first vector search application in minutes.
+- :material-rocket-launch:{ .lg .middle } **[Getting Started](01_getting_started.ipynb)**
-+++
-Schema → Index → Load → Query
-:::
+ ---
-:::{grid-item-card} 🛠️ How-To Guides
-:link: how_to_guides/index
-:link-type: doc
+ New to RedisVL? Start here to learn the basics and build your first vector search application in minutes.
-**Solve specific problems.** Task-oriented recipes for LLM extensions, querying, embeddings, optimization, and storage.
+ Schema → Index → Load → Query
-+++
-LLM Caching • Filtering • MCP • Reranking
-:::
+- :material-tools:{ .lg .middle } **[How-To Guides](how_to_guides/index.md)**
-:::{grid-item-card} 🧠 MCP Setup
-:link: how_to_guides/mcp
-:link-type: doc
+ ---
-**Expose Redis through MCP.** Run the RedisVL MCP server, configure one existing index, and use search or optional upsert tools.
+ Solve specific problems. Task-oriented recipes for LLM extensions, querying, embeddings, optimization, and storage.
-+++
-stdio, HTTP, SSE • One index • Search and upsert
-:::
+ LLM Caching · Filtering · MCP · Reranking
-:::{grid-item-card} 💻 CLI Reference
-:link: cli
-:link-type: doc
+- :material-robot:{ .lg .middle } **[MCP Setup](how_to_guides/mcp.md)**
-**Command-line tools.** Manage indices, inspect stats, and work with schemas using the `rvl` CLI.
+ ---
-+++
-rvl index • rvl stats • Schema YAML
-:::
+ Expose Redis through MCP. Run the RedisVL MCP server, configure one existing index, and use search or optional upsert tools.
-:::{grid-item-card} 💡 Use Cases
-:link: use_cases/index
-:link-type: doc
+ stdio · HTTP · SSE
-**Apply RedisVL to real-world problems.** See which guides map to your use case.
+- :material-console:{ .lg .middle } **[CLI Reference](cli.ipynb)**
-+++
-Agent Context • Agent Optimization • Search • RecSys
-:::
+ ---
-::::
+ Command-line tools. Manage indices, inspect stats, and work with schemas using the `rvl` CLI.
-```{toctree}
-:maxdepth: 2
+ rvl index · rvl stats · Schema YAML
-Installation
-Getting Started <01_getting_started>
-how_to_guides/index
-CLI Reference
-use_cases/index
-```
+- :material-lightbulb-on:{ .lg .middle } **[Use Cases](use_cases/index.md)**
+
+ ---
+
+ Apply RedisVL to real-world problems. See which guides map to your use case.
+
+ Agent Context · Agent Optimization · Search · RecSys
+
+
diff --git a/docs/user_guide/installation.md b/docs/user_guide/installation.md
index d0aed6cec..84d2228ec 100644
--- a/docs/user_guide/installation.md
+++ b/docs/user_guide/installation.md
@@ -1,10 +1,3 @@
----
-myst:
- html_meta:
- "description lang=en": |
- Installation instructions for RedisVL
----
-
# Install RedisVL
There are a few ways to install RedisVL. The easiest way is to use pip.
@@ -14,7 +7,7 @@ There are a few ways to install RedisVL. The easiest way is to use pip.
Install `redisvl` into your Python (>=3.10) environment using `pip`:
```bash
-$ pip install -U redisvl
+pip install -U redisvl
```
RedisVL comes with a few dependencies that are automatically installed, however, several optional
@@ -22,36 +15,36 @@ dependencies can be installed separately based on your needs:
```bash
# Vectorizer providers
-$ pip install redisvl[openai] # OpenAI embeddings
-$ pip install redisvl[cohere] # Cohere embeddings and reranking
-$ pip install redisvl[mistralai] # Mistral AI embeddings
-$ pip install redisvl[voyageai] # Voyage AI embeddings and reranking
-$ pip install redisvl[sentence-transformers] # HuggingFace local embeddings
-$ pip install redisvl[vertexai] # Google Vertex AI embeddings
-$ pip install redisvl[bedrock] # AWS Bedrock embeddings
+pip install redisvl[openai] # OpenAI embeddings
+pip install redisvl[cohere] # Cohere embeddings and reranking
+pip install redisvl[mistralai] # Mistral AI embeddings
+pip install redisvl[voyageai] # Voyage AI embeddings and reranking
+pip install redisvl[sentence-transformers] # HuggingFace local embeddings
+pip install redisvl[vertexai] # Google Vertex AI embeddings
+pip install redisvl[bedrock] # AWS Bedrock embeddings
# Other optional features
-$ pip install redisvl[mcp] # RedisVL MCP server support (Python 3.10+)
-$ pip install redisvl[langcache] # LangCache managed service integration
-$ pip install redisvl[sql-redis] # SQL query support
+pip install redisvl[mcp] # RedisVL MCP server support (Python 3.10+)
+pip install redisvl[langcache] # LangCache managed service integration
+pip install redisvl[sql-redis] # SQL query support
```
If you use ZSH, remember to escape the brackets:
```bash
-$ pip install redisvl\[openai\]
+pip install redisvl\[openai\]
```
You can install multiple optional dependencies at once:
```bash
-$ pip install redisvl[mcp,openai,cohere,sentence-transformers]
+pip install redisvl[mcp,openai,cohere,sentence-transformers]
```
To install **all** optional dependencies at once:
```bash
-$ pip install redisvl[all]
+pip install redisvl[all]
```
## Install RedisVL from Source
@@ -59,11 +52,11 @@ $ pip install redisvl[all]
To install RedisVL from source, clone the repository and install the package using `pip`:
```bash
-$ git clone https://github.com/redis/redis-vl-python.git && cd redis-vl-python
-$ pip install .
+git clone https://github.com/redis/redis-vl-python.git && cd redis-vl-python
+pip install .
# or for an editable installation (for developers of RedisVL)
-$ pip install -e .
+pip install -e .
```
## Development Installation
@@ -72,16 +65,16 @@ For contributors who want to develop RedisVL, we recommend using [uv](https://do
```bash
# Clone the repository
-$ git clone https://github.com/redis/redis-vl-python.git && cd redis-vl-python
+git clone https://github.com/redis/redis-vl-python.git && cd redis-vl-python
# Install uv if you don't have it
-$ pip install uv
+pip install uv
# Install all dependencies (including dev and docs)
-$ uv sync
+uv sync
# Or use make
-$ make install
+make install
```
This installs the package in editable mode along with all development dependencies (testing, linting, type checking) and documentation dependencies.
@@ -90,19 +83,19 @@ This installs the package in editable mode along with all development dependenci
```bash
# Run tests (no external APIs required)
-$ make test
+make test
# Run all tests (includes API-dependent tests)
-$ make test-all
+make test-all
# Format code
-$ make format
+make format
# Run type checking
-$ make check-types
+make check-types
# Run full check (lint + test)
-$ make check
+make check
```
### Pre-commit Hooks
@@ -110,27 +103,26 @@ $ make check
We use pre-commit hooks to ensure code quality. Install them with:
```bash
-$ pre-commit install
+pre-commit install
```
Run hooks manually on all files:
```bash
-$ pre-commit run --all-files
+pre-commit run --all-files
```
## Installing Redis
RedisVL requires Redis with [Redis Search](https://redis.io/docs/latest/develop/ai/search-and-query/) available. There are several options:
-1. [Redis Cloud](https://redis.io/cloud), a fully managed cloud offering with a free tier
-2. [Redis 8+ (Docker)](https://redis.io/downloads/), for local development and testing
-3. [Redis Enterprise](https://redis.com/redis-enterprise/), a commercial self-hosted option
+1. [Redis Cloud](https://redis.io/cloud) — a fully managed cloud offering with a free tier
+2. [Redis 8+ (Docker)](https://redis.io/downloads/) — for local development and testing
+3. [Redis Enterprise](https://redis.com/redis-enterprise/) — a commercial self-hosted option
### Redis Cloud
-Redis Cloud is the easiest way to get started with RedisVL. You can sign up for a free account [here](https://redis.io/cloud). Make sure to have `Redis Search`
-enabled when creating your database.
+Redis Cloud is the easiest way to get started with RedisVL. You can sign up for a free account [here](https://redis.io/cloud). Make sure to have **Redis Search** enabled when creating your database.
### Redis 8+ (local development)
@@ -142,6 +134,7 @@ docker run -d --name redis -p 6379:6379 redis:8.4
Redis 8 includes Redis Search and built-in vector search capabilities.
+
### Redis Enterprise (self-hosted)
Redis Enterprise is a commercial offering that can be self-hosted. You can download the latest version [here](https://redis.io/downloads/).
@@ -159,19 +152,19 @@ from redisvl.index import SearchIndex, AsyncSearchIndex
# Format: redis+sentinel://[username:password@]host1:port1,host2:port2/service_name[/db]
index = SearchIndex.from_yaml(
"schema.yaml",
- redis_url="redis+sentinel://sentinel1:26379,sentinel2:26379/mymaster"
+ redis_url="redis+sentinel://sentinel1:26379,sentinel2:26379/mymaster",
)
# Async connection via Sentinel
async_index = AsyncSearchIndex.from_yaml(
"schema.yaml",
- redis_url="redis+sentinel://sentinel1:26379,sentinel2:26379/mymaster"
+ redis_url="redis+sentinel://sentinel1:26379,sentinel2:26379/mymaster",
)
# With authentication and database selection
index = SearchIndex.from_yaml(
"schema.yaml",
- redis_url="redis+sentinel://user:pass@sentinel1:26379,sentinel2:26379/mymaster/0"
+ redis_url="redis+sentinel://user:pass@sentinel1:26379,sentinel2:26379/mymaster/0",
)
```
diff --git a/docs/user_guide/use_cases/index.md b/docs/user_guide/use_cases/index.md
index 121809227..d4877a0a9 100644
--- a/docs/user_guide/use_cases/index.md
+++ b/docs/user_guide/use_cases/index.md
@@ -1,40 +1,51 @@
+---
+description: Apply RedisVL to real-world AI workloads. Agent context, optimization, search, recommendations.
+---
+
# Use Cases
RedisVL powers a wide range of AI applications. Here's how to apply its features to common use cases.
-::::{grid} 2
-:gutter: 3
+
+
+- :material-brain:{ .lg .middle } **Agent Context**
+
+ ---
+
+ Provide agents with the right information at the right time.
+
+ - **RAG** — Retrieval-Augmented Generation with [vector search](../01_getting_started.ipynb) and [hybrid queries](../11_advanced_queries.ipynb)
+ - **Memory** — Persistent [message history](../07_message_history.ipynb) across sessions
+ - **Context Engineering** — Combine [filtering](../02_complex_filtering.ipynb), [reranking](../06_rerankers.ipynb), and [embeddings](../04_vectorizers.ipynb) to curate the optimal context window
+
+- :material-flash:{ .lg .middle } **Agent Optimization**
+
+ ---
+
+ Reduce latency and cost for AI workloads.
+
+ - **Semantic Caching** — Cache LLM responses by meaning with [SemanticCache](../03_llmcache.ipynb)
+ - **Embeddings Caching** — Avoid redundant embedding calls with [EmbeddingsCache](../10_embeddings_cache.ipynb)
+ - **Semantic Routing** — Route queries to the right handler with [SemanticRouter](../08_semantic_router.ipynb)
-:::{grid-item-card} 🧠 Agent Context
-Provide agents with the right information at the right time.
+- :material-magnify:{ .lg .middle } **General Search**
-- **RAG** -- Retrieval-Augmented Generation with [vector search](../01_getting_started.ipynb) and [hybrid queries](../11_advanced_queries.ipynb)
-- **Memory** -- Persistent [message history](../07_message_history.ipynb) across sessions
-- **Context Engineering** -- Combine [filtering](../02_complex_filtering.ipynb), [reranking](../06_rerankers.ipynb), and [embeddings](../04_vectorizers.ipynb) to curate the optimal context window
-:::
+ ---
-:::{grid-item-card} ⚡ Agent Optimization
-Reduce latency and cost for AI workloads.
+ Build search experiences that understand meaning, not just keywords.
-- **Semantic Caching** -- Cache LLM responses by meaning with [SemanticCache](../03_llmcache.ipynb)
-- **Embeddings Caching** -- Avoid redundant embedding calls with [EmbeddingsCache](../10_embeddings_cache.ipynb)
-- **Semantic Routing** -- Route queries to the right handler with [SemanticRouter](../08_semantic_router.ipynb)
-:::
+ - **Semantic Search** — [Vector queries](../01_getting_started.ipynb) with [complex filtering](../02_complex_filtering.ipynb)
+ - **Hybrid Search** — Combine keyword and vector search with [advanced query types](../11_advanced_queries.ipynb)
+ - **SQL Translation** — Use familiar SQL syntax with [SQLQuery](../12_sql_to_redis_queries.ipynb)
-:::{grid-item-card} 🔍 General Search
-Build search experiences that understand meaning, not just keywords.
+- :material-account-multiple:{ .lg .middle } **Personalization & RecSys**
-- **Semantic Search** -- [Vector queries](../01_getting_started.ipynb) with [complex filtering](../02_complex_filtering.ipynb)
-- **Hybrid Search** -- Combine keyword and vector search with [advanced query types](../11_advanced_queries.ipynb)
-- **SQL Translation** -- Use familiar SQL syntax with [SQLQuery](../12_sql_to_redis_queries.ipynb)
-:::
+ ---
-:::{grid-item-card} 🎯 Personalization & RecSys
-Drive engagement with personalized recommendations.
+ Drive engagement with personalized recommendations.
-- **User Similarity** -- Find similar users or items using [vector search](../01_getting_started.ipynb)
-- **Real-Time Ranking** -- Combine vector similarity with [metadata filtering](../02_complex_filtering.ipynb) and [reranking](../06_rerankers.ipynb)
-- **Multi-Signal Matching** -- Search across multiple embedding fields with [MultiVectorQuery](../11_advanced_queries.ipynb)
-:::
+ - **User Similarity** — Find similar users or items using [vector search](../01_getting_started.ipynb)
+ - **Real-Time Ranking** — Combine vector similarity with [metadata filtering](../02_complex_filtering.ipynb) and [reranking](../06_rerankers.ipynb)
+ - **Multi-Signal Matching** — Search across multiple embedding fields with [MultiVectorQuery](../11_advanced_queries.ipynb)
-::::
+