|
1 | 1 | import inspect |
2 | 2 | from collections.abc import AsyncGenerator, Generator |
3 | 3 | from itertools import islice |
4 | | -from typing import Any, ClassVar, Optional, Union |
| 4 | +from typing import Any, ClassVar, Optional, Union, cast |
5 | 5 |
|
6 | 6 | import qdrant_client |
7 | 7 | from haystack import default_from_dict, default_to_dict, logging |
@@ -654,9 +654,11 @@ def update_by_filter(self, filters: dict[str, Any], meta: dict[str, Any]) -> int |
654 | 654 | updated_payload = {**(record.payload or {}), **meta} |
655 | 655 |
|
656 | 656 | # create updated point preserving vectors |
| 657 | + # Type cast needed because record.vector type doesn't include all PointStruct vector types |
| 658 | + vector_value = record.vector if record.vector is not None else {} |
657 | 659 | updated_point = rest.PointStruct( |
658 | 660 | id=record.id, |
659 | | - vector=record.vector or {}, |
| 661 | + vector=cast(Any, vector_value), |
660 | 662 | payload=updated_payload, |
661 | 663 | ) |
662 | 664 | updated_points.append(updated_point) |
@@ -732,9 +734,11 @@ async def update_by_filter_async(self, filters: dict[str, Any], meta: dict[str, |
732 | 734 | updated_payload = {**(record.payload or {}), **meta} |
733 | 735 |
|
734 | 736 | # create updated point preserving vectors |
| 737 | + # Type cast needed because record.vector type doesn't include all PointStruct vector types |
| 738 | + vector_value = record.vector if record.vector is not None else {} |
735 | 739 | updated_point = rest.PointStruct( |
736 | 740 | id=record.id, |
737 | | - vector=record.vector or {}, |
| 741 | + vector=cast(Any, vector_value), |
738 | 742 | payload=updated_payload, |
739 | 743 | ) |
740 | 744 | updated_points.append(updated_point) |
|
0 commit comments