v6: rerank score is never unmarshalled from the search reply
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 74/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- java
- Bereich
- api, backend-api-design
Rechercherichtung
Verfolge den QueryResponse-Deserializer in der client6 API und den internen ORM-Paketen, beginnend mit den bestehenden Auslesevorgängen für distance, certainty, score und explainScore. Untersuche QueryMetadata und QueryResponseGroup zusammen mit MetadataResult und GroupByResult.rerank. Als erledigt gilt die Aufgabe, wenn Rerank-Scores, einschließlich der expliziten Behandlung ihres Vorhandenseins, sowohl über die öffentliche Objekt-API als auch über die API für gruppierte Ergebnisse verfügbar sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- Java
- Sterne
- 34
- Forks
- 29
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus weaviate/java-client
-
v6: ShardReplica.shardName has no @SerializedName, so the shard is always nullEvtl. vergeben @dudanogueira hat das vor 38 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 90/100
weaviate/java-client#621 ·
-
v6: Shard.vectorQueueLenght is misspelled, so the vector queue length is always 0Evtl. vergeben @dudanogueira hat das vor 38 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
weaviate/java-client#619 ·
-
v6: tenant updates are not split at the server's 100-tenant limit, so activate/deactivate fails above 100Evtl. vergeben @dudanogueira hat das vor 50 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
weaviate/java-client#615 ·
-
v6: NvidiaReranker sends "baseUrl"; the module reads "baseURL"Evtl. vergeben @dudanogueira hat das vor 53 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
weaviate/java-client#607 ·
-
v6: rerank cannot be used with BM25, Hybrid or FetchObjectsEvtl. vergeben @dudanogueira hat das vor 53 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
weaviate/java-client#603 ·
Alle Issues in weaviate/java-client
Ähnliche Issues
-
BC remittance upload: a claim MSP refused (S03) is saved with a blank status instead of refused (F)Offentype: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
carlos-emr/carlos#4933 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
apache/rocketmq-dashboard#6925 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Vakore/ZappierGames#147 ·
-
Post 1.11.2 to SpigotMCOffenspigotmc
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
Dans-Plugins/Wild-Pets#356 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Post 1.16.2 to SpigotMCOffenspigotmc
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
Dans-Plugins/Medieval-Roleplay-Engine#371 ·
Maintainer antworten meist innerhalb von 1 Tag