Skip to content

DOC-5457: add the new SVS-VAMANA vector algorithm type #1822

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: feat-ros-8.2
Choose a base branch
from

Conversation

dwdougherty
Copy link
Collaborator

@dwdougherty dwdougherty commented Jul 8, 2025

DOC-5457

Note to reviewers: there were no applicable changes to the FT.CREATE command page; it refers to the main vector indexing page for all vector-related parameters. This is where the lion's share of the changes were made.

@dwdougherty dwdougherty requested review from alonre24, meiravgri and a team July 8, 2025 16:09
@dwdougherty dwdougherty self-assigned this Jul 8, 2025
Copy link
Contributor

github-actions bot commented Jul 8, 2025

Copy link
Collaborator

@mich-elle-luna mich-elle-luna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you! A couple suggestions to remove dups, but maybe this is incorrect? and the file to update for the uni link.

Copy link

@meiravgri meiravgri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!


**Required attributes**

| Attribute | Description |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding "Default value" column. Clearer IMO

Comment on lines +134 to +140
Scalable Vector Search (SVS) is an Intel project in which a new vector search library, VAMANA graph index, was created. SVS-VAMANA supports highly accurate compressed vector indexes. You can read more about the project [here](https://intel.github.io/ScalableVectorSearch/intro.html). Support for `SVS-VAMANA` indexing was added in Redis 8.2.

Choose the `SVS-VAMANA` index type when you need vector search

- on billions of high-dimensional vectors,
- at high accuracy and state-of-the-art speed,
- using less memory than alternatives.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should include a more comprehensive explanation that highlights the differences between HNSW and VAMANA, as well as when to choose each.
I suggest starting with a short description of the vanilla SVS-VAMANA algorithm, then emphasizing that its main advantage is the ability to use it with the COMPRESSION parameter to reduce memory usage.
That’s mentioned here, but I think it could be clearer.
@alonre24 WDYT? Also, can we ask them for a simple guideline table that outlines when to choose each compression type, depending on the data characteristics?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say here that you should choose the SVS-VAMANA index when you need a vector search

  1. search performance and scalability are more important than perfect search accuracy (same as HNSW)
  2. using less memory than alternatives.
  3. to be optimized for running on Intel hardware

Regarding the compression type, I would add a clarification in the appropriate section

Comment on lines +156 to +157
| `COMPRESSION` | Compression algorithm (`LVQ8`, `LVQ8`, `LVQ4`, `LVQ4x4`, `LVQ4x8`, `LeanVec4x8`, or `LeanVec8x8`). Vectors will be compressed during indexing. Note: On non-Intel platforms, `SVS-VAMANA` with `COMPRESSION` will fall back to Intel’s basic quantization implementation. |
| `CONSTRUCTION_WINDOW_SIZE` | The search window size (the default is 200) to use during graph construction. A higher search window size will yield a higher quality graph since more overall vertexes are considered, but will increase construction time. |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the note should be placed outside the table in big bold letters :)

Copy link

@meiravgri meiravgri Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: On non-Intel platforms, SVS-VAMANA with COMPRESSION will fall back to Intel’s basic quantization implementation. |

this note

Comment on lines +156 to +157
| `COMPRESSION` | Compression algorithm (`LVQ8`, `LVQ8`, `LVQ4`, `LVQ4x4`, `LVQ4x8`, `LeanVec4x8`, or `LeanVec8x8`). Vectors will be compressed during indexing. Note: On non-Intel platforms, `SVS-VAMANA` with `COMPRESSION` will fall back to Intel’s basic quantization implementation. |
| `CONSTRUCTION_WINDOW_SIZE` | The search window size (the default is 200) to use during graph construction. A higher search window size will yield a higher quality graph since more overall vertexes are considered, but will increase construction time. |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `COMPRESSION` | Compression algorithm (`LVQ8`, `LVQ8`, `LVQ4`, `LVQ4x4`, `LVQ4x8`, `LeanVec4x8`, or `LeanVec8x8`). Vectors will be compressed during indexing. Note: On non-Intel platforms, `SVS-VAMANA` with `COMPRESSION` will fall back to Intel’s basic quantization implementation. |
| `CONSTRUCTION_WINDOW_SIZE` | The search window size (the default is 200) to use during graph construction. A higher search window size will yield a higher quality graph since more overall vertexes are considered, but will increase construction time. |
| `COMPRESSION` | Compression algorithm (`LVQ8`, `LVQ8`, `LVQ4`, `LVQ4x4`, `LVQ4x8`, `LeanVec4x8`, or `LeanVec8x8`). Vectors will be compressed during indexing. Note: On non-Intel platforms, `SVS-VAMANA` with `COMPRESSION` will fall back to Intel’s basic scalar quantization implementation. |
| `CONSTRUCTION_WINDOW_SIZE` | The search window size (the default is 200) to use during graph construction. A higher search window size will yield a higher quality graph since more overall vertexes are considered, but will increase construction time. |

@@ -157,6 +157,7 @@ Where:

- `FLAT`: brute force algorithm.
- `HNSW`: hierarchical, navigable, small world algorithm.
- `SVS-VAMANA`: a graph-based nearest neighbor search algorithm.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `SVS-VAMANA`: a graph-based nearest neighbor search algorithm.
- `SVS-VAMANA`: a graph-based nearest neighbor search algorithm, optimized for use with compression methods to reduce memory footprint.

|:----------|:------------|:--------------|
| `SEARCH_WINDOW_SIZE` | The size of the search window (applies only to KNN searches). | 10 or the value that was passed upon index creation. |
| `GRAPH_MAX_DEGREE` | The maximum node degree in the graph. | 32 or the value that was passed upon index creation. |
| `SEARCH_WINDOW_SIZE` | The size of the search window. | 10 or the value that was passed upon index creation. |
Copy link

@meiravgri meiravgri Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dup SEARCH_WINDOW_SIZE?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and missing USE_SEARCH_HISTORY

Comment on lines +436 to +439
| `SEARCH_WINDOW_SIZE` | The size of the search window (applies only to KNN searches). | 10 or the value that was passed upon index creation. |
| `GRAPH_MAX_DEGREE` | The maximum node degree in the graph. | 32 or the value that was passed upon index creation. |
| `SEARCH_WINDOW_SIZE` | The size of the search window. | 10 or the value that was passed upon index creation. |
| `EPSILON` | The range search approximation factor. | 0.01 or the value that was passed upon index creation. |
Copy link

@meiravgri meiravgri Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GRAPH_MAX_DEGREE is not a runtime param

Copy link
Contributor

@alonre24 alonre24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

few comments

Comment on lines +134 to +140
Scalable Vector Search (SVS) is an Intel project in which a new vector search library, VAMANA graph index, was created. SVS-VAMANA supports highly accurate compressed vector indexes. You can read more about the project [here](https://intel.github.io/ScalableVectorSearch/intro.html). Support for `SVS-VAMANA` indexing was added in Redis 8.2.

Choose the `SVS-VAMANA` index type when you need vector search

- on billions of high-dimensional vectors,
- at high accuracy and state-of-the-art speed,
- using less memory than alternatives.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say here that you should choose the SVS-VAMANA index when you need a vector search

  1. search performance and scalability are more important than perfect search accuracy (same as HNSW)
  2. using less memory than alternatives.
  3. to be optimized for running on Intel hardware

Regarding the compression type, I would add a clarification in the appropriate section


| Attribute | Description |
|:---------------------------|:-----------------------------------------|
| `COMPRESSION` | Compression algorithm (`LVQ8`, `LVQ8`, `LVQ4`, `LVQ4x4`, `LVQ4x8`, `LeanVec4x8`, or `LeanVec8x8`). Vectors will be compressed during indexing. Note: On non-Intel platforms, `SVS-VAMANA` with `COMPRESSION` will fall back to Intel’s basic quantization implementation. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. typo - LVQ8 is here twice.
  2. I would suggest reffering here - https://intel.github.io/ScalableVectorSearch/performance/using_compression.html to help choosing the appropriate compression type (+ we will ask Intel to write here about LeanVec as well, which currently available here https://intel.github.io/ScalableVectorSearch/python/experimental/leanvec.html)
  3. "SVS-VAMANA with COMPRESSION will fall back to Intel’s basic quantization implementation." - I would rephrase to SVS-VAMANA with COMPRESSION will fall back to SVS implementation of global scalar quantisation using 8 bits.

|:----------|:------------|:--------------|
| `SEARCH_WINDOW_SIZE` | The size of the search window (applies only to KNN searches). | 10 or the value that was passed upon index creation. |
| `GRAPH_MAX_DEGREE` | The maximum node degree in the graph. | 32 or the value that was passed upon index creation. |
| `SEARCH_WINDOW_SIZE` | The size of the search window. | 10 or the value that was passed upon index creation. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and missing USE_SEARCH_HISTORY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants