Resolve a Query vector and set it on a native query object.
(
self, query: Query, search_query, collection: _Collection
)
| 224 | search_query.fts = fts |
| 225 | |
| 226 | def set_query_vector( |
| 227 | self, query: Query, search_query, collection: _Collection |
| 228 | ) -> None: |
| 229 | """Resolve a Query vector and set it on a native query object.""" |
| 230 | vector_schema = self._schema.vector(query.field_name) |
| 231 | if vector_schema is None: |
| 232 | raise ValueError(f"Vector field '{query.field_name}' not found in schema") |
| 233 | |
| 234 | if query.has_vector(): |
| 235 | vec_data = query.vector |
| 236 | elif query.has_id(): |
| 237 | fetched = collection.Fetch([query.id]) |
| 238 | doc = next(iter(fetched.values()), None) |
| 239 | if not doc: |
| 240 | raise ValueError(f"Document with id '{query.id}' not found") |
| 241 | vec_data = doc.get_any(vector_schema.name, vector_schema.data_type) |
| 242 | else: |
| 243 | raise ValueError("Group by query requires a vector or document id") |
| 244 | |
| 245 | target_dtype = DTYPE_MAP.get(vector_schema.data_type.value) |
| 246 | search_query.set_vector( |
| 247 | vector_schema._get_object(), |
| 248 | convert_to_numpy(vec_data, target_dtype) if target_dtype else vec_data, |
| 249 | ) |
| 250 | |
| 251 | def _build_search_query( |
| 252 | self, ctx: QueryContext, query: Query, collection: _Collection |
no test coverage detected