MCPcopy Create free account
hub / github.com/alibaba/zvec / _build_multi_query

Method _build_multi_query

python/zvec/executor/query_executor.py:166–192  ·  view source on GitHub ↗

Assemble a C++ ``_MultiQuery`` from per-route ``_SearchQuery`` objects.

(
        self, ctx: QueryContext, queries: list[_SearchQuery]
    )

Source from the content-addressed store, hash-verified

164 return [convert_to_py_doc(doc, self._schema) for doc in docs]
165
166 def _build_multi_query(
167 self, ctx: QueryContext, queries: list[_SearchQuery]
168 ) -> _MultiQuery:
169 """Assemble a C++ ``_MultiQuery`` from per-route ``_SearchQuery`` objects."""
170 multi_query = _MultiQuery()
171 multi_query.queries = [_SubQuery.from_search_query(query) for query in queries]
172 # num_candidates controls per-sub-query candidate count for reranking pool.
173 # It must NOT be limited to the final output topk; use at least the C++
174 # SubQuery default of 10 to ensure sufficient candidates for reranking.
175 _DEFAULT_NUM_CANDIDATES = 10
176 for sub in multi_query.queries:
177 sub.num_candidates = max(ctx.topk, _DEFAULT_NUM_CANDIDATES)
178 multi_query.topk = ctx.topk
179 if ctx.filter:
180 multi_query.filter = ctx.filter
181 multi_query.include_vector = ctx.include_vector
182 if ctx.output_fields is not None:
183 multi_query.output_fields = ctx.output_fields
184 # Set rerank strategy via the C++ variant-based API.
185 reranker = ctx.reranker
186 if isinstance(reranker, RrfReRanker):
187 multi_query.set_rerank_rrf(reranker.rank_constant)
188 elif isinstance(reranker, WeightedReRanker):
189 multi_query.set_rerank_weighted(reranker.weights)
190 elif isinstance(reranker, CallbackReRanker):
191 multi_query.set_rerank_callback(reranker._callback)
192 return multi_query
193
194 def _execute_python_pipeline(
195 self, vectors: list[_SearchQuery], collection: _Collection

Callers 1

_execute_multi_queryMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected