Conversation
| @@ -0,0 +1,198 @@ | |||
| /* | |||
| * Copyright 2020 Restream | |||
There was a problem hiding this comment.
Год актуальный можно указать здесь и прочих новых файлах)
There was a problem hiding this comment.
Можно было бы заменить на 2020-present, я недавно у себя обновил шаблон заголовка с лицензией.
Потом прогнать mvn license:format чтобы обновить лицензию во всех файлах.
| * | ||
| * <p>Currently supported: {@code scalar_quantization_8_bit}. | ||
| */ | ||
| String quantizationType() default ""; |
There was a problem hiding this comment.
Если в будущем число вариантов квантизации будет больше одного, но останется небольшим - может, сразу сделать enum? Как Metric. Чтобы нельзя было присвоить неподходящее значение? Хотя, конечно, при расширении списка потребуется модификация кода коннектора, что неудобно...
Если это единственный вариант, и в будущем останется единственным - может, сделать булевым полем? isScalarQuantization8bit.
There was a problem hiding this comment.
Ну у нас пока планов нет на добавление нового типа квантования. В ядре проверка захардкожена на строку "scalar_quantization_8_bit". Главное, что если в этом поле что-то приходит, то именно это значение. Так что, опять же, как удобнее
There was a problem hiding this comment.
bool точно не стоит, так как в перспективе их будет несколько
|
|
||
| /** | ||
| * Quantile for scalar quantization. | ||
| */ |
There was a problem hiding this comment.
Добавить бы в доку допустимые значения.
There was a problem hiding this comment.
Ну, разве что вот в таком виде, возможно урезанном:
Quantile used to determine the clipping range of vector components before quantization. Allowed values range from 0.95 to 1.0. The default value is computed automatically based on the dimensionality of vectors in the index. It is recommended to change this parameter only if the distribution of vector component values is known and additional search quality tuning is required, for example to achieve the expected recall
| /** | ||
| * Sample size for estimating quantile(s). | ||
| */ | ||
| int sampleSize() default 20_000; |
There was a problem hiding this comment.
Допустимые значения? Отрицательное можно?
There was a problem hiding this comment.
целые знаковые, от 1 до UINT64_MAX
| /** | ||
| * Nested annotation representing {@code quantization_config} block. | ||
| */ | ||
| @interface QuantizationConfig { |
There was a problem hiding this comment.
Как вариант - вынести в отдельный класс.
Также, возможно, немного поменял бы имена.
Чтобы вместо quantizationConfig = @Hnsw.QuantizationConfig(quantizationType = "scalar_quantization_8_bit", quantile = 0.987f, sampleSize = 3000, quantizationThreshold = 5000)
было что-то вроде quantization = @Quantization(type = "scalar_quantization_8_bit", quantile = 0.987f, sampleSize = 3000, threshold = 5000)
Правда, тогда будет рассинхрон с HnswConfig, а тот менять нельзя, т.к. имена полей сериализуются для RX. Пожалуй, пусть остается единообразно.
There was a problem hiding this comment.
ну на ваше усмотрение) как будто перекладка в HSNWConfig в src/main/java/ru/rt/restream/reindexer/vector/HnswConfigs.java позволяет использовать другие имена в аннотации. Так что, как удобнее.
Добавлена поддержка quantization_config для HNSW-индексов и покрытие нового поведения тестами:
По умолчанию quantization_config для HNSW не заполняется