| 185 | } |
| 186 | |
| 187 | fn random_vector() -> RawVectorEmbedding { |
| 188 | let mut rng = thread_rng(); |
| 189 | let dense_len = rng.gen_range(1..8); |
| 190 | let metadata_len = rng.gen_range(1..4); |
| 191 | let sparse_len = rng.gen_range(0..4); |
| 192 | let bytes_len = rng.gen_range(100..200); |
| 193 | |
| 194 | let mut metadata = HashMap::new(); |
| 195 | for _ in 0..metadata_len { |
| 196 | let key = random_string(5); |
| 197 | let val = if rng.gen_bool(0.5) { |
| 198 | FieldValue::Int(rng.gen_range(-1000..1000)) |
| 199 | } else { |
| 200 | FieldValue::String(random_string(6)) |
| 201 | }; |
| 202 | metadata.insert(key, val); |
| 203 | } |
| 204 | |
| 205 | let mut bytes = Vec::with_capacity(bytes_len); |
| 206 | |
| 207 | for _ in 0..bytes_len { |
| 208 | bytes.push(rng.gen()); |
| 209 | } |
| 210 | |
| 211 | RawVectorEmbedding { |
| 212 | id: random_string(8).into(), |
| 213 | document_id: Some(random_string(12).into()), |
| 214 | dense_values: Some((0..dense_len).map(|_| rng.gen()).collect()), |
| 215 | metadata: Some(metadata), |
| 216 | use_usv: true, |
| 217 | sparse_values: Some( |
| 218 | (0..sparse_len) |
| 219 | .map(|_| SparsePair(rng.gen(), rng.gen())) |
| 220 | .collect(), |
| 221 | ), |
| 222 | text: Some(random_string(16)), |
| 223 | bytes: Some(bytes), |
| 224 | } |
| 225 | } |
| 226 | |
| 227 | #[test] |
| 228 | fn test_random_upsert_persistence() { |