@@ -24,26 +24,20 @@ def init_client(cls, host, distance, connection_params, upload_params):
24
24
def upload_batch (
25
25
cls , ids : List [int ], vectors : List [list ], metadata : List [Optional [dict ]]
26
26
):
27
- try :
27
+ # Weaviate introduced the batch_size, so it can handle built-in client's
28
+ # multi-threading. That should make the upload faster.
29
+ cls .client .batch .configure (
30
+ batch_size = 100 ,
31
+ timeout_retries = 3 ,
32
+ )
33
+
34
+ with cls .client .batch as batch :
28
35
for id_ , vector , data_object in zip (ids , vectors , metadata ):
29
- cls . client . batch .add_data_object (
36
+ batch .add_data_object (
30
37
data_object = data_object or {},
31
38
class_name = WEAVIATE_CLASS_NAME ,
32
39
uuid = uuid .UUID (int = id_ ).hex ,
33
40
vector = vector ,
34
41
)
35
42
36
- cls .client .batch .create_objects ()
37
- except Exception as e :
38
- # It crashed unpredicsibly, so we probably need to do "try again thing"
39
- # Issue to monitor: https://github.com/semi-technologies/weaviate/issues/2066
40
- time .sleep (1 )
41
- for id_ , vector , data_object in zip (ids , vectors , metadata ):
42
- cls .client .batch .add_data_object (
43
- data_object = data_object or {},
44
- class_name = WEAVIATE_CLASS_NAME ,
45
- uuid = uuid .UUID (int = id_ ).hex ,
46
- vector = vector ,
47
- )
48
-
49
- cls .client .batch .create_objects ()
43
+ batch .create_objects ()
0 commit comments