# Vector set errors

```json metadata
{
  "schema_version": 2,
  "title": "Vector set errors",
  "description": "Every error message that vector set commands return in Redis 8.10",
  "categories": ["docs","develop","stack","oss","rs","rc","oss","kubernetes","clients"],
  "tableOfContents": {"sections":[{"id":"err","title":"ERR"}]}

,
  "codeExamples": []
}
```


These are the error messages of the [vector set](https://redis.io/docs/latest/develop/data-types/vector-sets) commands, such as `VADD` and `VSIM`. Vector set commands can also return the general errors of the [Redis server](https://redis.io/docs/latest/develop/reference/errors/all/redis), such as `WRONGTYPE`.

## ERR

All vector set errors use the general prefix `ERR`, and the description says what went wrong. Most of them are about the arguments of `VADD` and `VSIM`. For example, the vector has a different number of dimensions than the set, or a `FILTER` expression has a syntax error. To fix it, compare your command with the syntax on its command page, such as [`VADD`](https://redis.io/docs/latest/commands/vadd) or [`VSIM`](https://redis.io/docs/latest/commands/vsim).

| Error message | Explanation | Returned by |
|---|---|---|
| `ERR '-' can only be used as first argument, '+' only as second` | In `VRANGE`, `-` means the lowest element and `+` the highest, so `-` works only as the start and `+` only as the end. Swap them: `-` followed by `+` returns every element. | `VRANGE` |
| `ERR asked M value mismatch with existing vector set` | The `M` value in `VADD` differs from the one the set was created with, and it can't change. Pass the same `M` on every `VADD`, or leave it out if the set uses the default of 16. `VINFO` shows the set's value as `hnsw-m`. | `VADD` |
| `ERR asked quantization mismatch with existing vector set` | The quantization option in `VADD` (`NOQUANT`, `Q8`, or `BIN`) differs from the one the set was created with, and it can't change. Pass the same option on every `VADD`; leaving it out means `Q8`. `VINFO` shows the set's type as `quant-type`. | `VADD` |
| `ERR cannot add projection to existing set without projection` | You passed `REDUCE` to `VADD` for a set that was created without it. Only the first `VADD`, which creates the set, can turn on dimension reduction. Remove `REDUCE`, or create a new set with `REDUCE`. | `VADD` |
| `ERR COUNT value is not an integer` | The count you passed to `VRANDMEMBER` isn't an integer. Pass a whole number: a positive count returns up to that many distinct elements, and a negative count returns that many elements, possibly with repeats. | `VRANDMEMBER` |
| `ERR COUNT value is out of range` | You passed -9223372036854775808, the smallest 64-bit integer, as the count of `VRANDMEMBER`. Its absolute value doesn't fit in 64 bits, so Redis rejects it. Use a smaller negative count. | `VRANDMEMBER` |
| `ERR element not found in set` | You called `VSIM` with `ELE`, but the element you named isn't in the vector set. Element names are case-sensitive. Check the name with `VISMEMBER`, or pass the vector itself with `VALUES` or `FP32`. | `VSIM` |
| `ERR Input dimension mismatch for projection - got <dimension> but projection expects <projection_dimension>` | The set was created with `REDUCE`, which fixed how many values each input vector must have, and your vector has a different number. Send vectors of the dimension that the message says the projection expects. `VSIM` also accepts vectors that already have the reduced dimension. | `VADD`, `VSIM` |
| `ERR invalid COUNT value` | The count, the last argument of `VRANGE`, isn't an integer. Pass a whole number for the maximum number of elements to return; a negative count returns every element in the range. | `VRANGE` |
| `ERR invalid EF` | The `EF` value of `VADD` or `VSIM` isn't an integer from 1 to 1000000. Pass a value in that range. `VADD` uses 200 when you leave it out, and typical `VSIM` values are 50 to 1000. | `VADD`, `VSIM` |
| `ERR invalid end range format` | The end of the range in `VRANGE` isn't valid. Use `+` for the highest element, or an element name that starts with `[` (inclusive) or `(` (exclusive), such as `[apple`. | `VRANGE` |
| `ERR invalid EPSILON` | The `EPSILON` value of `VSIM` isn't a number greater than 0. Pass the maximum distance for results, usually between 0 and 1: for example, `0.2` returns only elements with a similarity of 0.8 or better. | `VSIM` |
| `ERR invalid FILTER-EF` | The `FILTER-EF` value of `VSIM` isn't a positive integer. It limits how many elements `VSIM` checks against the `FILTER` expression. Pass a positive number, or leave it out to use 100 times `COUNT`. | `VSIM` |
| `ERR invalid M` | The `M` value of `VADD` isn't an integer from 4 to 4096. `M` sets the maximum number of links each element has in the set's search graph. The default is 16, and the first `VADD` fixes it for the set. | `VADD` |
| `ERR invalid option` | `VEMB` takes only a key, an element name, and the optional `RAW` option. Remove any other argument after the element name, and quote an element name that contains spaces as one argument. | `VEMB` |
| `ERR invalid option after element` | `VADD` found an argument after the element name that it doesn't accept, or an option without its value. The options are `CAS`, `NOQUANT`, `Q8`, `BIN`, `EF`, `M`, and `SETATTR`, and they go after the element. Also check that the count after `VALUES` matches the number of values. | `VADD` |
| `ERR invalid start range format` | The start of the range in `VRANGE` isn't valid. Use `-` for the lowest element, or an element name that starts with `[` (inclusive) or `(` (exclusive), such as `[apple`. | `VRANGE` |
| `ERR invalid vector dimension` | The count after `VALUES` in `VSIM` isn't an integer. Pass the number of values that follow, such as `VALUES 3` before three numbers. In Redis 8.10, `VSIM` usually reports this as `ERR invalid vector specification` instead. | `VSIM` |
| `ERR invalid vector specification` | The vector in `VADD` or `VSIM` is malformed. Use `VALUES` with a count from 1 to 65536 and that many numbers, or `FP32` with a blob of 4 bytes per value. A `REDUCE` value in `VADD` must be a positive integer no larger than the vector's dimension. | `VADD`, `VSIM` |
| `ERR key does not exist` | You called `VDIM` on a key that doesn't exist. Unlike `VCARD`, which returns 0 for a missing key, `VDIM` returns this error. Check the key name, or create the set with `VADD` first. | `VDIM` |
| `ERR projection dimension mismatch with existing set` | The `REDUCE` value in `VADD` differs from the one the set was created with. Pass the same `REDUCE` value as the first `VADD`; `VINFO` shows it as `vector-dim`. In Redis 8.10, this case usually returns `ERR Vector dimension mismatch` instead. | `VADD` |
| `ERR syntax error in FILTER expression near: <expression>` | The `FILTER` expression of `VSIM` has a syntax error. The message shows the expression from the point where parsing failed, or all of it. Check for unbalanced parentheses and for `=` where you mean `==`; field names start with a dot, as in `.year > 1950`. [How to fix it](https://redis.io/docs/latest/develop/reference/errors/common/err-syntax-error/#how-to-fix-it) | `VSIM` |
| `ERR syntax error in VSIM command` | `VSIM` found an argument after the vector that it doesn't accept, or an option without its value, such as `COUNT` at the end. Check the options against the `VSIM` syntax, and check that the count after `VALUES` matches the number of values. [How to fix it](https://redis.io/docs/latest/develop/reference/errors/common/err-syntax-error/#how-to-fix-it) | `VSIM` |
| `ERR unable to create a Vector Set: system resources issue?` | Redis couldn't set up the locks that a new vector set needs, which points to a problem with server resources, not with your command. Check the server log and the system's thread and memory limits, then retry. | `VADD` |
| `ERR Vector dimension mismatch - got <dimension> but set has <set_dimension>` | Your vector has a different number of values than the set, whose dimension the first `VADD` fixed. Send vectors of the dimension the message names. On a set created with `REDUCE`, every `VADD` must repeat that `REDUCE`, or you get this error even when both numbers match. | `VADD`, `VSIM` |
| `ERR vector type must be ELE, FP32 or VALUES` | The argument after the key in `VSIM` must say how you pass the query: `ELE` with an element name, `FP32` with a binary vector, or `VALUES` with a count and numbers. In Redis 8.10, an unknown type usually returns `ERR invalid vector specification` instead. | `VSIM` |


