diff --git a/_search-plugins/knn/knn-index.md b/_search-plugins/knn/knn-index.md index f585685836c..d158037fb60 100644 --- a/_search-plugins/knn/knn-index.md +++ b/_search-plugins/knn/knn-index.md @@ -116,7 +116,7 @@ Lucene HNSW implementation ignores `ef_search` and dynamically sets it to the v ### Supported faiss encoders You can use encoders to reduce the memory footprint of a k-NN index at the expense of search accuracy. faiss has -several encoder types, but the plugin currently only supports *flat*, *pq* and *SQfp16* encoding. +several encoder types, but the plugin currently only supports *flat*, *pq*, and *SQfp16* encoding. The following example method definition specifies the `hnsw` method and a `pq` encoder: @@ -144,7 +144,7 @@ Encoder name | Requires training | Description :--- | :--- | :--- `flat` | false | Encode vectors as floating point arrays. This encoding does not reduce memory footprint. `pq` | true | An abbreviation for _product quantization_, it is a lossy compression technique that uses clustering to encode a vector into a fixed size of bytes, with the goal of minimizing the drop in k-NN search accuracy. At a high level, vectors are broken up into `m` subvectors, and then each subvector is represented by a `code_size` code obtained from a code book produced during training. For more information about product quantization, see [this blog post](https://medium.com/dotstar/understanding-faiss-part-2-79d90b1e5388). -`SQfp16` | false | Starting with k-NN plugin version 2.12, SQfp16 encoder can be used to quantize 32 bit floating point vectors into 16 bit floats using the Faiss inbuilt ScalarQuantizer in order to reduce the memory footprint with a minimal loss of precision. Besides memory optimization, the overall performance has been improved with the SIMD optimization (using `AVX2` on `x86` architecture and using `NEON` on `ARM` architecture). +`SQfp16` | false | Starting with k-NN plugin version 2.12, you can use the SQfp16 encoder to quantize 32-bit floating-point vectors into 16-bit floats using the Faiss built-in ScalarQuantizer in order to reduce the memory footprint with a minimal loss of precision. Besides optimizing memory use, SQfp16 improves the overall performance with the SIMD optimization (using `AVX2` on `x86` architecture and using `NEON` on `ARM` architecture). For `SQfp16` encoder, the SIMD optimization is supported only on Linux and Mac OS. But, the encoder can be still used on Windows OS with a reduced performance (but with same memory optimization). In order to enable the SIMD support, the vector dimension must be a multiple of **8**. {: .important}