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

Method _execute_multi_query

python/zvec/executor/query_executor.py:142–164  ·  view source on GitHub ↗

Multiple queries: send a ``_MultiQuery`` to C++. A Python-only reranker (e.g. a model/API-based one) cannot run inside the C++ MultiQuery, so each route is executed individually and merged by the reranker in Python. The built-in RRF/Weighted/Callback rerankers use th

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

Source from the content-addressed store, hash-verified

140 return [convert_to_py_doc(doc, self._schema) for doc in docs]
141
142 def _execute_multi_query(
143 self, ctx: QueryContext, queries: list[_SearchQuery], collection: _Collection
144 ) -> DocList:
145 """Multiple queries: send a ``_MultiQuery`` to C++.
146
147 A Python-only reranker (e.g. a model/API-based one) cannot run inside
148 the C++ MultiQuery, so each route is executed individually and merged by
149 the reranker in Python. The built-in RRF/Weighted/Callback rerankers use
150 the C++ variant-based fast path.
151 """
152 reranker = ctx.reranker
153 if reranker is None:
154 raise ValueError(
155 "A reranker is required to merge results from multiple queries; "
156 "specify the 'reranker' argument."
157 )
158 if not isinstance(reranker, (RrfReRanker, WeightedReRanker, CallbackReRanker)):
159 docs_list = self._execute_python_pipeline(queries, collection)
160 return self._merge_and_rerank(ctx, docs_list)
161
162 multi_query = self._build_multi_query(ctx, queries)
163 docs = collection.Query(multi_query)
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]

Callers 1

executeMethod · 0.95

Calls 5

_merge_and_rerankMethod · 0.95
_build_multi_queryMethod · 0.95
convert_to_py_docFunction · 0.85
QueryMethod · 0.80

Tested by

no test coverage detected