v6: Hybrid searchOperator is never sent (bm25_search_operator missing from the request)

Aperta Adatta ai principianti
#629 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
java

Direzione di ricerca

Leggi src/main/java/io/weaviate/client6/v1/api/collections/query/Hybrid.java, in particolare Hybrid.protoBuilder() intorno alle righe 177–225, e confronta la gestione delle opzioni con Bm25. Segui come searchOperator viene aggiunto alla richiesta e verifica che bm25_search_operator includa le impostazioni and() e or(n); il lavoro è completato quando questi valori vengono inviati nelle richieste ibride.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

Hybrid.Builder.searchOperator(...) is accepted and stored, but Hybrid.protoBuilder() never writes it to the request, so bm25_search_operator is never sent. The keyword half of a hybrid query always runs with the server's default operator, whatever the caller asked for.

https://github.com/weaviate/java-client/blob/ff57caed14df5778ef715132d618383da559c1cc/src/main/java/io/weaviate/client6/v1/api/collections/query/Hybrid.java#L177-L225 (there is no reference to searchOperator between these lines)

Bm25 handles the same option correctly (searchOperator.appendTo(bm25)).

Reproduction (client 6.3.2, server 1.39.13)

Outgoing messages logged with a ClientInterceptor (Config.grpcChannelOptions):

collection.query.hybrid("zebra quokka", h -> h.alpha(0.5f).searchOperator(SearchOperator.and()));
// sent: query: "zebra quokka" | alpha: 0.5 | alpha_param: 0.5   — no bm25_search_operator

collection.query.bm25("zebra quokka", b -> b.searchOperator(SearchOperator.and()));
// sent: query: "zebra quokka" | search_operator { operator: OPERATOR_AND }

Behaviour confirms it: on a Weaviate Cloud cluster (1.39.13), for one query BM25 matched 2 objects with and() and 382 with or(1). Hybrid with alpha(0) gave a positive keyword score to 381 objects with either operator.

Expected

searchOperator is written to Hybrid.bm25_search_operator, including minimumOrTokensMatch for or(n).

Lingua principale
Java
Stelle
34
Fork
29
Merge medio
2g 10h
PR unite (30g)
2

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di weaviate/java-client

Tutte le issue di weaviate/java-client

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.