-
Notifications
You must be signed in to change notification settings - Fork 227
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
base: feat-ros-8.2
Are you sure you want to change the base?
Conversation
There was a problem hiding this 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.
Thank you, @mich-elle-luna! Co-authored-by: mich-elle-luna <[email protected]>
There was a problem hiding this 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 | |
There was a problem hiding this comment.
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
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. |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
- search performance and scalability are more important than perfect search accuracy (same as HNSW)
- using less memory than alternatives.
- to be optimized for running on Intel hardware
Regarding the compression type, I would add a clarification in the appropriate section
| `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. | |
There was a problem hiding this comment.
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 :)
There was a problem hiding this comment.
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
withCOMPRESSION
will fall back to Intel’s basic quantization implementation. |
this note
| `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. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| `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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- `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. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dup SEARCH_WINDOW_SIZE
?
There was a problem hiding this comment.
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
| `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. | |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
few comments
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. |
There was a problem hiding this comment.
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
- search performance and scalability are more important than perfect search accuracy (same as HNSW)
- using less memory than alternatives.
- 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. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- typo - LVQ8 is here twice.
- 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)
- "
SVS-VAMANA
withCOMPRESSION
will fall back to Intel’s basic quantization implementation." - I would rephrase toSVS-VAMANA
withCOMPRESSION
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. | |
There was a problem hiding this comment.
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
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.