v6: rerank score is never unmarshalled from the search reply
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 74/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- api, backend-api-design
Direzione di ricerca
Traccia il deserializzatore di QueryResponse nell’API client6 e nei pacchetti ORM interni, iniziando dalle letture esistenti di distance, certainty, score ed explainScore. Esamina QueryMetadata e QueryResponseGroup insieme a MetadataResult e GroupByResult.rerank. Il lavoro è completato quando i punteggi di rerank, inclusa la gestione esplicita della loro presenza, sono disponibili tramite le API dell’oggetto pubblico e dei risultati raggruppati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The server returns a rerank score per object (and per group for a grouped search), but the client never unmarshals it. A reranked search therefore arrives correctly ordered with the number that produced the order missing, and there is no way to get it through the public API.
Per object
MetadataResult carries both the value and an explicit presence flag:
double rerank_score = 21;
bool rerank_score_present = 22;
but QueryMetadata exposes only four fields:
public final class QueryMetadata extends Record {
public Float distance();
public Float certainty();
public Float score();
public String explainScore();
}
Per group
Same thing on the grouped path. GroupByResult.rerank is a RerankReply { double score = 1; }, while QueryResponseGroup exposes only:
public String name();
public Float minDistance();
public Float maxDistance();
public long numberOfObjects();
public List<QueryObjectGrouped<T>> objects();
The field is never read
Extracting io/weaviate/client6/v1/api/** and io/weaviate/client6/v1/internal/orm/** from client6-6.3.1-all.jar and grepping for rerankScore, getRerankScore and RerankReply returns zero matches. Disassembling the QueryResponse unmarshaller shows it reading getCreationTimeUnix, getLastUpdateTimeUnix, getDistance, getCertainty, getScore and getExplainScore — and nothing else.
The server does populate it
Wrapping the Rpc returned by QueryRequest.rpc(...) and reading MetadataResult off the reply before delegating to the real unmarshal yields real values, correlated by uuid — querying "fish" over a set of animal descriptions with reranker-cohere:
0.781147420 The fish is an aquatic animal that lives ...
0.051658671 The dog is a very popular domestic anima ...
0.050354082 The lion is a wild and majestic animal, ...
The row order matches the score descending, which is exactly the ordering the server applied — so the data is present on the reply and simply discarded.
Impact
Without this, a client cannot show or threshold on the rerank score, or explain the resulting order. The only workaround is to reach into GrpcTransport/QueryRequest internals and re-read the reply, which is not something a consumer should have to do.
Suggested fix
Add a rerankScore component to QueryMetadata (honouring rerank_score_present, since 0.0 is a legitimate score) and read it in the QueryResponse unmarshaller. The same for QueryResponseGroup from GroupByResult.rerank.
Version
- java-client 6.3.1 (also present in 6.3.0)
- Weaviate 1.39.0
- Lingua principale
- Java
- Stelle
- 34
- Fork
- 30
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di weaviate/java-client
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
weaviate/java-client#621 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
weaviate/java-client#619 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
weaviate/java-client#615 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
weaviate/java-client#607 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
weaviate/java-client#603 ·
Tutte le issue di weaviate/java-client
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenAPITools/openapi-generator#25014 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
AloisSeckar/demos-java#380 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openhab/openhab-core#5847 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
appsmithorg/appsmith#42297 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100