| 399 | } |
| 400 | |
| 401 | fn random_vector() -> RawVectorEmbedding { |
| 402 | let mut rng = thread_rng(); |
| 403 | let dense_len = rng.gen_range(1..8); |
| 404 | let metadata_len = rng.gen_range(1..4); |
| 405 | let sparse_len = rng.gen_range(0..4); |
| 406 | let bytes_len = rng.gen_range(100..200); |
| 407 | |
| 408 | let mut metadata = HashMap::new(); |
| 409 | for _ in 0..metadata_len { |
| 410 | let key = random_string(5); |
| 411 | let val = if rng.gen_bool(0.5) { |
| 412 | FieldValue::Int(rng.gen_range(-1000..1000)) |
| 413 | } else { |
| 414 | FieldValue::String(random_string(6)) |
| 415 | }; |
| 416 | metadata.insert(key, val); |
| 417 | } |
| 418 | |
| 419 | let mut bytes = Vec::with_capacity(bytes_len); |
| 420 | |
| 421 | for _ in 0..bytes_len { |
| 422 | bytes.push(rng.gen()); |
| 423 | } |
| 424 | |
| 425 | RawVectorEmbedding { |
| 426 | id: random_string(8).into(), |
| 427 | document_id: Some(random_string(12).into()), |
| 428 | dense_values: Some((0..dense_len).map(|_| rng.gen()).collect()), |
| 429 | metadata: Some(metadata), |
| 430 | use_usv: true, |
| 431 | sparse_values: Some( |
| 432 | (0..sparse_len) |
| 433 | .map(|_| SparsePair(rng.gen(), rng.gen())) |
| 434 | .collect(), |
| 435 | ), |
| 436 | text: Some(random_string(16)), |
| 437 | bytes: Some(bytes), |
| 438 | } |
| 439 | } |
| 440 | |
| 441 | fn reopen_wal(dir: &std::path::Path, txn_id: u32) -> WALFile { |
| 442 | WALFile::from_existing(dir, VersionNumber::from(txn_id)).unwrap() |