@@ -760,7 +760,10 @@ impl DataSet for ReferencingDataSet {
760
760
let mut keys = vec ! [ ] ;
761
761
let num_keys = gq. limit . sample ( guac) ;
762
762
for _ in 0 ..num_keys {
763
- keys. push ( KeySelector :: Random ( gq. skew ) . select ( guac, self ) ) ;
763
+ let key = KeySelector :: Random ( gq. skew ) . select ( guac, self ) ;
764
+ if !keys. contains ( & key) {
765
+ keys. push ( key) ;
766
+ }
764
767
}
765
768
let collection = client. get_collection ( & self . operates_on ) . await ?;
766
769
// TODO(rescrv): from the reference collection, pull the documents and embeddings and
@@ -787,7 +790,10 @@ impl DataSet for ReferencingDataSet {
787
790
let mut keys = vec ! [ ] ;
788
791
let num_keys = qq. limit . sample ( guac) ;
789
792
for _ in 0 ..num_keys {
790
- keys. push ( KeySelector :: Random ( qq. skew ) . select ( guac, self ) ) ;
793
+ let key = KeySelector :: Random ( qq. skew ) . select ( guac, self ) ;
794
+ if !keys. contains ( & key) {
795
+ keys. push ( key) ;
796
+ }
791
797
}
792
798
let keys = keys. iter ( ) . map ( |k| k. as_str ( ) ) . collect :: < Vec < _ > > ( ) ;
793
799
if let Some ( res) = self . references . get_by_key ( client, & keys) . await ? {
@@ -835,7 +841,10 @@ impl DataSet for ReferencingDataSet {
835
841
let collection = client. get_collection ( & self . operates_on ) . await ?;
836
842
let mut keys = vec ! [ ] ;
837
843
for offset in 0 ..uq. batch_size {
838
- keys. push ( uq. key . select_from_reference ( self , offset) ) ;
844
+ let key = uq. key . select_from_reference ( self , offset) ;
845
+ if !keys. contains ( & key) {
846
+ keys. push ( key) ;
847
+ }
839
848
}
840
849
let keys = keys. iter ( ) . map ( |k| k. as_str ( ) ) . collect :: < Vec < _ > > ( ) ;
841
850
if let Some ( res) = self . references . get_by_key ( client, & keys) . await ? {
@@ -1019,7 +1028,10 @@ impl DataSet for VerifyingDataSet {
1019
1028
}
1020
1029
1021
1030
for _ in 0 ..num_keys {
1022
- keys. push ( KeySelector :: Random ( gq. skew ) . select ( guac, self ) ) ;
1031
+ let key = KeySelector :: Random ( gq. skew ) . select ( guac, self ) ;
1032
+ if !keys. contains ( & key) {
1033
+ keys. push ( key) ;
1034
+ }
1023
1035
}
1024
1036
1025
1037
let reference_collection = client
@@ -1208,7 +1220,10 @@ impl DataSet for VerifyingDataSet {
1208
1220
) ;
1209
1221
1210
1222
for offset in 0 ..uq. batch_size {
1211
- keys. push ( uq. key . select_from_reference ( self , offset) ) ;
1223
+ let key = uq. key . select_from_reference ( self , offset) ;
1224
+ if !keys. contains ( & key) {
1225
+ keys. push ( key)
1226
+ }
1212
1227
}
1213
1228
let keys = keys. iter ( ) . map ( |k| k. as_str ( ) ) . collect :: < Vec < _ > > ( ) ;
1214
1229
if let Some ( res) = self . reference_data_set . get_by_key ( client, & keys) . await ? {
0 commit comments