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

オープン 初心者向け
#629 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
java

調査の方向性

src/main/java/io/weaviate/client6/v1/api/collections/query/Hybrid.javaを読み、特に177~225行付近のHybrid.protoBuilder()を確認して、オプションの処理をBm25と比較します。searchOperatorがリクエストにどのように追加されるかを追跡し、bm25_search_operatorにand()とor(n)の設定が含まれていることを確認します。これらの値がハイブリッドリクエストで送信されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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).

主要言語
Java
スター
34
フォーク
29
平均マージ
2日 10時間
マージ済み PR(30日)
2

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

weaviate/java-client のほかの issue

weaviate/java-client の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。