diff --git a/README.md b/README.md index a7ad1ad50..903f5decc 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The execute the tests with: **VADD: add items into a vector set** VADD key [REDUCE dim] FP32|VALUES vector element [CAS] [NOQUANT | Q8 | BIN] - [EF build-exploration-factor] [SETATTR ] + [EF build-exploration-factor] [SETATTR ] [M ] Add a new element into the vector set specified by the key. The vector can be provided as FP32 blob of values, or as floating point @@ -58,6 +58,8 @@ performed in the background, while the command is executed in the main thread. `SETATTR` associates attributes to the newly created entry or update the entry attributes (if it already exists). It is the same as calling the `VSETATTR` attribute separately, so please check the documentation of that command in the filtered search section of this documentation. +`M` defaults to 16 and is the HNSW famous `M` parameters. It is the maximum number of connections that each node of the graph have with other nodes: more connections mean more memory, but a better ability to explore the graph. Nodes at layer zero (every node exists at least at layer zero) have `M*2` connections, while the other layers only have `M` connections. This means that, for instance, an `M` of 64 will use at least 1024 bytes of memory for each node! That is, `64 links * 2 times * 8 bytes pointers`, and even more, since on average each node has something like 1.33 layers (but the other layers have just `M` connections, instead of `M*2`). If you don't have a recall quality problem, the default is fine, and uses a limited amount of memory. + **VSIM: return elements by vector similarity** VSIM key [ELE|FP32|VALUES] [WITHSCORES] [COUNT num] [EF search-exploration-factor] [FILTER expression] [FILTER-EF max-filtering-effort] [TRUTH]