Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

v6: quantizer settings use snake_case names the server never reads

Abierto
#611 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
api, backend

Línea de trabajo

Comienza en src/main/java/io/weaviate/client6/v1/api/collections/quantizers/ e inspecciona los registros RQ, BQ, SQ y PQ comparándolos con las fuentes del servidor indicadas en el issue. Verifica la serialización y deserialización de las claves camelCase y la estructura anidada del encoder de PQ; se considera terminado cuando todos los ajustes afectados hacen round-trip utilizando los nombres exactos del servidor.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

The quantizer records use snake_case JSON names the server never reads. Weaviate parses these settings out of the config map by exact key, so everything except enabled, bits, segments, centroids and cache is silently dropped on write and null on read — on every index type, not just one. A user who sets a rescore limit never set one.

The mismatch

Java @SerializedName Server key Server source
rescore_limit (BQ, SQ, RQ) rescoreLimit entities/vectorindex/hnsw/rq_config.go:31, sq_config.go:25, flat/config.go:147
training_limit (PQ, SQ) trainingLimit hnsw/pq_config.go:49, sq_config.go:24
bit_compression (PQ) bitCompression hnsw/pq_config.go:46
encoder_type + encoder_distribution (PQ) nested encoder: {type, distribution} hnsw/pq_config.go:50, encoderFromMap:97, encoderDistributionFromMap:117

The server reads them like this — a plain map lookup, no case folding, no snake_case fallback:

// entities/vectorindex/hnsw/rq_config.go
if err := common.OptionalIntFromMap(rqConfigMap, "rescoreLimit", func(v int) {

and returns them under the same names:

type RQConfig struct {
    Enabled      bool  `json:"enabled"`
    Bits         int16 `json:"bits"`
    RescoreLimit int   `json:"rescoreLimit"`
}

So the break is symmetric: what the client sends is ignored, and what the server returns does not bind to the client's fields.

Affected fields

src/main/java/io/weaviate/client6/v1/api/collections/quantizers/:

  • RQ.rescoreLimit, BQ.rescoreLimit, SQ.rescoreLimit
  • SQ.trainingLimit, PQ.trainingLimit
  • PQ.bitCompression
  • PQ.encoderType, PQ.encoderDistribution — these are flat components in Java but a nested encoder object on the server, so they need a shape change rather than just a rename

enabled, bits, segments, centroids and cache already match and are unaffected.

Suggested fix

Rename the annotations to the camelCase keys, and give PQ's encoder its nested shape. No alternate values are needed: the snake_case spellings were never valid on the wire, so no stored config uses them.

Version

  • java-client 6.3.1 (present since the quantizer records were introduced)
  • Weaviate 1.39.0

Found while investigating #606, which is unfixable in practice without this: locating a nested rq still yields a null rescoreLimit.

Lenguaje dominante
Java
Estrellas
34
Forks
30
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de weaviate/java-client

Todos los issues de weaviate/java-client

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.