├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── embedding_files_test ├── embedding_content_99996.txt ├── embedding_content_99998.txt └── embedding_content_99999.txt ├── generate_test_files.py ├── query_embedding.ipynb └── src ├── main.rs ├── models ├── bert.rs └── mod.rs └── storage └── mod.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /data 3 | /embedding_files 4 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.22.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "ahash" 22 | version = "0.8.11" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 25 | dependencies = [ 26 | "cfg-if", 27 | "const-random", 28 | "getrandom", 29 | "once_cell", 30 | "version_check", 31 | "zerocopy", 32 | ] 33 | 34 | [[package]] 35 | name = "aho-corasick" 36 | version = "1.1.3" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 39 | dependencies = [ 40 | "memchr", 41 | ] 42 | 43 | [[package]] 44 | name = "allocator-api2" 45 | version = "0.2.18" 46 | source = "registry+https://github.com/rust-lang/crates.io-index" 47 | checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" 48 | 49 | [[package]] 50 | name = "android-tzdata" 51 | version = "0.1.1" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 54 | 55 | [[package]] 56 | name = "android_system_properties" 57 | version = "0.1.5" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 60 | dependencies = [ 61 | "libc", 62 | ] 63 | 64 | [[package]] 65 | name = "anstream" 66 | version = "0.6.14" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" 69 | dependencies = [ 70 | "anstyle", 71 | "anstyle-parse", 72 | "anstyle-query", 73 | "anstyle-wincon", 74 | "colorchoice", 75 | "is_terminal_polyfill", 76 | "utf8parse", 77 | ] 78 | 79 | [[package]] 80 | name = "anstyle" 81 | version = "1.0.7" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" 84 | 85 | [[package]] 86 | name = "anstyle-parse" 87 | version = "0.2.4" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" 90 | dependencies = [ 91 | "utf8parse", 92 | ] 93 | 94 | [[package]] 95 | name = "anstyle-query" 96 | version = "1.1.0" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" 99 | dependencies = [ 100 | "windows-sys 0.52.0", 101 | ] 102 | 103 | [[package]] 104 | name = "anstyle-wincon" 105 | version = "3.0.3" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" 108 | dependencies = [ 109 | "anstyle", 110 | "windows-sys 0.52.0", 111 | ] 112 | 113 | [[package]] 114 | name = "anyhow" 115 | version = "1.0.86" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" 118 | 119 | [[package]] 120 | name = "arbitrary" 121 | version = "1.3.2" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" 124 | dependencies = [ 125 | "derive_arbitrary", 126 | ] 127 | 128 | [[package]] 129 | name = "arrayref" 130 | version = "0.3.7" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" 133 | 134 | [[package]] 135 | name = "arrayvec" 136 | version = "0.7.4" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 139 | 140 | [[package]] 141 | name = "arrow" 142 | version = "51.0.0" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | checksum = "219d05930b81663fd3b32e3bde8ce5bff3c4d23052a99f11a8fa50a3b47b2658" 145 | dependencies = [ 146 | "arrow-arith", 147 | "arrow-array", 148 | "arrow-buffer", 149 | "arrow-cast", 150 | "arrow-csv", 151 | "arrow-data", 152 | "arrow-ipc", 153 | "arrow-json", 154 | "arrow-ord", 155 | "arrow-row", 156 | "arrow-schema", 157 | "arrow-select", 158 | "arrow-string", 159 | ] 160 | 161 | [[package]] 162 | name = "arrow-arith" 163 | version = "51.0.0" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "0272150200c07a86a390be651abdd320a2d12e84535f0837566ca87ecd8f95e0" 166 | dependencies = [ 167 | "arrow-array", 168 | "arrow-buffer", 169 | "arrow-data", 170 | "arrow-schema", 171 | "chrono", 172 | "half", 173 | "num", 174 | ] 175 | 176 | [[package]] 177 | name = "arrow-array" 178 | version = "51.0.0" 179 | source = "registry+https://github.com/rust-lang/crates.io-index" 180 | checksum = "8010572cf8c745e242d1b632bd97bd6d4f40fefed5ed1290a8f433abaa686fea" 181 | dependencies = [ 182 | "ahash", 183 | "arrow-buffer", 184 | "arrow-data", 185 | "arrow-schema", 186 | "chrono", 187 | "chrono-tz", 188 | "half", 189 | "hashbrown 0.14.5", 190 | "num", 191 | ] 192 | 193 | [[package]] 194 | name = "arrow-buffer" 195 | version = "51.0.0" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "0d0a2432f0cba5692bf4cb757469c66791394bac9ec7ce63c1afe74744c37b27" 198 | dependencies = [ 199 | "bytes", 200 | "half", 201 | "num", 202 | ] 203 | 204 | [[package]] 205 | name = "arrow-cast" 206 | version = "51.0.0" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "9abc10cd7995e83505cc290df9384d6e5412b207b79ce6bdff89a10505ed2cba" 209 | dependencies = [ 210 | "arrow-array", 211 | "arrow-buffer", 212 | "arrow-data", 213 | "arrow-schema", 214 | "arrow-select", 215 | "atoi", 216 | "base64 0.22.1", 217 | "chrono", 218 | "comfy-table", 219 | "half", 220 | "lexical-core", 221 | "num", 222 | "ryu", 223 | ] 224 | 225 | [[package]] 226 | name = "arrow-csv" 227 | version = "51.0.0" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "95cbcba196b862270bf2a5edb75927380a7f3a163622c61d40cbba416a6305f2" 230 | dependencies = [ 231 | "arrow-array", 232 | "arrow-buffer", 233 | "arrow-cast", 234 | "arrow-data", 235 | "arrow-schema", 236 | "chrono", 237 | "csv", 238 | "csv-core", 239 | "lazy_static", 240 | "lexical-core", 241 | "regex", 242 | ] 243 | 244 | [[package]] 245 | name = "arrow-data" 246 | version = "51.0.0" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | checksum = "2742ac1f6650696ab08c88f6dd3f0eb68ce10f8c253958a18c943a68cd04aec5" 249 | dependencies = [ 250 | "arrow-buffer", 251 | "arrow-schema", 252 | "half", 253 | "num", 254 | ] 255 | 256 | [[package]] 257 | name = "arrow-ipc" 258 | version = "51.0.0" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | checksum = "a42ea853130f7e78b9b9d178cb4cd01dee0f78e64d96c2949dc0a915d6d9e19d" 261 | dependencies = [ 262 | "arrow-array", 263 | "arrow-buffer", 264 | "arrow-cast", 265 | "arrow-data", 266 | "arrow-schema", 267 | "flatbuffers", 268 | "lz4_flex", 269 | "zstd", 270 | ] 271 | 272 | [[package]] 273 | name = "arrow-json" 274 | version = "51.0.0" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "eaafb5714d4e59feae964714d724f880511500e3569cc2a94d02456b403a2a49" 277 | dependencies = [ 278 | "arrow-array", 279 | "arrow-buffer", 280 | "arrow-cast", 281 | "arrow-data", 282 | "arrow-schema", 283 | "chrono", 284 | "half", 285 | "indexmap 2.2.6", 286 | "lexical-core", 287 | "num", 288 | "serde", 289 | "serde_json", 290 | ] 291 | 292 | [[package]] 293 | name = "arrow-ord" 294 | version = "51.0.0" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "e3e6b61e3dc468f503181dccc2fc705bdcc5f2f146755fa5b56d0a6c5943f412" 297 | dependencies = [ 298 | "arrow-array", 299 | "arrow-buffer", 300 | "arrow-data", 301 | "arrow-schema", 302 | "arrow-select", 303 | "half", 304 | "num", 305 | ] 306 | 307 | [[package]] 308 | name = "arrow-row" 309 | version = "51.0.0" 310 | source = "registry+https://github.com/rust-lang/crates.io-index" 311 | checksum = "848ee52bb92eb459b811fb471175ea3afcf620157674c8794f539838920f9228" 312 | dependencies = [ 313 | "ahash", 314 | "arrow-array", 315 | "arrow-buffer", 316 | "arrow-data", 317 | "arrow-schema", 318 | "half", 319 | "hashbrown 0.14.5", 320 | ] 321 | 322 | [[package]] 323 | name = "arrow-schema" 324 | version = "51.0.0" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "02d9483aaabe910c4781153ae1b6ae0393f72d9ef757d38d09d450070cf2e528" 327 | dependencies = [ 328 | "bitflags 2.6.0", 329 | ] 330 | 331 | [[package]] 332 | name = "arrow-select" 333 | version = "51.0.0" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | checksum = "849524fa70e0e3c5ab58394c770cb8f514d0122d20de08475f7b472ed8075830" 336 | dependencies = [ 337 | "ahash", 338 | "arrow-array", 339 | "arrow-buffer", 340 | "arrow-data", 341 | "arrow-schema", 342 | "num", 343 | ] 344 | 345 | [[package]] 346 | name = "arrow-string" 347 | version = "51.0.0" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "9373cb5a021aee58863498c37eb484998ef13377f69989c6c5ccfbd258236cdb" 350 | dependencies = [ 351 | "arrow-array", 352 | "arrow-buffer", 353 | "arrow-data", 354 | "arrow-schema", 355 | "arrow-select", 356 | "memchr", 357 | "num", 358 | "regex", 359 | "regex-syntax 0.8.4", 360 | ] 361 | 362 | [[package]] 363 | name = "async-priority-channel" 364 | version = "0.2.0" 365 | source = "registry+https://github.com/rust-lang/crates.io-index" 366 | checksum = "acde96f444d31031f760c5c43dc786b97d3e1cb2ee49dd06898383fe9a999758" 367 | dependencies = [ 368 | "event-listener", 369 | ] 370 | 371 | [[package]] 372 | name = "async-recursion" 373 | version = "1.1.1" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 376 | dependencies = [ 377 | "proc-macro2", 378 | "quote", 379 | "syn 2.0.68", 380 | ] 381 | 382 | [[package]] 383 | name = "async-trait" 384 | version = "0.1.80" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" 387 | dependencies = [ 388 | "proc-macro2", 389 | "quote", 390 | "syn 2.0.68", 391 | ] 392 | 393 | [[package]] 394 | name = "async_cell" 395 | version = "0.2.2" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | checksum = "834eee9ce518130a3b4d5af09ecc43e9d6b57ee76613f227a1ddd6b77c7a62bc" 398 | 399 | [[package]] 400 | name = "atoi" 401 | version = "2.0.0" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 404 | dependencies = [ 405 | "num-traits", 406 | ] 407 | 408 | [[package]] 409 | name = "autocfg" 410 | version = "1.3.0" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 413 | 414 | [[package]] 415 | name = "aws-config" 416 | version = "0.56.1" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "fc6b3804dca60326e07205179847f17a4fce45af3a1106939177ad41ac08a6de" 419 | dependencies = [ 420 | "aws-credential-types", 421 | "aws-http", 422 | "aws-sdk-sso", 423 | "aws-sdk-sts", 424 | "aws-smithy-async", 425 | "aws-smithy-client", 426 | "aws-smithy-http", 427 | "aws-smithy-http-tower", 428 | "aws-smithy-json", 429 | "aws-smithy-types", 430 | "aws-types", 431 | "bytes", 432 | "fastrand", 433 | "hex", 434 | "http", 435 | "hyper", 436 | "ring 0.16.20", 437 | "time", 438 | "tokio", 439 | "tower", 440 | "tracing", 441 | "zeroize", 442 | ] 443 | 444 | [[package]] 445 | name = "aws-credential-types" 446 | version = "0.56.1" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | checksum = "70a66ac8ef5fa9cf01c2d999f39d16812e90ec1467bd382cbbb74ba23ea86201" 449 | dependencies = [ 450 | "aws-smithy-async", 451 | "aws-smithy-types", 452 | "fastrand", 453 | "tokio", 454 | "tracing", 455 | "zeroize", 456 | ] 457 | 458 | [[package]] 459 | name = "aws-http" 460 | version = "0.56.1" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "3e626370f9ba806ae4c439e49675fd871f5767b093075cdf4fef16cac42ba900" 463 | dependencies = [ 464 | "aws-credential-types", 465 | "aws-smithy-http", 466 | "aws-smithy-types", 467 | "aws-types", 468 | "bytes", 469 | "http", 470 | "http-body", 471 | "lazy_static", 472 | "percent-encoding", 473 | "pin-project-lite", 474 | "tracing", 475 | ] 476 | 477 | [[package]] 478 | name = "aws-runtime" 479 | version = "0.56.1" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "07ac5cf0ff19c1bca0cea7932e11b239d1025a45696a4f44f72ea86e2b8bdd07" 482 | dependencies = [ 483 | "aws-credential-types", 484 | "aws-http", 485 | "aws-sigv4", 486 | "aws-smithy-async", 487 | "aws-smithy-http", 488 | "aws-smithy-runtime-api", 489 | "aws-smithy-types", 490 | "aws-types", 491 | "fastrand", 492 | "http", 493 | "percent-encoding", 494 | "tracing", 495 | "uuid", 496 | ] 497 | 498 | [[package]] 499 | name = "aws-sdk-dynamodb" 500 | version = "0.34.0" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "10aef6843bfc2dabfccad27f7e1ab303942bbda19f7ea7777d0d74388d073db4" 503 | dependencies = [ 504 | "aws-credential-types", 505 | "aws-http", 506 | "aws-runtime", 507 | "aws-smithy-async", 508 | "aws-smithy-client", 509 | "aws-smithy-http", 510 | "aws-smithy-json", 511 | "aws-smithy-runtime", 512 | "aws-smithy-runtime-api", 513 | "aws-smithy-types", 514 | "aws-types", 515 | "bytes", 516 | "fastrand", 517 | "http", 518 | "regex", 519 | "tokio-stream", 520 | "tracing", 521 | ] 522 | 523 | [[package]] 524 | name = "aws-sdk-sso" 525 | version = "0.30.0" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "903f888ff190e64f6f5c83fb0f8d54f9c20481f1dc26359bb8896f5d99908949" 528 | dependencies = [ 529 | "aws-credential-types", 530 | "aws-http", 531 | "aws-runtime", 532 | "aws-smithy-async", 533 | "aws-smithy-client", 534 | "aws-smithy-http", 535 | "aws-smithy-json", 536 | "aws-smithy-runtime", 537 | "aws-smithy-runtime-api", 538 | "aws-smithy-types", 539 | "aws-types", 540 | "bytes", 541 | "http", 542 | "regex", 543 | "tokio-stream", 544 | "tracing", 545 | ] 546 | 547 | [[package]] 548 | name = "aws-sdk-sts" 549 | version = "0.30.0" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | checksum = "a47ad6bf01afc00423d781d464220bf69fb6a674ad6629cbbcb06d88cdc2be82" 552 | dependencies = [ 553 | "aws-credential-types", 554 | "aws-http", 555 | "aws-runtime", 556 | "aws-smithy-async", 557 | "aws-smithy-client", 558 | "aws-smithy-http", 559 | "aws-smithy-json", 560 | "aws-smithy-query", 561 | "aws-smithy-runtime", 562 | "aws-smithy-runtime-api", 563 | "aws-smithy-types", 564 | "aws-smithy-xml", 565 | "aws-types", 566 | "http", 567 | "regex", 568 | "tracing", 569 | ] 570 | 571 | [[package]] 572 | name = "aws-sigv4" 573 | version = "0.56.1" 574 | source = "registry+https://github.com/rust-lang/crates.io-index" 575 | checksum = "b7b28f4910bb956b7ab320b62e98096402354eca976c587d1eeccd523d9bac03" 576 | dependencies = [ 577 | "aws-smithy-http", 578 | "form_urlencoded", 579 | "hex", 580 | "hmac", 581 | "http", 582 | "once_cell", 583 | "percent-encoding", 584 | "regex", 585 | "sha2", 586 | "time", 587 | "tracing", 588 | ] 589 | 590 | [[package]] 591 | name = "aws-smithy-async" 592 | version = "0.56.1" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | checksum = "2cdb73f85528b9d19c23a496034ac53703955a59323d581c06aa27b4e4e247af" 595 | dependencies = [ 596 | "futures-util", 597 | "pin-project-lite", 598 | "tokio", 599 | "tokio-stream", 600 | ] 601 | 602 | [[package]] 603 | name = "aws-smithy-client" 604 | version = "0.56.1" 605 | source = "registry+https://github.com/rust-lang/crates.io-index" 606 | checksum = "c27b2756264c82f830a91cb4d2d485b2d19ad5bea476d9a966e03d27f27ba59a" 607 | dependencies = [ 608 | "aws-smithy-async", 609 | "aws-smithy-http", 610 | "aws-smithy-http-tower", 611 | "aws-smithy-types", 612 | "bytes", 613 | "fastrand", 614 | "http", 615 | "http-body", 616 | "hyper", 617 | "hyper-rustls", 618 | "lazy_static", 619 | "pin-project-lite", 620 | "rustls 0.21.12", 621 | "tokio", 622 | "tower", 623 | "tracing", 624 | ] 625 | 626 | [[package]] 627 | name = "aws-smithy-http" 628 | version = "0.56.1" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "54cdcf365d8eee60686885f750a34c190e513677db58bbc466c44c588abf4199" 631 | dependencies = [ 632 | "aws-smithy-types", 633 | "bytes", 634 | "bytes-utils", 635 | "futures-core", 636 | "http", 637 | "http-body", 638 | "hyper", 639 | "once_cell", 640 | "percent-encoding", 641 | "pin-project-lite", 642 | "pin-utils", 643 | "tokio", 644 | "tokio-util", 645 | "tracing", 646 | ] 647 | 648 | [[package]] 649 | name = "aws-smithy-http-tower" 650 | version = "0.56.1" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | checksum = "822de399d0ce62829a69dfa8c5cd08efdbe61a7426b953e2268f8b8b52a607bd" 653 | dependencies = [ 654 | "aws-smithy-http", 655 | "aws-smithy-types", 656 | "bytes", 657 | "http", 658 | "http-body", 659 | "pin-project-lite", 660 | "tower", 661 | "tracing", 662 | ] 663 | 664 | [[package]] 665 | name = "aws-smithy-json" 666 | version = "0.56.1" 667 | source = "registry+https://github.com/rust-lang/crates.io-index" 668 | checksum = "4fb1e7ab8fa7ad10c193af7ae56d2420989e9f4758bf03601a342573333ea34f" 669 | dependencies = [ 670 | "aws-smithy-types", 671 | ] 672 | 673 | [[package]] 674 | name = "aws-smithy-query" 675 | version = "0.56.1" 676 | source = "registry+https://github.com/rust-lang/crates.io-index" 677 | checksum = "28556a3902091c1f768a34f6c998028921bdab8d47d92586f363f14a4a32d047" 678 | dependencies = [ 679 | "aws-smithy-types", 680 | "urlencoding", 681 | ] 682 | 683 | [[package]] 684 | name = "aws-smithy-runtime" 685 | version = "0.56.1" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | checksum = "745e096b3553e7e0f40622aa04971ce52765af82bebdeeac53aa6fc82fe801e6" 688 | dependencies = [ 689 | "aws-smithy-async", 690 | "aws-smithy-client", 691 | "aws-smithy-http", 692 | "aws-smithy-runtime-api", 693 | "aws-smithy-types", 694 | "bytes", 695 | "fastrand", 696 | "http", 697 | "http-body", 698 | "once_cell", 699 | "pin-project-lite", 700 | "pin-utils", 701 | "tokio", 702 | "tracing", 703 | ] 704 | 705 | [[package]] 706 | name = "aws-smithy-runtime-api" 707 | version = "0.56.1" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "93d0ae0c9cfd57944e9711ea610b48a963fb174a53aabacc08c5794a594b1d02" 710 | dependencies = [ 711 | "aws-smithy-async", 712 | "aws-smithy-http", 713 | "aws-smithy-types", 714 | "bytes", 715 | "http", 716 | "tokio", 717 | "tracing", 718 | ] 719 | 720 | [[package]] 721 | name = "aws-smithy-types" 722 | version = "0.56.1" 723 | source = "registry+https://github.com/rust-lang/crates.io-index" 724 | checksum = "d90dbc8da2f6be461fa3c1906b20af8f79d14968fe47f2b7d29d086f62a51728" 725 | dependencies = [ 726 | "base64-simd", 727 | "itoa", 728 | "num-integer", 729 | "ryu", 730 | "serde", 731 | "time", 732 | ] 733 | 734 | [[package]] 735 | name = "aws-smithy-xml" 736 | version = "0.56.1" 737 | source = "registry+https://github.com/rust-lang/crates.io-index" 738 | checksum = "e01d2dedcdd8023043716cfeeb3c6c59f2d447fce365d8e194838891794b23b6" 739 | dependencies = [ 740 | "xmlparser", 741 | ] 742 | 743 | [[package]] 744 | name = "aws-types" 745 | version = "0.56.1" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | checksum = "85aa0451bf8af1bf22a4f028d5d28054507a14be43cb8ac0597a8471fba9edfe" 748 | dependencies = [ 749 | "aws-credential-types", 750 | "aws-smithy-async", 751 | "aws-smithy-client", 752 | "aws-smithy-http", 753 | "aws-smithy-types", 754 | "http", 755 | "rustc_version", 756 | "tracing", 757 | ] 758 | 759 | [[package]] 760 | name = "backtrace" 761 | version = "0.3.73" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" 764 | dependencies = [ 765 | "addr2line", 766 | "cc", 767 | "cfg-if", 768 | "libc", 769 | "miniz_oxide", 770 | "object", 771 | "rustc-demangle", 772 | ] 773 | 774 | [[package]] 775 | name = "base64" 776 | version = "0.13.1" 777 | source = "registry+https://github.com/rust-lang/crates.io-index" 778 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 779 | 780 | [[package]] 781 | name = "base64" 782 | version = "0.21.7" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 785 | 786 | [[package]] 787 | name = "base64" 788 | version = "0.22.1" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 791 | 792 | [[package]] 793 | name = "base64-simd" 794 | version = "0.8.0" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" 797 | dependencies = [ 798 | "outref", 799 | "vsimd", 800 | ] 801 | 802 | [[package]] 803 | name = "bit-set" 804 | version = "0.5.3" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 807 | dependencies = [ 808 | "bit-vec", 809 | ] 810 | 811 | [[package]] 812 | name = "bit-vec" 813 | version = "0.6.3" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 816 | 817 | [[package]] 818 | name = "bitflags" 819 | version = "1.3.2" 820 | source = "registry+https://github.com/rust-lang/crates.io-index" 821 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 822 | 823 | [[package]] 824 | name = "bitflags" 825 | version = "2.6.0" 826 | source = "registry+https://github.com/rust-lang/crates.io-index" 827 | checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" 828 | 829 | [[package]] 830 | name = "bitvec" 831 | version = "1.0.1" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" 834 | dependencies = [ 835 | "funty", 836 | "radium", 837 | "tap", 838 | "wyz", 839 | ] 840 | 841 | [[package]] 842 | name = "blake2" 843 | version = "0.10.6" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 846 | dependencies = [ 847 | "digest", 848 | ] 849 | 850 | [[package]] 851 | name = "blake3" 852 | version = "1.5.1" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" 855 | dependencies = [ 856 | "arrayref", 857 | "arrayvec", 858 | "cc", 859 | "cfg-if", 860 | "constant_time_eq", 861 | ] 862 | 863 | [[package]] 864 | name = "block-buffer" 865 | version = "0.10.4" 866 | source = "registry+https://github.com/rust-lang/crates.io-index" 867 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 868 | dependencies = [ 869 | "generic-array", 870 | ] 871 | 872 | [[package]] 873 | name = "bumpalo" 874 | version = "3.16.0" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 877 | 878 | [[package]] 879 | name = "bytecount" 880 | version = "0.6.8" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" 883 | 884 | [[package]] 885 | name = "bytemuck" 886 | version = "1.16.1" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" 889 | dependencies = [ 890 | "bytemuck_derive", 891 | ] 892 | 893 | [[package]] 894 | name = "bytemuck_derive" 895 | version = "1.7.0" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" 898 | dependencies = [ 899 | "proc-macro2", 900 | "quote", 901 | "syn 2.0.68", 902 | ] 903 | 904 | [[package]] 905 | name = "byteorder" 906 | version = "1.5.0" 907 | source = "registry+https://github.com/rust-lang/crates.io-index" 908 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 909 | 910 | [[package]] 911 | name = "bytes" 912 | version = "1.6.0" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 915 | 916 | [[package]] 917 | name = "bytes-utils" 918 | version = "0.1.4" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" 921 | dependencies = [ 922 | "bytes", 923 | "either", 924 | ] 925 | 926 | [[package]] 927 | name = "camino" 928 | version = "1.1.7" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" 931 | dependencies = [ 932 | "serde", 933 | ] 934 | 935 | [[package]] 936 | name = "candle-core" 937 | version = "0.5.1" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "311d8dbe293aa3b5c34f6a57727fafd67d17a74fa8b65276501237c233b34ffd" 940 | dependencies = [ 941 | "byteorder", 942 | "gemm", 943 | "half", 944 | "memmap2", 945 | "num-traits", 946 | "num_cpus", 947 | "rand", 948 | "rand_distr", 949 | "rayon", 950 | "safetensors", 951 | "thiserror", 952 | "yoke", 953 | "zip", 954 | ] 955 | 956 | [[package]] 957 | name = "candle-nn" 958 | version = "0.5.1" 959 | source = "registry+https://github.com/rust-lang/crates.io-index" 960 | checksum = "1efb293365959fc5feacbd93fa918980df2d9f2fb89853af02e33a830c10b49b" 961 | dependencies = [ 962 | "candle-core", 963 | "half", 964 | "num-traits", 965 | "rayon", 966 | "safetensors", 967 | "serde", 968 | "thiserror", 969 | ] 970 | 971 | [[package]] 972 | name = "candle-transformers" 973 | version = "0.5.1" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "b28968e2643d21c259d045f5eb42de07b0a3b7fc86ec8571aeb852721f9c189e" 976 | dependencies = [ 977 | "byteorder", 978 | "candle-core", 979 | "candle-nn", 980 | "fancy-regex", 981 | "num-traits", 982 | "rand", 983 | "rayon", 984 | "serde", 985 | "serde_json", 986 | "serde_plain", 987 | "tracing", 988 | ] 989 | 990 | [[package]] 991 | name = "cargo-platform" 992 | version = "0.1.8" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" 995 | dependencies = [ 996 | "serde", 997 | ] 998 | 999 | [[package]] 1000 | name = "cargo_metadata" 1001 | version = "0.14.2" 1002 | source = "registry+https://github.com/rust-lang/crates.io-index" 1003 | checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" 1004 | dependencies = [ 1005 | "camino", 1006 | "cargo-platform", 1007 | "semver", 1008 | "serde", 1009 | "serde_json", 1010 | ] 1011 | 1012 | [[package]] 1013 | name = "cc" 1014 | version = "1.0.101" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "ac367972e516d45567c7eafc73d24e1c193dcf200a8d94e9db7b3d38b349572d" 1017 | dependencies = [ 1018 | "jobserver", 1019 | "libc", 1020 | "once_cell", 1021 | ] 1022 | 1023 | [[package]] 1024 | name = "cfg-if" 1025 | version = "1.0.0" 1026 | source = "registry+https://github.com/rust-lang/crates.io-index" 1027 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 1028 | 1029 | [[package]] 1030 | name = "chrono" 1031 | version = "0.4.38" 1032 | source = "registry+https://github.com/rust-lang/crates.io-index" 1033 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 1034 | dependencies = [ 1035 | "android-tzdata", 1036 | "iana-time-zone", 1037 | "js-sys", 1038 | "num-traits", 1039 | "serde", 1040 | "wasm-bindgen", 1041 | "windows-targets 0.52.5", 1042 | ] 1043 | 1044 | [[package]] 1045 | name = "chrono-tz" 1046 | version = "0.8.6" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" 1049 | dependencies = [ 1050 | "chrono", 1051 | "chrono-tz-build", 1052 | "phf", 1053 | ] 1054 | 1055 | [[package]] 1056 | name = "chrono-tz-build" 1057 | version = "0.2.1" 1058 | source = "registry+https://github.com/rust-lang/crates.io-index" 1059 | checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" 1060 | dependencies = [ 1061 | "parse-zoneinfo", 1062 | "phf", 1063 | "phf_codegen", 1064 | ] 1065 | 1066 | [[package]] 1067 | name = "clap" 1068 | version = "4.5.7" 1069 | source = "registry+https://github.com/rust-lang/crates.io-index" 1070 | checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" 1071 | dependencies = [ 1072 | "clap_builder", 1073 | "clap_derive", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "clap_builder" 1078 | version = "4.5.7" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" 1081 | dependencies = [ 1082 | "anstream", 1083 | "anstyle", 1084 | "clap_lex", 1085 | "strsim", 1086 | ] 1087 | 1088 | [[package]] 1089 | name = "clap_derive" 1090 | version = "4.5.5" 1091 | source = "registry+https://github.com/rust-lang/crates.io-index" 1092 | checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" 1093 | dependencies = [ 1094 | "heck 0.5.0", 1095 | "proc-macro2", 1096 | "quote", 1097 | "syn 2.0.68", 1098 | ] 1099 | 1100 | [[package]] 1101 | name = "clap_lex" 1102 | version = "0.7.1" 1103 | source = "registry+https://github.com/rust-lang/crates.io-index" 1104 | checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" 1105 | 1106 | [[package]] 1107 | name = "colorchoice" 1108 | version = "1.0.1" 1109 | source = "registry+https://github.com/rust-lang/crates.io-index" 1110 | checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" 1111 | 1112 | [[package]] 1113 | name = "comfy-table" 1114 | version = "7.1.1" 1115 | source = "registry+https://github.com/rust-lang/crates.io-index" 1116 | checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" 1117 | dependencies = [ 1118 | "strum", 1119 | "strum_macros", 1120 | "unicode-width", 1121 | ] 1122 | 1123 | [[package]] 1124 | name = "concurrent-queue" 1125 | version = "2.5.0" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 1128 | dependencies = [ 1129 | "crossbeam-utils", 1130 | ] 1131 | 1132 | [[package]] 1133 | name = "console" 1134 | version = "0.15.8" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" 1137 | dependencies = [ 1138 | "encode_unicode", 1139 | "lazy_static", 1140 | "libc", 1141 | "unicode-width", 1142 | "windows-sys 0.52.0", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "const-random" 1147 | version = "0.1.18" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" 1150 | dependencies = [ 1151 | "const-random-macro", 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "const-random-macro" 1156 | version = "0.1.16" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" 1159 | dependencies = [ 1160 | "getrandom", 1161 | "once_cell", 1162 | "tiny-keccak", 1163 | ] 1164 | 1165 | [[package]] 1166 | name = "constant_time_eq" 1167 | version = "0.3.0" 1168 | source = "registry+https://github.com/rust-lang/crates.io-index" 1169 | checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" 1170 | 1171 | [[package]] 1172 | name = "core-foundation" 1173 | version = "0.9.4" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 1176 | dependencies = [ 1177 | "core-foundation-sys", 1178 | "libc", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "core-foundation-sys" 1183 | version = "0.8.6" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 1186 | 1187 | [[package]] 1188 | name = "cpufeatures" 1189 | version = "0.2.12" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 1192 | dependencies = [ 1193 | "libc", 1194 | ] 1195 | 1196 | [[package]] 1197 | name = "crc32fast" 1198 | version = "1.4.2" 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" 1200 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 1201 | dependencies = [ 1202 | "cfg-if", 1203 | ] 1204 | 1205 | [[package]] 1206 | name = "crossbeam-channel" 1207 | version = "0.5.13" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" 1210 | dependencies = [ 1211 | "crossbeam-utils", 1212 | ] 1213 | 1214 | [[package]] 1215 | name = "crossbeam-deque" 1216 | version = "0.8.5" 1217 | source = "registry+https://github.com/rust-lang/crates.io-index" 1218 | checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" 1219 | dependencies = [ 1220 | "crossbeam-epoch", 1221 | "crossbeam-utils", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "crossbeam-epoch" 1226 | version = "0.9.18" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 1229 | dependencies = [ 1230 | "crossbeam-utils", 1231 | ] 1232 | 1233 | [[package]] 1234 | name = "crossbeam-queue" 1235 | version = "0.3.11" 1236 | source = "registry+https://github.com/rust-lang/crates.io-index" 1237 | checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" 1238 | dependencies = [ 1239 | "crossbeam-utils", 1240 | ] 1241 | 1242 | [[package]] 1243 | name = "crossbeam-utils" 1244 | version = "0.8.20" 1245 | source = "registry+https://github.com/rust-lang/crates.io-index" 1246 | checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 1247 | 1248 | [[package]] 1249 | name = "crunchy" 1250 | version = "0.2.2" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 1253 | 1254 | [[package]] 1255 | name = "crypto-common" 1256 | version = "0.1.6" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 1259 | dependencies = [ 1260 | "generic-array", 1261 | "typenum", 1262 | ] 1263 | 1264 | [[package]] 1265 | name = "csv" 1266 | version = "1.3.0" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" 1269 | dependencies = [ 1270 | "csv-core", 1271 | "itoa", 1272 | "ryu", 1273 | "serde", 1274 | ] 1275 | 1276 | [[package]] 1277 | name = "csv-core" 1278 | version = "0.1.11" 1279 | source = "registry+https://github.com/rust-lang/crates.io-index" 1280 | checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" 1281 | dependencies = [ 1282 | "memchr", 1283 | ] 1284 | 1285 | [[package]] 1286 | name = "darling" 1287 | version = "0.20.9" 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" 1289 | checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" 1290 | dependencies = [ 1291 | "darling_core", 1292 | "darling_macro", 1293 | ] 1294 | 1295 | [[package]] 1296 | name = "darling_core" 1297 | version = "0.20.9" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" 1300 | dependencies = [ 1301 | "fnv", 1302 | "ident_case", 1303 | "proc-macro2", 1304 | "quote", 1305 | "strsim", 1306 | "syn 2.0.68", 1307 | ] 1308 | 1309 | [[package]] 1310 | name = "darling_macro" 1311 | version = "0.20.9" 1312 | source = "registry+https://github.com/rust-lang/crates.io-index" 1313 | checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" 1314 | dependencies = [ 1315 | "darling_core", 1316 | "quote", 1317 | "syn 2.0.68", 1318 | ] 1319 | 1320 | [[package]] 1321 | name = "dashmap" 1322 | version = "5.5.3" 1323 | source = "registry+https://github.com/rust-lang/crates.io-index" 1324 | checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" 1325 | dependencies = [ 1326 | "cfg-if", 1327 | "hashbrown 0.14.5", 1328 | "lock_api", 1329 | "once_cell", 1330 | "parking_lot_core", 1331 | ] 1332 | 1333 | [[package]] 1334 | name = "datafusion" 1335 | version = "37.1.0" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "85069782056753459dc47e386219aa1fdac5b731f26c28abb8c0ffd4b7c5ab11" 1338 | dependencies = [ 1339 | "ahash", 1340 | "arrow", 1341 | "arrow-array", 1342 | "arrow-ipc", 1343 | "arrow-schema", 1344 | "async-trait", 1345 | "bytes", 1346 | "chrono", 1347 | "dashmap", 1348 | "datafusion-common", 1349 | "datafusion-common-runtime", 1350 | "datafusion-execution", 1351 | "datafusion-expr", 1352 | "datafusion-functions", 1353 | "datafusion-functions-array", 1354 | "datafusion-optimizer", 1355 | "datafusion-physical-expr", 1356 | "datafusion-physical-plan", 1357 | "datafusion-sql", 1358 | "futures", 1359 | "glob", 1360 | "half", 1361 | "hashbrown 0.14.5", 1362 | "indexmap 2.2.6", 1363 | "itertools 0.12.1", 1364 | "log", 1365 | "num_cpus", 1366 | "object_store", 1367 | "parking_lot", 1368 | "pin-project-lite", 1369 | "rand", 1370 | "sqlparser", 1371 | "tempfile", 1372 | "tokio", 1373 | "url", 1374 | "uuid", 1375 | ] 1376 | 1377 | [[package]] 1378 | name = "datafusion-common" 1379 | version = "37.1.0" 1380 | source = "registry+https://github.com/rust-lang/crates.io-index" 1381 | checksum = "309d9040751f6dc9e33c85dce6abb55a46ef7ea3644577dd014611c379447ef3" 1382 | dependencies = [ 1383 | "ahash", 1384 | "arrow", 1385 | "arrow-array", 1386 | "arrow-buffer", 1387 | "arrow-schema", 1388 | "chrono", 1389 | "half", 1390 | "instant", 1391 | "libc", 1392 | "num_cpus", 1393 | "object_store", 1394 | "sqlparser", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "datafusion-common-runtime" 1399 | version = "37.1.0" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "a3e4a44d8ef1b1e85d32234e6012364c411c3787859bb3bba893b0332cb03dfd" 1402 | dependencies = [ 1403 | "tokio", 1404 | ] 1405 | 1406 | [[package]] 1407 | name = "datafusion-execution" 1408 | version = "37.1.0" 1409 | source = "registry+https://github.com/rust-lang/crates.io-index" 1410 | checksum = "06a3a29ae36bcde07d179cc33b45656a8e7e4d023623e320e48dcf1200eeee95" 1411 | dependencies = [ 1412 | "arrow", 1413 | "chrono", 1414 | "dashmap", 1415 | "datafusion-common", 1416 | "datafusion-expr", 1417 | "futures", 1418 | "hashbrown 0.14.5", 1419 | "log", 1420 | "object_store", 1421 | "parking_lot", 1422 | "rand", 1423 | "tempfile", 1424 | "url", 1425 | ] 1426 | 1427 | [[package]] 1428 | name = "datafusion-expr" 1429 | version = "37.1.0" 1430 | source = "registry+https://github.com/rust-lang/crates.io-index" 1431 | checksum = "2a3542aa322029c2121a671ce08000d4b274171070df13f697b14169ccf4f628" 1432 | dependencies = [ 1433 | "ahash", 1434 | "arrow", 1435 | "arrow-array", 1436 | "chrono", 1437 | "datafusion-common", 1438 | "paste", 1439 | "sqlparser", 1440 | "strum", 1441 | "strum_macros", 1442 | ] 1443 | 1444 | [[package]] 1445 | name = "datafusion-functions" 1446 | version = "37.1.0" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | checksum = "dd221792c666eac174ecc09e606312844772acc12cbec61a420c2fca1ee70959" 1449 | dependencies = [ 1450 | "arrow", 1451 | "base64 0.22.1", 1452 | "blake2", 1453 | "blake3", 1454 | "chrono", 1455 | "datafusion-common", 1456 | "datafusion-execution", 1457 | "datafusion-expr", 1458 | "datafusion-physical-expr", 1459 | "hex", 1460 | "itertools 0.12.1", 1461 | "log", 1462 | "md-5", 1463 | "regex", 1464 | "sha2", 1465 | "unicode-segmentation", 1466 | "uuid", 1467 | ] 1468 | 1469 | [[package]] 1470 | name = "datafusion-functions-array" 1471 | version = "37.1.0" 1472 | source = "registry+https://github.com/rust-lang/crates.io-index" 1473 | checksum = "e501801e84d9c6ef54caaebcda1b18a6196a24176c12fb70e969bc0572e03c55" 1474 | dependencies = [ 1475 | "arrow", 1476 | "arrow-array", 1477 | "arrow-buffer", 1478 | "arrow-ord", 1479 | "arrow-schema", 1480 | "datafusion-common", 1481 | "datafusion-execution", 1482 | "datafusion-expr", 1483 | "datafusion-functions", 1484 | "itertools 0.12.1", 1485 | "log", 1486 | "paste", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "datafusion-optimizer" 1491 | version = "37.1.0" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "76bd7f5087817deb961764e8c973d243b54f8572db414a8f0a8f33a48f991e0a" 1494 | dependencies = [ 1495 | "arrow", 1496 | "async-trait", 1497 | "chrono", 1498 | "datafusion-common", 1499 | "datafusion-expr", 1500 | "datafusion-physical-expr", 1501 | "hashbrown 0.14.5", 1502 | "itertools 0.12.1", 1503 | "log", 1504 | "regex-syntax 0.8.4", 1505 | ] 1506 | 1507 | [[package]] 1508 | name = "datafusion-physical-expr" 1509 | version = "37.1.0" 1510 | source = "registry+https://github.com/rust-lang/crates.io-index" 1511 | checksum = "5cabc0d9aaa0f5eb1b472112f16223c9ffd2fb04e58cbf65c0a331ee6e993f96" 1512 | dependencies = [ 1513 | "ahash", 1514 | "arrow", 1515 | "arrow-array", 1516 | "arrow-buffer", 1517 | "arrow-ord", 1518 | "arrow-schema", 1519 | "arrow-string", 1520 | "base64 0.22.1", 1521 | "blake2", 1522 | "blake3", 1523 | "chrono", 1524 | "datafusion-common", 1525 | "datafusion-execution", 1526 | "datafusion-expr", 1527 | "half", 1528 | "hashbrown 0.14.5", 1529 | "hex", 1530 | "indexmap 2.2.6", 1531 | "itertools 0.12.1", 1532 | "log", 1533 | "md-5", 1534 | "paste", 1535 | "petgraph", 1536 | "rand", 1537 | "regex", 1538 | "sha2", 1539 | "unicode-segmentation", 1540 | ] 1541 | 1542 | [[package]] 1543 | name = "datafusion-physical-plan" 1544 | version = "37.1.0" 1545 | source = "registry+https://github.com/rust-lang/crates.io-index" 1546 | checksum = "17c0523e9c8880f2492a88bbd857dde02bed1ed23f3e9211a89d3d7ec3b44af9" 1547 | dependencies = [ 1548 | "ahash", 1549 | "arrow", 1550 | "arrow-array", 1551 | "arrow-buffer", 1552 | "arrow-schema", 1553 | "async-trait", 1554 | "chrono", 1555 | "datafusion-common", 1556 | "datafusion-common-runtime", 1557 | "datafusion-execution", 1558 | "datafusion-expr", 1559 | "datafusion-physical-expr", 1560 | "futures", 1561 | "half", 1562 | "hashbrown 0.14.5", 1563 | "indexmap 2.2.6", 1564 | "itertools 0.12.1", 1565 | "log", 1566 | "once_cell", 1567 | "parking_lot", 1568 | "pin-project-lite", 1569 | "rand", 1570 | "tokio", 1571 | ] 1572 | 1573 | [[package]] 1574 | name = "datafusion-sql" 1575 | version = "37.1.0" 1576 | source = "registry+https://github.com/rust-lang/crates.io-index" 1577 | checksum = "49eb54b42227136f6287573f2434b1de249fe1b8e6cd6cc73a634e4a3ec29356" 1578 | dependencies = [ 1579 | "arrow", 1580 | "arrow-array", 1581 | "arrow-schema", 1582 | "datafusion-common", 1583 | "datafusion-expr", 1584 | "log", 1585 | "sqlparser", 1586 | "strum", 1587 | ] 1588 | 1589 | [[package]] 1590 | name = "deepsize" 1591 | version = "0.2.0" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | checksum = "1cdb987ec36f6bf7bfbea3f928b75590b736fc42af8e54d97592481351b2b96c" 1594 | dependencies = [ 1595 | "deepsize_derive", 1596 | ] 1597 | 1598 | [[package]] 1599 | name = "deepsize_derive" 1600 | version = "0.1.2" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "990101d41f3bc8c1a45641024377ee284ecc338e5ecf3ea0f0e236d897c72796" 1603 | dependencies = [ 1604 | "proc-macro2", 1605 | "quote", 1606 | "syn 1.0.109", 1607 | ] 1608 | 1609 | [[package]] 1610 | name = "deranged" 1611 | version = "0.3.11" 1612 | source = "registry+https://github.com/rust-lang/crates.io-index" 1613 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 1614 | dependencies = [ 1615 | "powerfmt", 1616 | "serde", 1617 | ] 1618 | 1619 | [[package]] 1620 | name = "derive_arbitrary" 1621 | version = "1.3.2" 1622 | source = "registry+https://github.com/rust-lang/crates.io-index" 1623 | checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" 1624 | dependencies = [ 1625 | "proc-macro2", 1626 | "quote", 1627 | "syn 2.0.68", 1628 | ] 1629 | 1630 | [[package]] 1631 | name = "derive_builder" 1632 | version = "0.20.0" 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" 1634 | checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" 1635 | dependencies = [ 1636 | "derive_builder_macro", 1637 | ] 1638 | 1639 | [[package]] 1640 | name = "derive_builder_core" 1641 | version = "0.20.0" 1642 | source = "registry+https://github.com/rust-lang/crates.io-index" 1643 | checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" 1644 | dependencies = [ 1645 | "darling", 1646 | "proc-macro2", 1647 | "quote", 1648 | "syn 2.0.68", 1649 | ] 1650 | 1651 | [[package]] 1652 | name = "derive_builder_macro" 1653 | version = "0.20.0" 1654 | source = "registry+https://github.com/rust-lang/crates.io-index" 1655 | checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" 1656 | dependencies = [ 1657 | "derive_builder_core", 1658 | "syn 2.0.68", 1659 | ] 1660 | 1661 | [[package]] 1662 | name = "digest" 1663 | version = "0.10.7" 1664 | source = "registry+https://github.com/rust-lang/crates.io-index" 1665 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1666 | dependencies = [ 1667 | "block-buffer", 1668 | "crypto-common", 1669 | "subtle", 1670 | ] 1671 | 1672 | [[package]] 1673 | name = "dirs" 1674 | version = "5.0.1" 1675 | source = "registry+https://github.com/rust-lang/crates.io-index" 1676 | checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" 1677 | dependencies = [ 1678 | "dirs-sys", 1679 | ] 1680 | 1681 | [[package]] 1682 | name = "dirs-sys" 1683 | version = "0.4.1" 1684 | source = "registry+https://github.com/rust-lang/crates.io-index" 1685 | checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" 1686 | dependencies = [ 1687 | "libc", 1688 | "option-ext", 1689 | "redox_users", 1690 | "windows-sys 0.48.0", 1691 | ] 1692 | 1693 | [[package]] 1694 | name = "displaydoc" 1695 | version = "0.2.5" 1696 | source = "registry+https://github.com/rust-lang/crates.io-index" 1697 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1698 | dependencies = [ 1699 | "proc-macro2", 1700 | "quote", 1701 | "syn 2.0.68", 1702 | ] 1703 | 1704 | [[package]] 1705 | name = "doc-comment" 1706 | version = "0.3.3" 1707 | source = "registry+https://github.com/rust-lang/crates.io-index" 1708 | checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" 1709 | 1710 | [[package]] 1711 | name = "doc-embedder" 1712 | version = "0.1.0" 1713 | dependencies = [ 1714 | "anyhow", 1715 | "arrow-array", 1716 | "arrow-schema", 1717 | "candle-core", 1718 | "candle-nn", 1719 | "candle-transformers", 1720 | "clap", 1721 | "futures", 1722 | "hf-hub", 1723 | "lancedb", 1724 | "rayon", 1725 | "serde_json", 1726 | "tokenizers", 1727 | "tokio", 1728 | "tracing", 1729 | "tracing-subscriber", 1730 | ] 1731 | 1732 | [[package]] 1733 | name = "dyn-stack" 1734 | version = "0.10.0" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "56e53799688f5632f364f8fb387488dd05db9fe45db7011be066fc20e7027f8b" 1737 | dependencies = [ 1738 | "bytemuck", 1739 | "reborrow", 1740 | ] 1741 | 1742 | [[package]] 1743 | name = "either" 1744 | version = "1.13.0" 1745 | source = "registry+https://github.com/rust-lang/crates.io-index" 1746 | checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 1747 | 1748 | [[package]] 1749 | name = "encode_unicode" 1750 | version = "0.3.6" 1751 | source = "registry+https://github.com/rust-lang/crates.io-index" 1752 | checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 1753 | 1754 | [[package]] 1755 | name = "encoding_rs" 1756 | version = "0.8.34" 1757 | source = "registry+https://github.com/rust-lang/crates.io-index" 1758 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 1759 | dependencies = [ 1760 | "cfg-if", 1761 | ] 1762 | 1763 | [[package]] 1764 | name = "enum-as-inner" 1765 | version = "0.6.0" 1766 | source = "registry+https://github.com/rust-lang/crates.io-index" 1767 | checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" 1768 | dependencies = [ 1769 | "heck 0.4.1", 1770 | "proc-macro2", 1771 | "quote", 1772 | "syn 2.0.68", 1773 | ] 1774 | 1775 | [[package]] 1776 | name = "equivalent" 1777 | version = "1.0.1" 1778 | source = "registry+https://github.com/rust-lang/crates.io-index" 1779 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1780 | 1781 | [[package]] 1782 | name = "errno" 1783 | version = "0.3.9" 1784 | source = "registry+https://github.com/rust-lang/crates.io-index" 1785 | checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 1786 | dependencies = [ 1787 | "libc", 1788 | "windows-sys 0.52.0", 1789 | ] 1790 | 1791 | [[package]] 1792 | name = "error-chain" 1793 | version = "0.12.4" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" 1796 | dependencies = [ 1797 | "version_check", 1798 | ] 1799 | 1800 | [[package]] 1801 | name = "esaxx-rs" 1802 | version = "0.1.10" 1803 | source = "registry+https://github.com/rust-lang/crates.io-index" 1804 | checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6" 1805 | dependencies = [ 1806 | "cc", 1807 | ] 1808 | 1809 | [[package]] 1810 | name = "event-listener" 1811 | version = "4.0.3" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" 1814 | dependencies = [ 1815 | "concurrent-queue", 1816 | "parking", 1817 | "pin-project-lite", 1818 | ] 1819 | 1820 | [[package]] 1821 | name = "fancy-regex" 1822 | version = "0.13.0" 1823 | source = "registry+https://github.com/rust-lang/crates.io-index" 1824 | checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" 1825 | dependencies = [ 1826 | "bit-set", 1827 | "regex-automata 0.4.7", 1828 | "regex-syntax 0.8.4", 1829 | ] 1830 | 1831 | [[package]] 1832 | name = "fastrand" 1833 | version = "2.1.0" 1834 | source = "registry+https://github.com/rust-lang/crates.io-index" 1835 | checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" 1836 | 1837 | [[package]] 1838 | name = "fixedbitset" 1839 | version = "0.4.2" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" 1842 | 1843 | [[package]] 1844 | name = "flatbuffers" 1845 | version = "23.5.26" 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" 1847 | checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" 1848 | dependencies = [ 1849 | "bitflags 1.3.2", 1850 | "rustc_version", 1851 | ] 1852 | 1853 | [[package]] 1854 | name = "flate2" 1855 | version = "1.0.30" 1856 | source = "registry+https://github.com/rust-lang/crates.io-index" 1857 | checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" 1858 | dependencies = [ 1859 | "crc32fast", 1860 | "miniz_oxide", 1861 | ] 1862 | 1863 | [[package]] 1864 | name = "fnv" 1865 | version = "1.0.7" 1866 | source = "registry+https://github.com/rust-lang/crates.io-index" 1867 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1868 | 1869 | [[package]] 1870 | name = "foreign-types" 1871 | version = "0.3.2" 1872 | source = "registry+https://github.com/rust-lang/crates.io-index" 1873 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1874 | dependencies = [ 1875 | "foreign-types-shared", 1876 | ] 1877 | 1878 | [[package]] 1879 | name = "foreign-types-shared" 1880 | version = "0.1.1" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1883 | 1884 | [[package]] 1885 | name = "form_urlencoded" 1886 | version = "1.2.1" 1887 | source = "registry+https://github.com/rust-lang/crates.io-index" 1888 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 1889 | dependencies = [ 1890 | "percent-encoding", 1891 | ] 1892 | 1893 | [[package]] 1894 | name = "funty" 1895 | version = "2.0.0" 1896 | source = "registry+https://github.com/rust-lang/crates.io-index" 1897 | checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" 1898 | 1899 | [[package]] 1900 | name = "futures" 1901 | version = "0.3.30" 1902 | source = "registry+https://github.com/rust-lang/crates.io-index" 1903 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 1904 | dependencies = [ 1905 | "futures-channel", 1906 | "futures-core", 1907 | "futures-executor", 1908 | "futures-io", 1909 | "futures-sink", 1910 | "futures-task", 1911 | "futures-util", 1912 | ] 1913 | 1914 | [[package]] 1915 | name = "futures-channel" 1916 | version = "0.3.30" 1917 | source = "registry+https://github.com/rust-lang/crates.io-index" 1918 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 1919 | dependencies = [ 1920 | "futures-core", 1921 | "futures-sink", 1922 | ] 1923 | 1924 | [[package]] 1925 | name = "futures-core" 1926 | version = "0.3.30" 1927 | source = "registry+https://github.com/rust-lang/crates.io-index" 1928 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 1929 | 1930 | [[package]] 1931 | name = "futures-executor" 1932 | version = "0.3.30" 1933 | source = "registry+https://github.com/rust-lang/crates.io-index" 1934 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 1935 | dependencies = [ 1936 | "futures-core", 1937 | "futures-task", 1938 | "futures-util", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "futures-io" 1943 | version = "0.3.30" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1946 | 1947 | [[package]] 1948 | name = "futures-macro" 1949 | version = "0.3.30" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 1952 | dependencies = [ 1953 | "proc-macro2", 1954 | "quote", 1955 | "syn 2.0.68", 1956 | ] 1957 | 1958 | [[package]] 1959 | name = "futures-sink" 1960 | version = "0.3.30" 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" 1962 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 1963 | 1964 | [[package]] 1965 | name = "futures-task" 1966 | version = "0.3.30" 1967 | source = "registry+https://github.com/rust-lang/crates.io-index" 1968 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 1969 | 1970 | [[package]] 1971 | name = "futures-util" 1972 | version = "0.3.30" 1973 | source = "registry+https://github.com/rust-lang/crates.io-index" 1974 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 1975 | dependencies = [ 1976 | "futures-channel", 1977 | "futures-core", 1978 | "futures-io", 1979 | "futures-macro", 1980 | "futures-sink", 1981 | "futures-task", 1982 | "memchr", 1983 | "pin-project-lite", 1984 | "pin-utils", 1985 | "slab", 1986 | ] 1987 | 1988 | [[package]] 1989 | name = "gemm" 1990 | version = "0.17.1" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "6ab24cc62135b40090e31a76a9b2766a501979f3070fa27f689c27ec04377d32" 1993 | dependencies = [ 1994 | "dyn-stack", 1995 | "gemm-c32", 1996 | "gemm-c64", 1997 | "gemm-common", 1998 | "gemm-f16", 1999 | "gemm-f32", 2000 | "gemm-f64", 2001 | "num-complex", 2002 | "num-traits", 2003 | "paste", 2004 | "raw-cpuid", 2005 | "seq-macro", 2006 | ] 2007 | 2008 | [[package]] 2009 | name = "gemm-c32" 2010 | version = "0.17.1" 2011 | source = "registry+https://github.com/rust-lang/crates.io-index" 2012 | checksum = "b9c030d0b983d1e34a546b86e08f600c11696fde16199f971cd46c12e67512c0" 2013 | dependencies = [ 2014 | "dyn-stack", 2015 | "gemm-common", 2016 | "num-complex", 2017 | "num-traits", 2018 | "paste", 2019 | "raw-cpuid", 2020 | "seq-macro", 2021 | ] 2022 | 2023 | [[package]] 2024 | name = "gemm-c64" 2025 | version = "0.17.1" 2026 | source = "registry+https://github.com/rust-lang/crates.io-index" 2027 | checksum = "fbb5f2e79fefb9693d18e1066a557b4546cd334b226beadc68b11a8f9431852a" 2028 | dependencies = [ 2029 | "dyn-stack", 2030 | "gemm-common", 2031 | "num-complex", 2032 | "num-traits", 2033 | "paste", 2034 | "raw-cpuid", 2035 | "seq-macro", 2036 | ] 2037 | 2038 | [[package]] 2039 | name = "gemm-common" 2040 | version = "0.17.1" 2041 | source = "registry+https://github.com/rust-lang/crates.io-index" 2042 | checksum = "a2e7ea062c987abcd8db95db917b4ffb4ecdfd0668471d8dc54734fdff2354e8" 2043 | dependencies = [ 2044 | "bytemuck", 2045 | "dyn-stack", 2046 | "half", 2047 | "num-complex", 2048 | "num-traits", 2049 | "once_cell", 2050 | "paste", 2051 | "pulp", 2052 | "raw-cpuid", 2053 | "rayon", 2054 | "seq-macro", 2055 | "sysctl", 2056 | ] 2057 | 2058 | [[package]] 2059 | name = "gemm-f16" 2060 | version = "0.17.1" 2061 | source = "registry+https://github.com/rust-lang/crates.io-index" 2062 | checksum = "7ca4c06b9b11952071d317604acb332e924e817bd891bec8dfb494168c7cedd4" 2063 | dependencies = [ 2064 | "dyn-stack", 2065 | "gemm-common", 2066 | "gemm-f32", 2067 | "half", 2068 | "num-complex", 2069 | "num-traits", 2070 | "paste", 2071 | "raw-cpuid", 2072 | "rayon", 2073 | "seq-macro", 2074 | ] 2075 | 2076 | [[package]] 2077 | name = "gemm-f32" 2078 | version = "0.17.1" 2079 | source = "registry+https://github.com/rust-lang/crates.io-index" 2080 | checksum = "e9a69f51aaefbd9cf12d18faf273d3e982d9d711f60775645ed5c8047b4ae113" 2081 | dependencies = [ 2082 | "dyn-stack", 2083 | "gemm-common", 2084 | "num-complex", 2085 | "num-traits", 2086 | "paste", 2087 | "raw-cpuid", 2088 | "seq-macro", 2089 | ] 2090 | 2091 | [[package]] 2092 | name = "gemm-f64" 2093 | version = "0.17.1" 2094 | source = "registry+https://github.com/rust-lang/crates.io-index" 2095 | checksum = "aa397a48544fadf0b81ec8741e5c0fba0043008113f71f2034def1935645d2b0" 2096 | dependencies = [ 2097 | "dyn-stack", 2098 | "gemm-common", 2099 | "num-complex", 2100 | "num-traits", 2101 | "paste", 2102 | "raw-cpuid", 2103 | "seq-macro", 2104 | ] 2105 | 2106 | [[package]] 2107 | name = "generic-array" 2108 | version = "0.14.7" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 2111 | dependencies = [ 2112 | "typenum", 2113 | "version_check", 2114 | ] 2115 | 2116 | [[package]] 2117 | name = "getrandom" 2118 | version = "0.2.15" 2119 | source = "registry+https://github.com/rust-lang/crates.io-index" 2120 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 2121 | dependencies = [ 2122 | "cfg-if", 2123 | "js-sys", 2124 | "libc", 2125 | "wasi", 2126 | "wasm-bindgen", 2127 | ] 2128 | 2129 | [[package]] 2130 | name = "gimli" 2131 | version = "0.29.0" 2132 | source = "registry+https://github.com/rust-lang/crates.io-index" 2133 | checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" 2134 | 2135 | [[package]] 2136 | name = "glob" 2137 | version = "0.3.1" 2138 | source = "registry+https://github.com/rust-lang/crates.io-index" 2139 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 2140 | 2141 | [[package]] 2142 | name = "h2" 2143 | version = "0.3.26" 2144 | source = "registry+https://github.com/rust-lang/crates.io-index" 2145 | checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 2146 | dependencies = [ 2147 | "bytes", 2148 | "fnv", 2149 | "futures-core", 2150 | "futures-sink", 2151 | "futures-util", 2152 | "http", 2153 | "indexmap 2.2.6", 2154 | "slab", 2155 | "tokio", 2156 | "tokio-util", 2157 | "tracing", 2158 | ] 2159 | 2160 | [[package]] 2161 | name = "half" 2162 | version = "2.4.1" 2163 | source = "registry+https://github.com/rust-lang/crates.io-index" 2164 | checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" 2165 | dependencies = [ 2166 | "bytemuck", 2167 | "cfg-if", 2168 | "crunchy", 2169 | "num-traits", 2170 | "rand", 2171 | "rand_distr", 2172 | ] 2173 | 2174 | [[package]] 2175 | name = "hashbrown" 2176 | version = "0.12.3" 2177 | source = "registry+https://github.com/rust-lang/crates.io-index" 2178 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 2179 | 2180 | [[package]] 2181 | name = "hashbrown" 2182 | version = "0.14.5" 2183 | source = "registry+https://github.com/rust-lang/crates.io-index" 2184 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 2185 | dependencies = [ 2186 | "ahash", 2187 | "allocator-api2", 2188 | ] 2189 | 2190 | [[package]] 2191 | name = "heck" 2192 | version = "0.4.1" 2193 | source = "registry+https://github.com/rust-lang/crates.io-index" 2194 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 2195 | 2196 | [[package]] 2197 | name = "heck" 2198 | version = "0.5.0" 2199 | source = "registry+https://github.com/rust-lang/crates.io-index" 2200 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 2201 | 2202 | [[package]] 2203 | name = "hermit-abi" 2204 | version = "0.3.9" 2205 | source = "registry+https://github.com/rust-lang/crates.io-index" 2206 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 2207 | 2208 | [[package]] 2209 | name = "hex" 2210 | version = "0.4.3" 2211 | source = "registry+https://github.com/rust-lang/crates.io-index" 2212 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 2213 | 2214 | [[package]] 2215 | name = "hf-hub" 2216 | version = "0.3.2" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | checksum = "2b780635574b3d92f036890d8373433d6f9fc7abb320ee42a5c25897fc8ed732" 2219 | dependencies = [ 2220 | "dirs", 2221 | "indicatif", 2222 | "log", 2223 | "native-tls", 2224 | "rand", 2225 | "serde", 2226 | "serde_json", 2227 | "thiserror", 2228 | "ureq", 2229 | ] 2230 | 2231 | [[package]] 2232 | name = "hmac" 2233 | version = "0.12.1" 2234 | source = "registry+https://github.com/rust-lang/crates.io-index" 2235 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 2236 | dependencies = [ 2237 | "digest", 2238 | ] 2239 | 2240 | [[package]] 2241 | name = "http" 2242 | version = "0.2.12" 2243 | source = "registry+https://github.com/rust-lang/crates.io-index" 2244 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 2245 | dependencies = [ 2246 | "bytes", 2247 | "fnv", 2248 | "itoa", 2249 | ] 2250 | 2251 | [[package]] 2252 | name = "http-body" 2253 | version = "0.4.6" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 2256 | dependencies = [ 2257 | "bytes", 2258 | "http", 2259 | "pin-project-lite", 2260 | ] 2261 | 2262 | [[package]] 2263 | name = "httparse" 2264 | version = "1.9.4" 2265 | source = "registry+https://github.com/rust-lang/crates.io-index" 2266 | checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" 2267 | 2268 | [[package]] 2269 | name = "httpdate" 2270 | version = "1.0.3" 2271 | source = "registry+https://github.com/rust-lang/crates.io-index" 2272 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 2273 | 2274 | [[package]] 2275 | name = "humantime" 2276 | version = "2.1.0" 2277 | source = "registry+https://github.com/rust-lang/crates.io-index" 2278 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 2279 | 2280 | [[package]] 2281 | name = "hyper" 2282 | version = "0.14.29" 2283 | source = "registry+https://github.com/rust-lang/crates.io-index" 2284 | checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" 2285 | dependencies = [ 2286 | "bytes", 2287 | "futures-channel", 2288 | "futures-core", 2289 | "futures-util", 2290 | "h2", 2291 | "http", 2292 | "http-body", 2293 | "httparse", 2294 | "httpdate", 2295 | "itoa", 2296 | "pin-project-lite", 2297 | "socket2", 2298 | "tokio", 2299 | "tower-service", 2300 | "tracing", 2301 | "want", 2302 | ] 2303 | 2304 | [[package]] 2305 | name = "hyper-rustls" 2306 | version = "0.24.2" 2307 | source = "registry+https://github.com/rust-lang/crates.io-index" 2308 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 2309 | dependencies = [ 2310 | "futures-util", 2311 | "http", 2312 | "hyper", 2313 | "log", 2314 | "rustls 0.21.12", 2315 | "rustls-native-certs", 2316 | "tokio", 2317 | "tokio-rustls", 2318 | ] 2319 | 2320 | [[package]] 2321 | name = "iana-time-zone" 2322 | version = "0.1.60" 2323 | source = "registry+https://github.com/rust-lang/crates.io-index" 2324 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 2325 | dependencies = [ 2326 | "android_system_properties", 2327 | "core-foundation-sys", 2328 | "iana-time-zone-haiku", 2329 | "js-sys", 2330 | "wasm-bindgen", 2331 | "windows-core", 2332 | ] 2333 | 2334 | [[package]] 2335 | name = "iana-time-zone-haiku" 2336 | version = "0.1.2" 2337 | source = "registry+https://github.com/rust-lang/crates.io-index" 2338 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 2339 | dependencies = [ 2340 | "cc", 2341 | ] 2342 | 2343 | [[package]] 2344 | name = "ident_case" 2345 | version = "1.0.1" 2346 | source = "registry+https://github.com/rust-lang/crates.io-index" 2347 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 2348 | 2349 | [[package]] 2350 | name = "idna" 2351 | version = "0.5.0" 2352 | source = "registry+https://github.com/rust-lang/crates.io-index" 2353 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 2354 | dependencies = [ 2355 | "unicode-bidi", 2356 | "unicode-normalization", 2357 | ] 2358 | 2359 | [[package]] 2360 | name = "indexmap" 2361 | version = "1.9.3" 2362 | source = "registry+https://github.com/rust-lang/crates.io-index" 2363 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 2364 | dependencies = [ 2365 | "autocfg", 2366 | "hashbrown 0.12.3", 2367 | "serde", 2368 | ] 2369 | 2370 | [[package]] 2371 | name = "indexmap" 2372 | version = "2.2.6" 2373 | source = "registry+https://github.com/rust-lang/crates.io-index" 2374 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 2375 | dependencies = [ 2376 | "equivalent", 2377 | "hashbrown 0.14.5", 2378 | "serde", 2379 | ] 2380 | 2381 | [[package]] 2382 | name = "indicatif" 2383 | version = "0.17.8" 2384 | source = "registry+https://github.com/rust-lang/crates.io-index" 2385 | checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" 2386 | dependencies = [ 2387 | "console", 2388 | "instant", 2389 | "number_prefix", 2390 | "portable-atomic", 2391 | "unicode-width", 2392 | ] 2393 | 2394 | [[package]] 2395 | name = "instant" 2396 | version = "0.1.13" 2397 | source = "registry+https://github.com/rust-lang/crates.io-index" 2398 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 2399 | dependencies = [ 2400 | "cfg-if", 2401 | "js-sys", 2402 | "wasm-bindgen", 2403 | "web-sys", 2404 | ] 2405 | 2406 | [[package]] 2407 | name = "ipnet" 2408 | version = "2.9.0" 2409 | source = "registry+https://github.com/rust-lang/crates.io-index" 2410 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 2411 | 2412 | [[package]] 2413 | name = "is_terminal_polyfill" 2414 | version = "1.70.0" 2415 | source = "registry+https://github.com/rust-lang/crates.io-index" 2416 | checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" 2417 | 2418 | [[package]] 2419 | name = "itertools" 2420 | version = "0.11.0" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 2423 | dependencies = [ 2424 | "either", 2425 | ] 2426 | 2427 | [[package]] 2428 | name = "itertools" 2429 | version = "0.12.1" 2430 | source = "registry+https://github.com/rust-lang/crates.io-index" 2431 | checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 2432 | dependencies = [ 2433 | "either", 2434 | ] 2435 | 2436 | [[package]] 2437 | name = "itoa" 2438 | version = "1.0.11" 2439 | source = "registry+https://github.com/rust-lang/crates.io-index" 2440 | checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" 2441 | 2442 | [[package]] 2443 | name = "jobserver" 2444 | version = "0.1.31" 2445 | source = "registry+https://github.com/rust-lang/crates.io-index" 2446 | checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" 2447 | dependencies = [ 2448 | "libc", 2449 | ] 2450 | 2451 | [[package]] 2452 | name = "js-sys" 2453 | version = "0.3.69" 2454 | source = "registry+https://github.com/rust-lang/crates.io-index" 2455 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 2456 | dependencies = [ 2457 | "wasm-bindgen", 2458 | ] 2459 | 2460 | [[package]] 2461 | name = "lance" 2462 | version = "0.13.0" 2463 | source = "registry+https://github.com/rust-lang/crates.io-index" 2464 | checksum = "c8ed48a5a771bae64f4921867da25af3d9629e773d1a31298f400cecaf57a120" 2465 | dependencies = [ 2466 | "arrow", 2467 | "arrow-arith", 2468 | "arrow-array", 2469 | "arrow-buffer", 2470 | "arrow-ord", 2471 | "arrow-row", 2472 | "arrow-schema", 2473 | "arrow-select", 2474 | "async-recursion", 2475 | "async-trait", 2476 | "async_cell", 2477 | "aws-credential-types", 2478 | "aws-sdk-dynamodb", 2479 | "byteorder", 2480 | "bytes", 2481 | "chrono", 2482 | "dashmap", 2483 | "datafusion", 2484 | "datafusion-functions", 2485 | "datafusion-physical-expr", 2486 | "deepsize", 2487 | "futures", 2488 | "half", 2489 | "itertools 0.12.1", 2490 | "lance-arrow", 2491 | "lance-core", 2492 | "lance-datafusion", 2493 | "lance-datagen", 2494 | "lance-encoding", 2495 | "lance-file", 2496 | "lance-index", 2497 | "lance-io", 2498 | "lance-linalg", 2499 | "lance-table", 2500 | "lazy_static", 2501 | "log", 2502 | "lru_time_cache", 2503 | "moka", 2504 | "num_cpus", 2505 | "object_store", 2506 | "ordered-float", 2507 | "pin-project", 2508 | "prost", 2509 | "prost-build", 2510 | "rand", 2511 | "roaring", 2512 | "serde", 2513 | "serde_json", 2514 | "snafu", 2515 | "tempfile", 2516 | "tokio", 2517 | "tracing", 2518 | "url", 2519 | "uuid", 2520 | ] 2521 | 2522 | [[package]] 2523 | name = "lance-arrow" 2524 | version = "0.13.0" 2525 | source = "registry+https://github.com/rust-lang/crates.io-index" 2526 | checksum = "4cbd8e35d0c6995bcb5245cd4bec751669ba13d7bc2f744edf32f396465f8b71" 2527 | dependencies = [ 2528 | "arrow-array", 2529 | "arrow-buffer", 2530 | "arrow-cast", 2531 | "arrow-data", 2532 | "arrow-schema", 2533 | "arrow-select", 2534 | "getrandom", 2535 | "half", 2536 | "num-traits", 2537 | "rand", 2538 | "serde", 2539 | ] 2540 | 2541 | [[package]] 2542 | name = "lance-core" 2543 | version = "0.13.0" 2544 | source = "registry+https://github.com/rust-lang/crates.io-index" 2545 | checksum = "6dc2115378e1aca9b02e905c0a34fe26da5be14c6cc113f28188c1e2950f2216" 2546 | dependencies = [ 2547 | "arrow-array", 2548 | "arrow-buffer", 2549 | "arrow-schema", 2550 | "async-trait", 2551 | "byteorder", 2552 | "bytes", 2553 | "chrono", 2554 | "datafusion-common", 2555 | "datafusion-sql", 2556 | "deepsize", 2557 | "futures", 2558 | "lance-arrow", 2559 | "lazy_static", 2560 | "libc", 2561 | "mock_instant", 2562 | "moka", 2563 | "num_cpus", 2564 | "object_store", 2565 | "pin-project", 2566 | "prost", 2567 | "rand", 2568 | "roaring", 2569 | "serde_json", 2570 | "snafu", 2571 | "tokio", 2572 | "tokio-stream", 2573 | "tokio-util", 2574 | "tracing", 2575 | "url", 2576 | ] 2577 | 2578 | [[package]] 2579 | name = "lance-datafusion" 2580 | version = "0.13.0" 2581 | source = "registry+https://github.com/rust-lang/crates.io-index" 2582 | checksum = "c1e5e1cc7d02b1d10da8ce424efdb2ee5520cd4d65f2ff6e738967989beff708" 2583 | dependencies = [ 2584 | "arrow", 2585 | "arrow-array", 2586 | "arrow-ord", 2587 | "arrow-schema", 2588 | "async-trait", 2589 | "datafusion", 2590 | "datafusion-common", 2591 | "datafusion-functions", 2592 | "datafusion-physical-expr", 2593 | "futures", 2594 | "lance-arrow", 2595 | "lance-core", 2596 | "log", 2597 | "prost", 2598 | "snafu", 2599 | "tokio", 2600 | ] 2601 | 2602 | [[package]] 2603 | name = "lance-datagen" 2604 | version = "0.13.0" 2605 | source = "registry+https://github.com/rust-lang/crates.io-index" 2606 | checksum = "5464d1cf3626f87fbcb9c8309de121784461bc7034f85c468653360d05581d5d" 2607 | dependencies = [ 2608 | "arrow", 2609 | "arrow-array", 2610 | "arrow-cast", 2611 | "arrow-schema", 2612 | "chrono", 2613 | "futures", 2614 | "hex", 2615 | "rand", 2616 | "rand_xoshiro", 2617 | ] 2618 | 2619 | [[package]] 2620 | name = "lance-encoding" 2621 | version = "0.13.0" 2622 | source = "registry+https://github.com/rust-lang/crates.io-index" 2623 | checksum = "07cdb1ad95a323d8c247447aafa4f98dc147555eb4408baf3fbc5dea3e5a9bad" 2624 | dependencies = [ 2625 | "arrow-arith", 2626 | "arrow-array", 2627 | "arrow-buffer", 2628 | "arrow-cast", 2629 | "arrow-schema", 2630 | "arrow-select", 2631 | "bytes", 2632 | "futures", 2633 | "lance-arrow", 2634 | "lance-core", 2635 | "lance-datagen", 2636 | "log", 2637 | "num_cpus", 2638 | "prost", 2639 | "prost-build", 2640 | "prost-types", 2641 | "snafu", 2642 | "tokio", 2643 | "tracing", 2644 | "zstd", 2645 | ] 2646 | 2647 | [[package]] 2648 | name = "lance-file" 2649 | version = "0.13.0" 2650 | source = "registry+https://github.com/rust-lang/crates.io-index" 2651 | checksum = "8954124e2394f408a8bef636c3a3a4f686b780a458cfdea450c57904711c10ef" 2652 | dependencies = [ 2653 | "arrow-arith", 2654 | "arrow-array", 2655 | "arrow-buffer", 2656 | "arrow-data", 2657 | "arrow-schema", 2658 | "arrow-select", 2659 | "async-recursion", 2660 | "async-trait", 2661 | "byteorder", 2662 | "bytes", 2663 | "datafusion-common", 2664 | "deepsize", 2665 | "futures", 2666 | "lance-arrow", 2667 | "lance-core", 2668 | "lance-datagen", 2669 | "lance-encoding", 2670 | "lance-io", 2671 | "log", 2672 | "num-traits", 2673 | "num_cpus", 2674 | "object_store", 2675 | "prost", 2676 | "prost-build", 2677 | "prost-types", 2678 | "roaring", 2679 | "snafu", 2680 | "tempfile", 2681 | "tokio", 2682 | "tracing", 2683 | ] 2684 | 2685 | [[package]] 2686 | name = "lance-index" 2687 | version = "0.13.0" 2688 | source = "registry+https://github.com/rust-lang/crates.io-index" 2689 | checksum = "13c7b4a78bfedce63798d50c2070d8163b762eff556a290822fe088083ac88ee" 2690 | dependencies = [ 2691 | "arrow", 2692 | "arrow-array", 2693 | "arrow-ord", 2694 | "arrow-schema", 2695 | "arrow-select", 2696 | "async-recursion", 2697 | "async-trait", 2698 | "bitvec", 2699 | "crossbeam-queue", 2700 | "datafusion", 2701 | "datafusion-common", 2702 | "datafusion-expr", 2703 | "datafusion-physical-expr", 2704 | "datafusion-sql", 2705 | "deepsize", 2706 | "futures", 2707 | "half", 2708 | "itertools 0.12.1", 2709 | "lance-arrow", 2710 | "lance-core", 2711 | "lance-datafusion", 2712 | "lance-encoding", 2713 | "lance-file", 2714 | "lance-io", 2715 | "lance-linalg", 2716 | "lance-table", 2717 | "lazy_static", 2718 | "log", 2719 | "num-traits", 2720 | "num_cpus", 2721 | "object_store", 2722 | "prost", 2723 | "prost-build", 2724 | "rand", 2725 | "rayon", 2726 | "roaring", 2727 | "rustc_version", 2728 | "serde", 2729 | "serde_json", 2730 | "snafu", 2731 | "tempfile", 2732 | "tokio", 2733 | "tracing", 2734 | ] 2735 | 2736 | [[package]] 2737 | name = "lance-io" 2738 | version = "0.13.0" 2739 | source = "registry+https://github.com/rust-lang/crates.io-index" 2740 | checksum = "e224c8bdf6f23ef946a96b7527a13d09f0612e10122d49d442651eaf3748a866" 2741 | dependencies = [ 2742 | "arrow", 2743 | "arrow-arith", 2744 | "arrow-array", 2745 | "arrow-buffer", 2746 | "arrow-cast", 2747 | "arrow-data", 2748 | "arrow-schema", 2749 | "arrow-select", 2750 | "async-priority-channel", 2751 | "async-recursion", 2752 | "async-trait", 2753 | "aws-config", 2754 | "aws-credential-types", 2755 | "byteorder", 2756 | "bytes", 2757 | "chrono", 2758 | "deepsize", 2759 | "futures", 2760 | "lance-arrow", 2761 | "lance-core", 2762 | "lazy_static", 2763 | "num_cpus", 2764 | "object_store", 2765 | "path_abs", 2766 | "pin-project", 2767 | "prost", 2768 | "prost-build", 2769 | "rand", 2770 | "shellexpand", 2771 | "snafu", 2772 | "tokio", 2773 | "tracing", 2774 | "url", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "lance-linalg" 2779 | version = "0.13.0" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "bcbf240d5ee553f4442fc422000869227cbf63b942c3c9187348fdef9b2c613f" 2782 | dependencies = [ 2783 | "arrow-array", 2784 | "arrow-ord", 2785 | "arrow-schema", 2786 | "bitvec", 2787 | "cc", 2788 | "deepsize", 2789 | "futures", 2790 | "half", 2791 | "lance-arrow", 2792 | "lance-core", 2793 | "lazy_static", 2794 | "log", 2795 | "num-traits", 2796 | "num_cpus", 2797 | "rand", 2798 | "rayon", 2799 | "tokio", 2800 | "tracing", 2801 | ] 2802 | 2803 | [[package]] 2804 | name = "lance-table" 2805 | version = "0.13.0" 2806 | source = "registry+https://github.com/rust-lang/crates.io-index" 2807 | checksum = "05f41927f8890c50637d4e2237f3551b23c07ead02db1c2b1baf909002b93b64" 2808 | dependencies = [ 2809 | "arrow", 2810 | "arrow-array", 2811 | "arrow-buffer", 2812 | "arrow-ipc", 2813 | "arrow-schema", 2814 | "async-trait", 2815 | "aws-credential-types", 2816 | "aws-sdk-dynamodb", 2817 | "byteorder", 2818 | "bytes", 2819 | "chrono", 2820 | "deepsize", 2821 | "futures", 2822 | "lance-arrow", 2823 | "lance-core", 2824 | "lance-datagen", 2825 | "lance-file", 2826 | "lance-io", 2827 | "lazy_static", 2828 | "log", 2829 | "object_store", 2830 | "prost", 2831 | "prost-build", 2832 | "prost-types", 2833 | "rand", 2834 | "rangemap", 2835 | "roaring", 2836 | "serde", 2837 | "serde_json", 2838 | "snafu", 2839 | "tokio", 2840 | "tracing", 2841 | "url", 2842 | "uuid", 2843 | ] 2844 | 2845 | [[package]] 2846 | name = "lance-testing" 2847 | version = "0.13.0" 2848 | source = "registry+https://github.com/rust-lang/crates.io-index" 2849 | checksum = "40bd7c5c16722ff90644fd5544048e7f452dd7374c95c6ccc4f18423f071b4ef" 2850 | dependencies = [ 2851 | "arrow-array", 2852 | "arrow-schema", 2853 | "lance-arrow", 2854 | "num-traits", 2855 | "rand", 2856 | ] 2857 | 2858 | [[package]] 2859 | name = "lancedb" 2860 | version = "0.6.0" 2861 | source = "registry+https://github.com/rust-lang/crates.io-index" 2862 | checksum = "54f7367a302cfdb17a4f2cad40156d70562c45abff33596ce733973a68759f6c" 2863 | dependencies = [ 2864 | "arrow", 2865 | "arrow-array", 2866 | "arrow-cast", 2867 | "arrow-data", 2868 | "arrow-ipc", 2869 | "arrow-ord", 2870 | "arrow-schema", 2871 | "async-trait", 2872 | "bytes", 2873 | "chrono", 2874 | "datafusion-physical-plan", 2875 | "futures", 2876 | "half", 2877 | "lance", 2878 | "lance-datafusion", 2879 | "lance-index", 2880 | "lance-linalg", 2881 | "lance-testing", 2882 | "lazy_static", 2883 | "log", 2884 | "num-traits", 2885 | "object_store", 2886 | "pin-project", 2887 | "regex", 2888 | "serde", 2889 | "serde_json", 2890 | "serde_with", 2891 | "snafu", 2892 | "tokio", 2893 | "url", 2894 | ] 2895 | 2896 | [[package]] 2897 | name = "lazy_static" 2898 | version = "1.5.0" 2899 | source = "registry+https://github.com/rust-lang/crates.io-index" 2900 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2901 | 2902 | [[package]] 2903 | name = "lexical-core" 2904 | version = "0.8.5" 2905 | source = "registry+https://github.com/rust-lang/crates.io-index" 2906 | checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" 2907 | dependencies = [ 2908 | "lexical-parse-float", 2909 | "lexical-parse-integer", 2910 | "lexical-util", 2911 | "lexical-write-float", 2912 | "lexical-write-integer", 2913 | ] 2914 | 2915 | [[package]] 2916 | name = "lexical-parse-float" 2917 | version = "0.8.5" 2918 | source = "registry+https://github.com/rust-lang/crates.io-index" 2919 | checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" 2920 | dependencies = [ 2921 | "lexical-parse-integer", 2922 | "lexical-util", 2923 | "static_assertions", 2924 | ] 2925 | 2926 | [[package]] 2927 | name = "lexical-parse-integer" 2928 | version = "0.8.6" 2929 | source = "registry+https://github.com/rust-lang/crates.io-index" 2930 | checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" 2931 | dependencies = [ 2932 | "lexical-util", 2933 | "static_assertions", 2934 | ] 2935 | 2936 | [[package]] 2937 | name = "lexical-util" 2938 | version = "0.8.5" 2939 | source = "registry+https://github.com/rust-lang/crates.io-index" 2940 | checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" 2941 | dependencies = [ 2942 | "static_assertions", 2943 | ] 2944 | 2945 | [[package]] 2946 | name = "lexical-write-float" 2947 | version = "0.8.5" 2948 | source = "registry+https://github.com/rust-lang/crates.io-index" 2949 | checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" 2950 | dependencies = [ 2951 | "lexical-util", 2952 | "lexical-write-integer", 2953 | "static_assertions", 2954 | ] 2955 | 2956 | [[package]] 2957 | name = "lexical-write-integer" 2958 | version = "0.8.5" 2959 | source = "registry+https://github.com/rust-lang/crates.io-index" 2960 | checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" 2961 | dependencies = [ 2962 | "lexical-util", 2963 | "static_assertions", 2964 | ] 2965 | 2966 | [[package]] 2967 | name = "libc" 2968 | version = "0.2.155" 2969 | source = "registry+https://github.com/rust-lang/crates.io-index" 2970 | checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" 2971 | 2972 | [[package]] 2973 | name = "libm" 2974 | version = "0.2.8" 2975 | source = "registry+https://github.com/rust-lang/crates.io-index" 2976 | checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 2977 | 2978 | [[package]] 2979 | name = "libredox" 2980 | version = "0.1.3" 2981 | source = "registry+https://github.com/rust-lang/crates.io-index" 2982 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 2983 | dependencies = [ 2984 | "bitflags 2.6.0", 2985 | "libc", 2986 | ] 2987 | 2988 | [[package]] 2989 | name = "linux-raw-sys" 2990 | version = "0.4.14" 2991 | source = "registry+https://github.com/rust-lang/crates.io-index" 2992 | checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" 2993 | 2994 | [[package]] 2995 | name = "lock_api" 2996 | version = "0.4.12" 2997 | source = "registry+https://github.com/rust-lang/crates.io-index" 2998 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 2999 | dependencies = [ 3000 | "autocfg", 3001 | "scopeguard", 3002 | ] 3003 | 3004 | [[package]] 3005 | name = "log" 3006 | version = "0.4.22" 3007 | source = "registry+https://github.com/rust-lang/crates.io-index" 3008 | checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 3009 | 3010 | [[package]] 3011 | name = "lru_time_cache" 3012 | version = "0.11.11" 3013 | source = "registry+https://github.com/rust-lang/crates.io-index" 3014 | checksum = "9106e1d747ffd48e6be5bb2d97fa706ed25b144fbee4d5c02eae110cd8d6badd" 3015 | 3016 | [[package]] 3017 | name = "lz4_flex" 3018 | version = "0.11.3" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" 3021 | dependencies = [ 3022 | "twox-hash", 3023 | ] 3024 | 3025 | [[package]] 3026 | name = "mach2" 3027 | version = "0.4.2" 3028 | source = "registry+https://github.com/rust-lang/crates.io-index" 3029 | checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 3030 | dependencies = [ 3031 | "libc", 3032 | ] 3033 | 3034 | [[package]] 3035 | name = "macro_rules_attribute" 3036 | version = "0.2.0" 3037 | source = "registry+https://github.com/rust-lang/crates.io-index" 3038 | checksum = "8a82271f7bc033d84bbca59a3ce3e4159938cb08a9c3aebbe54d215131518a13" 3039 | dependencies = [ 3040 | "macro_rules_attribute-proc_macro", 3041 | "paste", 3042 | ] 3043 | 3044 | [[package]] 3045 | name = "macro_rules_attribute-proc_macro" 3046 | version = "0.2.0" 3047 | source = "registry+https://github.com/rust-lang/crates.io-index" 3048 | checksum = "b8dd856d451cc0da70e2ef2ce95a18e39a93b7558bedf10201ad28503f918568" 3049 | 3050 | [[package]] 3051 | name = "matchers" 3052 | version = "0.1.0" 3053 | source = "registry+https://github.com/rust-lang/crates.io-index" 3054 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 3055 | dependencies = [ 3056 | "regex-automata 0.1.10", 3057 | ] 3058 | 3059 | [[package]] 3060 | name = "md-5" 3061 | version = "0.10.6" 3062 | source = "registry+https://github.com/rust-lang/crates.io-index" 3063 | checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 3064 | dependencies = [ 3065 | "cfg-if", 3066 | "digest", 3067 | ] 3068 | 3069 | [[package]] 3070 | name = "memchr" 3071 | version = "2.7.4" 3072 | source = "registry+https://github.com/rust-lang/crates.io-index" 3073 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 3074 | 3075 | [[package]] 3076 | name = "memmap2" 3077 | version = "0.9.4" 3078 | source = "registry+https://github.com/rust-lang/crates.io-index" 3079 | checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" 3080 | dependencies = [ 3081 | "libc", 3082 | "stable_deref_trait", 3083 | ] 3084 | 3085 | [[package]] 3086 | name = "mime" 3087 | version = "0.3.17" 3088 | source = "registry+https://github.com/rust-lang/crates.io-index" 3089 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 3090 | 3091 | [[package]] 3092 | name = "minimal-lexical" 3093 | version = "0.2.1" 3094 | source = "registry+https://github.com/rust-lang/crates.io-index" 3095 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 3096 | 3097 | [[package]] 3098 | name = "miniz_oxide" 3099 | version = "0.7.4" 3100 | source = "registry+https://github.com/rust-lang/crates.io-index" 3101 | checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" 3102 | dependencies = [ 3103 | "adler", 3104 | ] 3105 | 3106 | [[package]] 3107 | name = "mio" 3108 | version = "0.8.11" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 3111 | dependencies = [ 3112 | "libc", 3113 | "wasi", 3114 | "windows-sys 0.48.0", 3115 | ] 3116 | 3117 | [[package]] 3118 | name = "mock_instant" 3119 | version = "0.3.2" 3120 | source = "registry+https://github.com/rust-lang/crates.io-index" 3121 | checksum = "9366861eb2a2c436c20b12c8dbec5f798cea6b47ad99216be0282942e2c81ea0" 3122 | dependencies = [ 3123 | "once_cell", 3124 | ] 3125 | 3126 | [[package]] 3127 | name = "moka" 3128 | version = "0.11.3" 3129 | source = "registry+https://github.com/rust-lang/crates.io-index" 3130 | checksum = "fa6e72583bf6830c956235bff0d5afec8cf2952f579ebad18ae7821a917d950f" 3131 | dependencies = [ 3132 | "crossbeam-channel", 3133 | "crossbeam-epoch", 3134 | "crossbeam-utils", 3135 | "once_cell", 3136 | "parking_lot", 3137 | "quanta", 3138 | "rustc_version", 3139 | "scheduled-thread-pool", 3140 | "skeptic", 3141 | "smallvec", 3142 | "tagptr", 3143 | "thiserror", 3144 | "triomphe", 3145 | "uuid", 3146 | ] 3147 | 3148 | [[package]] 3149 | name = "monostate" 3150 | version = "0.1.13" 3151 | source = "registry+https://github.com/rust-lang/crates.io-index" 3152 | checksum = "0d208407d7552cd041d8cdb69a1bc3303e029c598738177a3d87082004dc0e1e" 3153 | dependencies = [ 3154 | "monostate-impl", 3155 | "serde", 3156 | ] 3157 | 3158 | [[package]] 3159 | name = "monostate-impl" 3160 | version = "0.1.13" 3161 | source = "registry+https://github.com/rust-lang/crates.io-index" 3162 | checksum = "a7ce64b975ed4f123575d11afd9491f2e37bbd5813fbfbc0f09ae1fbddea74e0" 3163 | dependencies = [ 3164 | "proc-macro2", 3165 | "quote", 3166 | "syn 2.0.68", 3167 | ] 3168 | 3169 | [[package]] 3170 | name = "multimap" 3171 | version = "0.10.0" 3172 | source = "registry+https://github.com/rust-lang/crates.io-index" 3173 | checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" 3174 | 3175 | [[package]] 3176 | name = "native-tls" 3177 | version = "0.2.12" 3178 | source = "registry+https://github.com/rust-lang/crates.io-index" 3179 | checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" 3180 | dependencies = [ 3181 | "libc", 3182 | "log", 3183 | "openssl", 3184 | "openssl-probe", 3185 | "openssl-sys", 3186 | "schannel", 3187 | "security-framework", 3188 | "security-framework-sys", 3189 | "tempfile", 3190 | ] 3191 | 3192 | [[package]] 3193 | name = "nom" 3194 | version = "7.1.3" 3195 | source = "registry+https://github.com/rust-lang/crates.io-index" 3196 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 3197 | dependencies = [ 3198 | "memchr", 3199 | "minimal-lexical", 3200 | ] 3201 | 3202 | [[package]] 3203 | name = "nu-ansi-term" 3204 | version = "0.46.0" 3205 | source = "registry+https://github.com/rust-lang/crates.io-index" 3206 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 3207 | dependencies = [ 3208 | "overload", 3209 | "winapi", 3210 | ] 3211 | 3212 | [[package]] 3213 | name = "num" 3214 | version = "0.4.3" 3215 | source = "registry+https://github.com/rust-lang/crates.io-index" 3216 | checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" 3217 | dependencies = [ 3218 | "num-bigint", 3219 | "num-complex", 3220 | "num-integer", 3221 | "num-iter", 3222 | "num-rational", 3223 | "num-traits", 3224 | ] 3225 | 3226 | [[package]] 3227 | name = "num-bigint" 3228 | version = "0.4.6" 3229 | source = "registry+https://github.com/rust-lang/crates.io-index" 3230 | checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 3231 | dependencies = [ 3232 | "num-integer", 3233 | "num-traits", 3234 | ] 3235 | 3236 | [[package]] 3237 | name = "num-complex" 3238 | version = "0.4.6" 3239 | source = "registry+https://github.com/rust-lang/crates.io-index" 3240 | checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 3241 | dependencies = [ 3242 | "bytemuck", 3243 | "num-traits", 3244 | ] 3245 | 3246 | [[package]] 3247 | name = "num-conv" 3248 | version = "0.1.0" 3249 | source = "registry+https://github.com/rust-lang/crates.io-index" 3250 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 3251 | 3252 | [[package]] 3253 | name = "num-integer" 3254 | version = "0.1.46" 3255 | source = "registry+https://github.com/rust-lang/crates.io-index" 3256 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 3257 | dependencies = [ 3258 | "num-traits", 3259 | ] 3260 | 3261 | [[package]] 3262 | name = "num-iter" 3263 | version = "0.1.45" 3264 | source = "registry+https://github.com/rust-lang/crates.io-index" 3265 | checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 3266 | dependencies = [ 3267 | "autocfg", 3268 | "num-integer", 3269 | "num-traits", 3270 | ] 3271 | 3272 | [[package]] 3273 | name = "num-rational" 3274 | version = "0.4.2" 3275 | source = "registry+https://github.com/rust-lang/crates.io-index" 3276 | checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 3277 | dependencies = [ 3278 | "num-bigint", 3279 | "num-integer", 3280 | "num-traits", 3281 | ] 3282 | 3283 | [[package]] 3284 | name = "num-traits" 3285 | version = "0.2.19" 3286 | source = "registry+https://github.com/rust-lang/crates.io-index" 3287 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 3288 | dependencies = [ 3289 | "autocfg", 3290 | "libm", 3291 | ] 3292 | 3293 | [[package]] 3294 | name = "num_cpus" 3295 | version = "1.16.0" 3296 | source = "registry+https://github.com/rust-lang/crates.io-index" 3297 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 3298 | dependencies = [ 3299 | "hermit-abi", 3300 | "libc", 3301 | ] 3302 | 3303 | [[package]] 3304 | name = "num_enum" 3305 | version = "0.7.2" 3306 | source = "registry+https://github.com/rust-lang/crates.io-index" 3307 | checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" 3308 | dependencies = [ 3309 | "num_enum_derive", 3310 | ] 3311 | 3312 | [[package]] 3313 | name = "num_enum_derive" 3314 | version = "0.7.2" 3315 | source = "registry+https://github.com/rust-lang/crates.io-index" 3316 | checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" 3317 | dependencies = [ 3318 | "proc-macro-crate", 3319 | "proc-macro2", 3320 | "quote", 3321 | "syn 2.0.68", 3322 | ] 3323 | 3324 | [[package]] 3325 | name = "number_prefix" 3326 | version = "0.4.0" 3327 | source = "registry+https://github.com/rust-lang/crates.io-index" 3328 | checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 3329 | 3330 | [[package]] 3331 | name = "object" 3332 | version = "0.36.1" 3333 | source = "registry+https://github.com/rust-lang/crates.io-index" 3334 | checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" 3335 | dependencies = [ 3336 | "memchr", 3337 | ] 3338 | 3339 | [[package]] 3340 | name = "object_store" 3341 | version = "0.9.1" 3342 | source = "registry+https://github.com/rust-lang/crates.io-index" 3343 | checksum = "b8718f8b65fdf67a45108d1548347d4af7d71fb81ce727bbf9e3b2535e079db3" 3344 | dependencies = [ 3345 | "async-trait", 3346 | "base64 0.21.7", 3347 | "bytes", 3348 | "chrono", 3349 | "futures", 3350 | "humantime", 3351 | "hyper", 3352 | "itertools 0.12.1", 3353 | "md-5", 3354 | "parking_lot", 3355 | "percent-encoding", 3356 | "quick-xml", 3357 | "rand", 3358 | "reqwest", 3359 | "ring 0.17.8", 3360 | "rustls-pemfile 2.1.2", 3361 | "serde", 3362 | "serde_json", 3363 | "snafu", 3364 | "tokio", 3365 | "tracing", 3366 | "url", 3367 | "walkdir", 3368 | ] 3369 | 3370 | [[package]] 3371 | name = "once_cell" 3372 | version = "1.19.0" 3373 | source = "registry+https://github.com/rust-lang/crates.io-index" 3374 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 3375 | 3376 | [[package]] 3377 | name = "onig" 3378 | version = "6.4.0" 3379 | source = "registry+https://github.com/rust-lang/crates.io-index" 3380 | checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" 3381 | dependencies = [ 3382 | "bitflags 1.3.2", 3383 | "libc", 3384 | "once_cell", 3385 | "onig_sys", 3386 | ] 3387 | 3388 | [[package]] 3389 | name = "onig_sys" 3390 | version = "69.8.1" 3391 | source = "registry+https://github.com/rust-lang/crates.io-index" 3392 | checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" 3393 | dependencies = [ 3394 | "cc", 3395 | "pkg-config", 3396 | ] 3397 | 3398 | [[package]] 3399 | name = "openssl" 3400 | version = "0.10.64" 3401 | source = "registry+https://github.com/rust-lang/crates.io-index" 3402 | checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" 3403 | dependencies = [ 3404 | "bitflags 2.6.0", 3405 | "cfg-if", 3406 | "foreign-types", 3407 | "libc", 3408 | "once_cell", 3409 | "openssl-macros", 3410 | "openssl-sys", 3411 | ] 3412 | 3413 | [[package]] 3414 | name = "openssl-macros" 3415 | version = "0.1.1" 3416 | source = "registry+https://github.com/rust-lang/crates.io-index" 3417 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 3418 | dependencies = [ 3419 | "proc-macro2", 3420 | "quote", 3421 | "syn 2.0.68", 3422 | ] 3423 | 3424 | [[package]] 3425 | name = "openssl-probe" 3426 | version = "0.1.5" 3427 | source = "registry+https://github.com/rust-lang/crates.io-index" 3428 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 3429 | 3430 | [[package]] 3431 | name = "openssl-sys" 3432 | version = "0.9.102" 3433 | source = "registry+https://github.com/rust-lang/crates.io-index" 3434 | checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" 3435 | dependencies = [ 3436 | "cc", 3437 | "libc", 3438 | "pkg-config", 3439 | "vcpkg", 3440 | ] 3441 | 3442 | [[package]] 3443 | name = "option-ext" 3444 | version = "0.2.0" 3445 | source = "registry+https://github.com/rust-lang/crates.io-index" 3446 | checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 3447 | 3448 | [[package]] 3449 | name = "ordered-float" 3450 | version = "3.9.2" 3451 | source = "registry+https://github.com/rust-lang/crates.io-index" 3452 | checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" 3453 | dependencies = [ 3454 | "num-traits", 3455 | ] 3456 | 3457 | [[package]] 3458 | name = "outref" 3459 | version = "0.5.1" 3460 | source = "registry+https://github.com/rust-lang/crates.io-index" 3461 | checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" 3462 | 3463 | [[package]] 3464 | name = "overload" 3465 | version = "0.1.1" 3466 | source = "registry+https://github.com/rust-lang/crates.io-index" 3467 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 3468 | 3469 | [[package]] 3470 | name = "parking" 3471 | version = "2.2.0" 3472 | source = "registry+https://github.com/rust-lang/crates.io-index" 3473 | checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" 3474 | 3475 | [[package]] 3476 | name = "parking_lot" 3477 | version = "0.12.3" 3478 | source = "registry+https://github.com/rust-lang/crates.io-index" 3479 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 3480 | dependencies = [ 3481 | "lock_api", 3482 | "parking_lot_core", 3483 | ] 3484 | 3485 | [[package]] 3486 | name = "parking_lot_core" 3487 | version = "0.9.10" 3488 | source = "registry+https://github.com/rust-lang/crates.io-index" 3489 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 3490 | dependencies = [ 3491 | "cfg-if", 3492 | "libc", 3493 | "redox_syscall", 3494 | "smallvec", 3495 | "windows-targets 0.52.5", 3496 | ] 3497 | 3498 | [[package]] 3499 | name = "parse-zoneinfo" 3500 | version = "0.3.1" 3501 | source = "registry+https://github.com/rust-lang/crates.io-index" 3502 | checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" 3503 | dependencies = [ 3504 | "regex", 3505 | ] 3506 | 3507 | [[package]] 3508 | name = "paste" 3509 | version = "1.0.15" 3510 | source = "registry+https://github.com/rust-lang/crates.io-index" 3511 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 3512 | 3513 | [[package]] 3514 | name = "path_abs" 3515 | version = "0.5.1" 3516 | source = "registry+https://github.com/rust-lang/crates.io-index" 3517 | checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3" 3518 | dependencies = [ 3519 | "serde", 3520 | "serde_derive", 3521 | "std_prelude", 3522 | "stfu8", 3523 | ] 3524 | 3525 | [[package]] 3526 | name = "percent-encoding" 3527 | version = "2.3.1" 3528 | source = "registry+https://github.com/rust-lang/crates.io-index" 3529 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 3530 | 3531 | [[package]] 3532 | name = "petgraph" 3533 | version = "0.6.5" 3534 | source = "registry+https://github.com/rust-lang/crates.io-index" 3535 | checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" 3536 | dependencies = [ 3537 | "fixedbitset", 3538 | "indexmap 2.2.6", 3539 | ] 3540 | 3541 | [[package]] 3542 | name = "phf" 3543 | version = "0.11.2" 3544 | source = "registry+https://github.com/rust-lang/crates.io-index" 3545 | checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" 3546 | dependencies = [ 3547 | "phf_shared", 3548 | ] 3549 | 3550 | [[package]] 3551 | name = "phf_codegen" 3552 | version = "0.11.2" 3553 | source = "registry+https://github.com/rust-lang/crates.io-index" 3554 | checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" 3555 | dependencies = [ 3556 | "phf_generator", 3557 | "phf_shared", 3558 | ] 3559 | 3560 | [[package]] 3561 | name = "phf_generator" 3562 | version = "0.11.2" 3563 | source = "registry+https://github.com/rust-lang/crates.io-index" 3564 | checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" 3565 | dependencies = [ 3566 | "phf_shared", 3567 | "rand", 3568 | ] 3569 | 3570 | [[package]] 3571 | name = "phf_shared" 3572 | version = "0.11.2" 3573 | source = "registry+https://github.com/rust-lang/crates.io-index" 3574 | checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" 3575 | dependencies = [ 3576 | "siphasher", 3577 | ] 3578 | 3579 | [[package]] 3580 | name = "pin-project" 3581 | version = "1.1.5" 3582 | source = "registry+https://github.com/rust-lang/crates.io-index" 3583 | checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" 3584 | dependencies = [ 3585 | "pin-project-internal", 3586 | ] 3587 | 3588 | [[package]] 3589 | name = "pin-project-internal" 3590 | version = "1.1.5" 3591 | source = "registry+https://github.com/rust-lang/crates.io-index" 3592 | checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" 3593 | dependencies = [ 3594 | "proc-macro2", 3595 | "quote", 3596 | "syn 2.0.68", 3597 | ] 3598 | 3599 | [[package]] 3600 | name = "pin-project-lite" 3601 | version = "0.2.14" 3602 | source = "registry+https://github.com/rust-lang/crates.io-index" 3603 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 3604 | 3605 | [[package]] 3606 | name = "pin-utils" 3607 | version = "0.1.0" 3608 | source = "registry+https://github.com/rust-lang/crates.io-index" 3609 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 3610 | 3611 | [[package]] 3612 | name = "pkg-config" 3613 | version = "0.3.30" 3614 | source = "registry+https://github.com/rust-lang/crates.io-index" 3615 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 3616 | 3617 | [[package]] 3618 | name = "portable-atomic" 3619 | version = "1.6.0" 3620 | source = "registry+https://github.com/rust-lang/crates.io-index" 3621 | checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" 3622 | 3623 | [[package]] 3624 | name = "powerfmt" 3625 | version = "0.2.0" 3626 | source = "registry+https://github.com/rust-lang/crates.io-index" 3627 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 3628 | 3629 | [[package]] 3630 | name = "ppv-lite86" 3631 | version = "0.2.17" 3632 | source = "registry+https://github.com/rust-lang/crates.io-index" 3633 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 3634 | 3635 | [[package]] 3636 | name = "prettyplease" 3637 | version = "0.2.20" 3638 | source = "registry+https://github.com/rust-lang/crates.io-index" 3639 | checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" 3640 | dependencies = [ 3641 | "proc-macro2", 3642 | "syn 2.0.68", 3643 | ] 3644 | 3645 | [[package]] 3646 | name = "proc-macro-crate" 3647 | version = "3.1.0" 3648 | source = "registry+https://github.com/rust-lang/crates.io-index" 3649 | checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" 3650 | dependencies = [ 3651 | "toml_edit", 3652 | ] 3653 | 3654 | [[package]] 3655 | name = "proc-macro2" 3656 | version = "1.0.86" 3657 | source = "registry+https://github.com/rust-lang/crates.io-index" 3658 | checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" 3659 | dependencies = [ 3660 | "unicode-ident", 3661 | ] 3662 | 3663 | [[package]] 3664 | name = "prost" 3665 | version = "0.12.6" 3666 | source = "registry+https://github.com/rust-lang/crates.io-index" 3667 | checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" 3668 | dependencies = [ 3669 | "bytes", 3670 | "prost-derive", 3671 | ] 3672 | 3673 | [[package]] 3674 | name = "prost-build" 3675 | version = "0.12.6" 3676 | source = "registry+https://github.com/rust-lang/crates.io-index" 3677 | checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" 3678 | dependencies = [ 3679 | "bytes", 3680 | "heck 0.5.0", 3681 | "itertools 0.12.1", 3682 | "log", 3683 | "multimap", 3684 | "once_cell", 3685 | "petgraph", 3686 | "prettyplease", 3687 | "prost", 3688 | "prost-types", 3689 | "regex", 3690 | "syn 2.0.68", 3691 | "tempfile", 3692 | ] 3693 | 3694 | [[package]] 3695 | name = "prost-derive" 3696 | version = "0.12.6" 3697 | source = "registry+https://github.com/rust-lang/crates.io-index" 3698 | checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" 3699 | dependencies = [ 3700 | "anyhow", 3701 | "itertools 0.12.1", 3702 | "proc-macro2", 3703 | "quote", 3704 | "syn 2.0.68", 3705 | ] 3706 | 3707 | [[package]] 3708 | name = "prost-types" 3709 | version = "0.12.6" 3710 | source = "registry+https://github.com/rust-lang/crates.io-index" 3711 | checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" 3712 | dependencies = [ 3713 | "prost", 3714 | ] 3715 | 3716 | [[package]] 3717 | name = "pulldown-cmark" 3718 | version = "0.9.6" 3719 | source = "registry+https://github.com/rust-lang/crates.io-index" 3720 | checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" 3721 | dependencies = [ 3722 | "bitflags 2.6.0", 3723 | "memchr", 3724 | "unicase", 3725 | ] 3726 | 3727 | [[package]] 3728 | name = "pulp" 3729 | version = "0.18.21" 3730 | source = "registry+https://github.com/rust-lang/crates.io-index" 3731 | checksum = "0ec8d02258294f59e4e223b41ad7e81c874aa6b15bc4ced9ba3965826da0eed5" 3732 | dependencies = [ 3733 | "bytemuck", 3734 | "libm", 3735 | "num-complex", 3736 | "reborrow", 3737 | ] 3738 | 3739 | [[package]] 3740 | name = "quanta" 3741 | version = "0.11.1" 3742 | source = "registry+https://github.com/rust-lang/crates.io-index" 3743 | checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" 3744 | dependencies = [ 3745 | "crossbeam-utils", 3746 | "libc", 3747 | "mach2", 3748 | "once_cell", 3749 | "raw-cpuid", 3750 | "wasi", 3751 | "web-sys", 3752 | "winapi", 3753 | ] 3754 | 3755 | [[package]] 3756 | name = "quick-xml" 3757 | version = "0.31.0" 3758 | source = "registry+https://github.com/rust-lang/crates.io-index" 3759 | checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" 3760 | dependencies = [ 3761 | "memchr", 3762 | "serde", 3763 | ] 3764 | 3765 | [[package]] 3766 | name = "quote" 3767 | version = "1.0.36" 3768 | source = "registry+https://github.com/rust-lang/crates.io-index" 3769 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 3770 | dependencies = [ 3771 | "proc-macro2", 3772 | ] 3773 | 3774 | [[package]] 3775 | name = "radium" 3776 | version = "0.7.0" 3777 | source = "registry+https://github.com/rust-lang/crates.io-index" 3778 | checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" 3779 | 3780 | [[package]] 3781 | name = "rand" 3782 | version = "0.8.5" 3783 | source = "registry+https://github.com/rust-lang/crates.io-index" 3784 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 3785 | dependencies = [ 3786 | "libc", 3787 | "rand_chacha", 3788 | "rand_core", 3789 | ] 3790 | 3791 | [[package]] 3792 | name = "rand_chacha" 3793 | version = "0.3.1" 3794 | source = "registry+https://github.com/rust-lang/crates.io-index" 3795 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 3796 | dependencies = [ 3797 | "ppv-lite86", 3798 | "rand_core", 3799 | ] 3800 | 3801 | [[package]] 3802 | name = "rand_core" 3803 | version = "0.6.4" 3804 | source = "registry+https://github.com/rust-lang/crates.io-index" 3805 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 3806 | dependencies = [ 3807 | "getrandom", 3808 | ] 3809 | 3810 | [[package]] 3811 | name = "rand_distr" 3812 | version = "0.4.3" 3813 | source = "registry+https://github.com/rust-lang/crates.io-index" 3814 | checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" 3815 | dependencies = [ 3816 | "num-traits", 3817 | "rand", 3818 | ] 3819 | 3820 | [[package]] 3821 | name = "rand_xoshiro" 3822 | version = "0.6.0" 3823 | source = "registry+https://github.com/rust-lang/crates.io-index" 3824 | checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" 3825 | dependencies = [ 3826 | "rand_core", 3827 | ] 3828 | 3829 | [[package]] 3830 | name = "rangemap" 3831 | version = "1.5.1" 3832 | source = "registry+https://github.com/rust-lang/crates.io-index" 3833 | checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" 3834 | 3835 | [[package]] 3836 | name = "raw-cpuid" 3837 | version = "10.7.0" 3838 | source = "registry+https://github.com/rust-lang/crates.io-index" 3839 | checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" 3840 | dependencies = [ 3841 | "bitflags 1.3.2", 3842 | ] 3843 | 3844 | [[package]] 3845 | name = "rayon" 3846 | version = "1.10.0" 3847 | source = "registry+https://github.com/rust-lang/crates.io-index" 3848 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 3849 | dependencies = [ 3850 | "either", 3851 | "rayon-core", 3852 | ] 3853 | 3854 | [[package]] 3855 | name = "rayon-cond" 3856 | version = "0.3.0" 3857 | source = "registry+https://github.com/rust-lang/crates.io-index" 3858 | checksum = "059f538b55efd2309c9794130bc149c6a553db90e9d99c2030785c82f0bd7df9" 3859 | dependencies = [ 3860 | "either", 3861 | "itertools 0.11.0", 3862 | "rayon", 3863 | ] 3864 | 3865 | [[package]] 3866 | name = "rayon-core" 3867 | version = "1.12.1" 3868 | source = "registry+https://github.com/rust-lang/crates.io-index" 3869 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 3870 | dependencies = [ 3871 | "crossbeam-deque", 3872 | "crossbeam-utils", 3873 | ] 3874 | 3875 | [[package]] 3876 | name = "reborrow" 3877 | version = "0.5.5" 3878 | source = "registry+https://github.com/rust-lang/crates.io-index" 3879 | checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" 3880 | 3881 | [[package]] 3882 | name = "redox_syscall" 3883 | version = "0.5.2" 3884 | source = "registry+https://github.com/rust-lang/crates.io-index" 3885 | checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" 3886 | dependencies = [ 3887 | "bitflags 2.6.0", 3888 | ] 3889 | 3890 | [[package]] 3891 | name = "redox_users" 3892 | version = "0.4.5" 3893 | source = "registry+https://github.com/rust-lang/crates.io-index" 3894 | checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" 3895 | dependencies = [ 3896 | "getrandom", 3897 | "libredox", 3898 | "thiserror", 3899 | ] 3900 | 3901 | [[package]] 3902 | name = "regex" 3903 | version = "1.10.5" 3904 | source = "registry+https://github.com/rust-lang/crates.io-index" 3905 | checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" 3906 | dependencies = [ 3907 | "aho-corasick", 3908 | "memchr", 3909 | "regex-automata 0.4.7", 3910 | "regex-syntax 0.8.4", 3911 | ] 3912 | 3913 | [[package]] 3914 | name = "regex-automata" 3915 | version = "0.1.10" 3916 | source = "registry+https://github.com/rust-lang/crates.io-index" 3917 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 3918 | dependencies = [ 3919 | "regex-syntax 0.6.29", 3920 | ] 3921 | 3922 | [[package]] 3923 | name = "regex-automata" 3924 | version = "0.4.7" 3925 | source = "registry+https://github.com/rust-lang/crates.io-index" 3926 | checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" 3927 | dependencies = [ 3928 | "aho-corasick", 3929 | "memchr", 3930 | "regex-syntax 0.8.4", 3931 | ] 3932 | 3933 | [[package]] 3934 | name = "regex-syntax" 3935 | version = "0.6.29" 3936 | source = "registry+https://github.com/rust-lang/crates.io-index" 3937 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 3938 | 3939 | [[package]] 3940 | name = "regex-syntax" 3941 | version = "0.8.4" 3942 | source = "registry+https://github.com/rust-lang/crates.io-index" 3943 | checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" 3944 | 3945 | [[package]] 3946 | name = "reqwest" 3947 | version = "0.11.27" 3948 | source = "registry+https://github.com/rust-lang/crates.io-index" 3949 | checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 3950 | dependencies = [ 3951 | "base64 0.21.7", 3952 | "bytes", 3953 | "encoding_rs", 3954 | "futures-core", 3955 | "futures-util", 3956 | "h2", 3957 | "http", 3958 | "http-body", 3959 | "hyper", 3960 | "hyper-rustls", 3961 | "ipnet", 3962 | "js-sys", 3963 | "log", 3964 | "mime", 3965 | "once_cell", 3966 | "percent-encoding", 3967 | "pin-project-lite", 3968 | "rustls 0.21.12", 3969 | "rustls-native-certs", 3970 | "rustls-pemfile 1.0.4", 3971 | "serde", 3972 | "serde_json", 3973 | "serde_urlencoded", 3974 | "sync_wrapper", 3975 | "system-configuration", 3976 | "tokio", 3977 | "tokio-rustls", 3978 | "tokio-util", 3979 | "tower-service", 3980 | "url", 3981 | "wasm-bindgen", 3982 | "wasm-bindgen-futures", 3983 | "wasm-streams", 3984 | "web-sys", 3985 | "winreg", 3986 | ] 3987 | 3988 | [[package]] 3989 | name = "ring" 3990 | version = "0.16.20" 3991 | source = "registry+https://github.com/rust-lang/crates.io-index" 3992 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 3993 | dependencies = [ 3994 | "cc", 3995 | "libc", 3996 | "once_cell", 3997 | "spin 0.5.2", 3998 | "untrusted 0.7.1", 3999 | "web-sys", 4000 | "winapi", 4001 | ] 4002 | 4003 | [[package]] 4004 | name = "ring" 4005 | version = "0.17.8" 4006 | source = "registry+https://github.com/rust-lang/crates.io-index" 4007 | checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 4008 | dependencies = [ 4009 | "cc", 4010 | "cfg-if", 4011 | "getrandom", 4012 | "libc", 4013 | "spin 0.9.8", 4014 | "untrusted 0.9.0", 4015 | "windows-sys 0.52.0", 4016 | ] 4017 | 4018 | [[package]] 4019 | name = "roaring" 4020 | version = "0.10.6" 4021 | source = "registry+https://github.com/rust-lang/crates.io-index" 4022 | checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1" 4023 | dependencies = [ 4024 | "bytemuck", 4025 | "byteorder", 4026 | ] 4027 | 4028 | [[package]] 4029 | name = "rustc-demangle" 4030 | version = "0.1.24" 4031 | source = "registry+https://github.com/rust-lang/crates.io-index" 4032 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 4033 | 4034 | [[package]] 4035 | name = "rustc_version" 4036 | version = "0.4.0" 4037 | source = "registry+https://github.com/rust-lang/crates.io-index" 4038 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 4039 | dependencies = [ 4040 | "semver", 4041 | ] 4042 | 4043 | [[package]] 4044 | name = "rustix" 4045 | version = "0.38.34" 4046 | source = "registry+https://github.com/rust-lang/crates.io-index" 4047 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 4048 | dependencies = [ 4049 | "bitflags 2.6.0", 4050 | "errno", 4051 | "libc", 4052 | "linux-raw-sys", 4053 | "windows-sys 0.52.0", 4054 | ] 4055 | 4056 | [[package]] 4057 | name = "rustls" 4058 | version = "0.21.12" 4059 | source = "registry+https://github.com/rust-lang/crates.io-index" 4060 | checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 4061 | dependencies = [ 4062 | "log", 4063 | "ring 0.17.8", 4064 | "rustls-webpki 0.101.7", 4065 | "sct", 4066 | ] 4067 | 4068 | [[package]] 4069 | name = "rustls" 4070 | version = "0.22.4" 4071 | source = "registry+https://github.com/rust-lang/crates.io-index" 4072 | checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" 4073 | dependencies = [ 4074 | "log", 4075 | "ring 0.17.8", 4076 | "rustls-pki-types", 4077 | "rustls-webpki 0.102.4", 4078 | "subtle", 4079 | "zeroize", 4080 | ] 4081 | 4082 | [[package]] 4083 | name = "rustls-native-certs" 4084 | version = "0.6.3" 4085 | source = "registry+https://github.com/rust-lang/crates.io-index" 4086 | checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" 4087 | dependencies = [ 4088 | "openssl-probe", 4089 | "rustls-pemfile 1.0.4", 4090 | "schannel", 4091 | "security-framework", 4092 | ] 4093 | 4094 | [[package]] 4095 | name = "rustls-pemfile" 4096 | version = "1.0.4" 4097 | source = "registry+https://github.com/rust-lang/crates.io-index" 4098 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 4099 | dependencies = [ 4100 | "base64 0.21.7", 4101 | ] 4102 | 4103 | [[package]] 4104 | name = "rustls-pemfile" 4105 | version = "2.1.2" 4106 | source = "registry+https://github.com/rust-lang/crates.io-index" 4107 | checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" 4108 | dependencies = [ 4109 | "base64 0.22.1", 4110 | "rustls-pki-types", 4111 | ] 4112 | 4113 | [[package]] 4114 | name = "rustls-pki-types" 4115 | version = "1.7.0" 4116 | source = "registry+https://github.com/rust-lang/crates.io-index" 4117 | checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" 4118 | 4119 | [[package]] 4120 | name = "rustls-webpki" 4121 | version = "0.101.7" 4122 | source = "registry+https://github.com/rust-lang/crates.io-index" 4123 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 4124 | dependencies = [ 4125 | "ring 0.17.8", 4126 | "untrusted 0.9.0", 4127 | ] 4128 | 4129 | [[package]] 4130 | name = "rustls-webpki" 4131 | version = "0.102.4" 4132 | source = "registry+https://github.com/rust-lang/crates.io-index" 4133 | checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" 4134 | dependencies = [ 4135 | "ring 0.17.8", 4136 | "rustls-pki-types", 4137 | "untrusted 0.9.0", 4138 | ] 4139 | 4140 | [[package]] 4141 | name = "rustversion" 4142 | version = "1.0.17" 4143 | source = "registry+https://github.com/rust-lang/crates.io-index" 4144 | checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" 4145 | 4146 | [[package]] 4147 | name = "ryu" 4148 | version = "1.0.18" 4149 | source = "registry+https://github.com/rust-lang/crates.io-index" 4150 | checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 4151 | 4152 | [[package]] 4153 | name = "safetensors" 4154 | version = "0.4.3" 4155 | source = "registry+https://github.com/rust-lang/crates.io-index" 4156 | checksum = "8ced76b22c7fba1162f11a5a75d9d8405264b467a07ae0c9c29be119b9297db9" 4157 | dependencies = [ 4158 | "serde", 4159 | "serde_json", 4160 | ] 4161 | 4162 | [[package]] 4163 | name = "same-file" 4164 | version = "1.0.6" 4165 | source = "registry+https://github.com/rust-lang/crates.io-index" 4166 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 4167 | dependencies = [ 4168 | "winapi-util", 4169 | ] 4170 | 4171 | [[package]] 4172 | name = "schannel" 4173 | version = "0.1.23" 4174 | source = "registry+https://github.com/rust-lang/crates.io-index" 4175 | checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" 4176 | dependencies = [ 4177 | "windows-sys 0.52.0", 4178 | ] 4179 | 4180 | [[package]] 4181 | name = "scheduled-thread-pool" 4182 | version = "0.2.7" 4183 | source = "registry+https://github.com/rust-lang/crates.io-index" 4184 | checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" 4185 | dependencies = [ 4186 | "parking_lot", 4187 | ] 4188 | 4189 | [[package]] 4190 | name = "scopeguard" 4191 | version = "1.2.0" 4192 | source = "registry+https://github.com/rust-lang/crates.io-index" 4193 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 4194 | 4195 | [[package]] 4196 | name = "sct" 4197 | version = "0.7.1" 4198 | source = "registry+https://github.com/rust-lang/crates.io-index" 4199 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 4200 | dependencies = [ 4201 | "ring 0.17.8", 4202 | "untrusted 0.9.0", 4203 | ] 4204 | 4205 | [[package]] 4206 | name = "security-framework" 4207 | version = "2.11.0" 4208 | source = "registry+https://github.com/rust-lang/crates.io-index" 4209 | checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" 4210 | dependencies = [ 4211 | "bitflags 2.6.0", 4212 | "core-foundation", 4213 | "core-foundation-sys", 4214 | "libc", 4215 | "security-framework-sys", 4216 | ] 4217 | 4218 | [[package]] 4219 | name = "security-framework-sys" 4220 | version = "2.11.0" 4221 | source = "registry+https://github.com/rust-lang/crates.io-index" 4222 | checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" 4223 | dependencies = [ 4224 | "core-foundation-sys", 4225 | "libc", 4226 | ] 4227 | 4228 | [[package]] 4229 | name = "semver" 4230 | version = "1.0.23" 4231 | source = "registry+https://github.com/rust-lang/crates.io-index" 4232 | checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" 4233 | dependencies = [ 4234 | "serde", 4235 | ] 4236 | 4237 | [[package]] 4238 | name = "seq-macro" 4239 | version = "0.3.5" 4240 | source = "registry+https://github.com/rust-lang/crates.io-index" 4241 | checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" 4242 | 4243 | [[package]] 4244 | name = "serde" 4245 | version = "1.0.203" 4246 | source = "registry+https://github.com/rust-lang/crates.io-index" 4247 | checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" 4248 | dependencies = [ 4249 | "serde_derive", 4250 | ] 4251 | 4252 | [[package]] 4253 | name = "serde_derive" 4254 | version = "1.0.203" 4255 | source = "registry+https://github.com/rust-lang/crates.io-index" 4256 | checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" 4257 | dependencies = [ 4258 | "proc-macro2", 4259 | "quote", 4260 | "syn 2.0.68", 4261 | ] 4262 | 4263 | [[package]] 4264 | name = "serde_json" 4265 | version = "1.0.118" 4266 | source = "registry+https://github.com/rust-lang/crates.io-index" 4267 | checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" 4268 | dependencies = [ 4269 | "itoa", 4270 | "ryu", 4271 | "serde", 4272 | ] 4273 | 4274 | [[package]] 4275 | name = "serde_plain" 4276 | version = "1.0.2" 4277 | source = "registry+https://github.com/rust-lang/crates.io-index" 4278 | checksum = "9ce1fc6db65a611022b23a0dec6975d63fb80a302cb3388835ff02c097258d50" 4279 | dependencies = [ 4280 | "serde", 4281 | ] 4282 | 4283 | [[package]] 4284 | name = "serde_urlencoded" 4285 | version = "0.7.1" 4286 | source = "registry+https://github.com/rust-lang/crates.io-index" 4287 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 4288 | dependencies = [ 4289 | "form_urlencoded", 4290 | "itoa", 4291 | "ryu", 4292 | "serde", 4293 | ] 4294 | 4295 | [[package]] 4296 | name = "serde_with" 4297 | version = "3.8.2" 4298 | source = "registry+https://github.com/rust-lang/crates.io-index" 4299 | checksum = "079f3a42cd87588d924ed95b533f8d30a483388c4e400ab736a7058e34f16169" 4300 | dependencies = [ 4301 | "base64 0.22.1", 4302 | "chrono", 4303 | "hex", 4304 | "indexmap 1.9.3", 4305 | "indexmap 2.2.6", 4306 | "serde", 4307 | "serde_derive", 4308 | "serde_json", 4309 | "serde_with_macros", 4310 | "time", 4311 | ] 4312 | 4313 | [[package]] 4314 | name = "serde_with_macros" 4315 | version = "3.8.2" 4316 | source = "registry+https://github.com/rust-lang/crates.io-index" 4317 | checksum = "bc03aad67c1d26b7de277d51c86892e7d9a0110a2fe44bf6b26cc569fba302d6" 4318 | dependencies = [ 4319 | "darling", 4320 | "proc-macro2", 4321 | "quote", 4322 | "syn 2.0.68", 4323 | ] 4324 | 4325 | [[package]] 4326 | name = "sha2" 4327 | version = "0.10.8" 4328 | source = "registry+https://github.com/rust-lang/crates.io-index" 4329 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 4330 | dependencies = [ 4331 | "cfg-if", 4332 | "cpufeatures", 4333 | "digest", 4334 | ] 4335 | 4336 | [[package]] 4337 | name = "sharded-slab" 4338 | version = "0.1.7" 4339 | source = "registry+https://github.com/rust-lang/crates.io-index" 4340 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 4341 | dependencies = [ 4342 | "lazy_static", 4343 | ] 4344 | 4345 | [[package]] 4346 | name = "shellexpand" 4347 | version = "3.1.0" 4348 | source = "registry+https://github.com/rust-lang/crates.io-index" 4349 | checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" 4350 | dependencies = [ 4351 | "dirs", 4352 | ] 4353 | 4354 | [[package]] 4355 | name = "signal-hook-registry" 4356 | version = "1.4.2" 4357 | source = "registry+https://github.com/rust-lang/crates.io-index" 4358 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 4359 | dependencies = [ 4360 | "libc", 4361 | ] 4362 | 4363 | [[package]] 4364 | name = "siphasher" 4365 | version = "0.3.11" 4366 | source = "registry+https://github.com/rust-lang/crates.io-index" 4367 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 4368 | 4369 | [[package]] 4370 | name = "skeptic" 4371 | version = "0.13.7" 4372 | source = "registry+https://github.com/rust-lang/crates.io-index" 4373 | checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" 4374 | dependencies = [ 4375 | "bytecount", 4376 | "cargo_metadata", 4377 | "error-chain", 4378 | "glob", 4379 | "pulldown-cmark", 4380 | "tempfile", 4381 | "walkdir", 4382 | ] 4383 | 4384 | [[package]] 4385 | name = "slab" 4386 | version = "0.4.9" 4387 | source = "registry+https://github.com/rust-lang/crates.io-index" 4388 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 4389 | dependencies = [ 4390 | "autocfg", 4391 | ] 4392 | 4393 | [[package]] 4394 | name = "smallvec" 4395 | version = "1.13.2" 4396 | source = "registry+https://github.com/rust-lang/crates.io-index" 4397 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 4398 | 4399 | [[package]] 4400 | name = "snafu" 4401 | version = "0.7.5" 4402 | source = "registry+https://github.com/rust-lang/crates.io-index" 4403 | checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" 4404 | dependencies = [ 4405 | "doc-comment", 4406 | "snafu-derive", 4407 | ] 4408 | 4409 | [[package]] 4410 | name = "snafu-derive" 4411 | version = "0.7.5" 4412 | source = "registry+https://github.com/rust-lang/crates.io-index" 4413 | checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" 4414 | dependencies = [ 4415 | "heck 0.4.1", 4416 | "proc-macro2", 4417 | "quote", 4418 | "syn 1.0.109", 4419 | ] 4420 | 4421 | [[package]] 4422 | name = "socket2" 4423 | version = "0.5.7" 4424 | source = "registry+https://github.com/rust-lang/crates.io-index" 4425 | checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" 4426 | dependencies = [ 4427 | "libc", 4428 | "windows-sys 0.52.0", 4429 | ] 4430 | 4431 | [[package]] 4432 | name = "spin" 4433 | version = "0.5.2" 4434 | source = "registry+https://github.com/rust-lang/crates.io-index" 4435 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 4436 | 4437 | [[package]] 4438 | name = "spin" 4439 | version = "0.9.8" 4440 | source = "registry+https://github.com/rust-lang/crates.io-index" 4441 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4442 | 4443 | [[package]] 4444 | name = "spm_precompiled" 4445 | version = "0.1.4" 4446 | source = "registry+https://github.com/rust-lang/crates.io-index" 4447 | checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326" 4448 | dependencies = [ 4449 | "base64 0.13.1", 4450 | "nom", 4451 | "serde", 4452 | "unicode-segmentation", 4453 | ] 4454 | 4455 | [[package]] 4456 | name = "sqlparser" 4457 | version = "0.44.0" 4458 | source = "registry+https://github.com/rust-lang/crates.io-index" 4459 | checksum = "aaf9c7ff146298ffda83a200f8d5084f08dcee1edfc135fcc1d646a45d50ffd6" 4460 | dependencies = [ 4461 | "log", 4462 | "sqlparser_derive", 4463 | ] 4464 | 4465 | [[package]] 4466 | name = "sqlparser_derive" 4467 | version = "0.2.2" 4468 | source = "registry+https://github.com/rust-lang/crates.io-index" 4469 | checksum = "01b2e185515564f15375f593fb966b5718bc624ba77fe49fa4616ad619690554" 4470 | dependencies = [ 4471 | "proc-macro2", 4472 | "quote", 4473 | "syn 2.0.68", 4474 | ] 4475 | 4476 | [[package]] 4477 | name = "stable_deref_trait" 4478 | version = "1.2.0" 4479 | source = "registry+https://github.com/rust-lang/crates.io-index" 4480 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 4481 | 4482 | [[package]] 4483 | name = "static_assertions" 4484 | version = "1.1.0" 4485 | source = "registry+https://github.com/rust-lang/crates.io-index" 4486 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 4487 | 4488 | [[package]] 4489 | name = "std_prelude" 4490 | version = "0.2.12" 4491 | source = "registry+https://github.com/rust-lang/crates.io-index" 4492 | checksum = "8207e78455ffdf55661170876f88daf85356e4edd54e0a3dbc79586ca1e50cbe" 4493 | 4494 | [[package]] 4495 | name = "stfu8" 4496 | version = "0.2.7" 4497 | source = "registry+https://github.com/rust-lang/crates.io-index" 4498 | checksum = "e51f1e89f093f99e7432c491c382b88a6860a5adbe6bf02574bf0a08efff1978" 4499 | 4500 | [[package]] 4501 | name = "strsim" 4502 | version = "0.11.1" 4503 | source = "registry+https://github.com/rust-lang/crates.io-index" 4504 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4505 | 4506 | [[package]] 4507 | name = "strum" 4508 | version = "0.26.3" 4509 | source = "registry+https://github.com/rust-lang/crates.io-index" 4510 | checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" 4511 | dependencies = [ 4512 | "strum_macros", 4513 | ] 4514 | 4515 | [[package]] 4516 | name = "strum_macros" 4517 | version = "0.26.4" 4518 | source = "registry+https://github.com/rust-lang/crates.io-index" 4519 | checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" 4520 | dependencies = [ 4521 | "heck 0.5.0", 4522 | "proc-macro2", 4523 | "quote", 4524 | "rustversion", 4525 | "syn 2.0.68", 4526 | ] 4527 | 4528 | [[package]] 4529 | name = "subtle" 4530 | version = "2.6.1" 4531 | source = "registry+https://github.com/rust-lang/crates.io-index" 4532 | checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 4533 | 4534 | [[package]] 4535 | name = "syn" 4536 | version = "1.0.109" 4537 | source = "registry+https://github.com/rust-lang/crates.io-index" 4538 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 4539 | dependencies = [ 4540 | "proc-macro2", 4541 | "quote", 4542 | "unicode-ident", 4543 | ] 4544 | 4545 | [[package]] 4546 | name = "syn" 4547 | version = "2.0.68" 4548 | source = "registry+https://github.com/rust-lang/crates.io-index" 4549 | checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" 4550 | dependencies = [ 4551 | "proc-macro2", 4552 | "quote", 4553 | "unicode-ident", 4554 | ] 4555 | 4556 | [[package]] 4557 | name = "sync_wrapper" 4558 | version = "0.1.2" 4559 | source = "registry+https://github.com/rust-lang/crates.io-index" 4560 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 4561 | 4562 | [[package]] 4563 | name = "synstructure" 4564 | version = "0.13.1" 4565 | source = "registry+https://github.com/rust-lang/crates.io-index" 4566 | checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 4567 | dependencies = [ 4568 | "proc-macro2", 4569 | "quote", 4570 | "syn 2.0.68", 4571 | ] 4572 | 4573 | [[package]] 4574 | name = "sysctl" 4575 | version = "0.5.5" 4576 | source = "registry+https://github.com/rust-lang/crates.io-index" 4577 | checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" 4578 | dependencies = [ 4579 | "bitflags 2.6.0", 4580 | "byteorder", 4581 | "enum-as-inner", 4582 | "libc", 4583 | "thiserror", 4584 | "walkdir", 4585 | ] 4586 | 4587 | [[package]] 4588 | name = "system-configuration" 4589 | version = "0.5.1" 4590 | source = "registry+https://github.com/rust-lang/crates.io-index" 4591 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 4592 | dependencies = [ 4593 | "bitflags 1.3.2", 4594 | "core-foundation", 4595 | "system-configuration-sys", 4596 | ] 4597 | 4598 | [[package]] 4599 | name = "system-configuration-sys" 4600 | version = "0.5.0" 4601 | source = "registry+https://github.com/rust-lang/crates.io-index" 4602 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 4603 | dependencies = [ 4604 | "core-foundation-sys", 4605 | "libc", 4606 | ] 4607 | 4608 | [[package]] 4609 | name = "tagptr" 4610 | version = "0.2.0" 4611 | source = "registry+https://github.com/rust-lang/crates.io-index" 4612 | checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 4613 | 4614 | [[package]] 4615 | name = "tap" 4616 | version = "1.0.1" 4617 | source = "registry+https://github.com/rust-lang/crates.io-index" 4618 | checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" 4619 | 4620 | [[package]] 4621 | name = "tempfile" 4622 | version = "3.10.1" 4623 | source = "registry+https://github.com/rust-lang/crates.io-index" 4624 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 4625 | dependencies = [ 4626 | "cfg-if", 4627 | "fastrand", 4628 | "rustix", 4629 | "windows-sys 0.52.0", 4630 | ] 4631 | 4632 | [[package]] 4633 | name = "thiserror" 4634 | version = "1.0.61" 4635 | source = "registry+https://github.com/rust-lang/crates.io-index" 4636 | checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" 4637 | dependencies = [ 4638 | "thiserror-impl", 4639 | ] 4640 | 4641 | [[package]] 4642 | name = "thiserror-impl" 4643 | version = "1.0.61" 4644 | source = "registry+https://github.com/rust-lang/crates.io-index" 4645 | checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" 4646 | dependencies = [ 4647 | "proc-macro2", 4648 | "quote", 4649 | "syn 2.0.68", 4650 | ] 4651 | 4652 | [[package]] 4653 | name = "thread_local" 4654 | version = "1.1.8" 4655 | source = "registry+https://github.com/rust-lang/crates.io-index" 4656 | checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 4657 | dependencies = [ 4658 | "cfg-if", 4659 | "once_cell", 4660 | ] 4661 | 4662 | [[package]] 4663 | name = "time" 4664 | version = "0.3.36" 4665 | source = "registry+https://github.com/rust-lang/crates.io-index" 4666 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 4667 | dependencies = [ 4668 | "deranged", 4669 | "itoa", 4670 | "num-conv", 4671 | "powerfmt", 4672 | "serde", 4673 | "time-core", 4674 | "time-macros", 4675 | ] 4676 | 4677 | [[package]] 4678 | name = "time-core" 4679 | version = "0.1.2" 4680 | source = "registry+https://github.com/rust-lang/crates.io-index" 4681 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 4682 | 4683 | [[package]] 4684 | name = "time-macros" 4685 | version = "0.2.18" 4686 | source = "registry+https://github.com/rust-lang/crates.io-index" 4687 | checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" 4688 | dependencies = [ 4689 | "num-conv", 4690 | "time-core", 4691 | ] 4692 | 4693 | [[package]] 4694 | name = "tiny-keccak" 4695 | version = "2.0.2" 4696 | source = "registry+https://github.com/rust-lang/crates.io-index" 4697 | checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 4698 | dependencies = [ 4699 | "crunchy", 4700 | ] 4701 | 4702 | [[package]] 4703 | name = "tinyvec" 4704 | version = "1.6.1" 4705 | source = "registry+https://github.com/rust-lang/crates.io-index" 4706 | checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" 4707 | dependencies = [ 4708 | "tinyvec_macros", 4709 | ] 4710 | 4711 | [[package]] 4712 | name = "tinyvec_macros" 4713 | version = "0.1.1" 4714 | source = "registry+https://github.com/rust-lang/crates.io-index" 4715 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 4716 | 4717 | [[package]] 4718 | name = "tokenizers" 4719 | version = "0.19.1" 4720 | source = "registry+https://github.com/rust-lang/crates.io-index" 4721 | checksum = "e500fad1dd3af3d626327e6a3fe5050e664a6eaa4708b8ca92f1794aaf73e6fd" 4722 | dependencies = [ 4723 | "aho-corasick", 4724 | "derive_builder", 4725 | "esaxx-rs", 4726 | "getrandom", 4727 | "indicatif", 4728 | "itertools 0.12.1", 4729 | "lazy_static", 4730 | "log", 4731 | "macro_rules_attribute", 4732 | "monostate", 4733 | "onig", 4734 | "paste", 4735 | "rand", 4736 | "rayon", 4737 | "rayon-cond", 4738 | "regex", 4739 | "regex-syntax 0.8.4", 4740 | "serde", 4741 | "serde_json", 4742 | "spm_precompiled", 4743 | "thiserror", 4744 | "unicode-normalization-alignments", 4745 | "unicode-segmentation", 4746 | "unicode_categories", 4747 | ] 4748 | 4749 | [[package]] 4750 | name = "tokio" 4751 | version = "1.38.0" 4752 | source = "registry+https://github.com/rust-lang/crates.io-index" 4753 | checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" 4754 | dependencies = [ 4755 | "backtrace", 4756 | "bytes", 4757 | "libc", 4758 | "mio", 4759 | "num_cpus", 4760 | "parking_lot", 4761 | "pin-project-lite", 4762 | "signal-hook-registry", 4763 | "socket2", 4764 | "tokio-macros", 4765 | "windows-sys 0.48.0", 4766 | ] 4767 | 4768 | [[package]] 4769 | name = "tokio-macros" 4770 | version = "2.3.0" 4771 | source = "registry+https://github.com/rust-lang/crates.io-index" 4772 | checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" 4773 | dependencies = [ 4774 | "proc-macro2", 4775 | "quote", 4776 | "syn 2.0.68", 4777 | ] 4778 | 4779 | [[package]] 4780 | name = "tokio-rustls" 4781 | version = "0.24.1" 4782 | source = "registry+https://github.com/rust-lang/crates.io-index" 4783 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 4784 | dependencies = [ 4785 | "rustls 0.21.12", 4786 | "tokio", 4787 | ] 4788 | 4789 | [[package]] 4790 | name = "tokio-stream" 4791 | version = "0.1.15" 4792 | source = "registry+https://github.com/rust-lang/crates.io-index" 4793 | checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" 4794 | dependencies = [ 4795 | "futures-core", 4796 | "pin-project-lite", 4797 | "tokio", 4798 | ] 4799 | 4800 | [[package]] 4801 | name = "tokio-util" 4802 | version = "0.7.11" 4803 | source = "registry+https://github.com/rust-lang/crates.io-index" 4804 | checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" 4805 | dependencies = [ 4806 | "bytes", 4807 | "futures-core", 4808 | "futures-sink", 4809 | "pin-project-lite", 4810 | "tokio", 4811 | ] 4812 | 4813 | [[package]] 4814 | name = "toml_datetime" 4815 | version = "0.6.6" 4816 | source = "registry+https://github.com/rust-lang/crates.io-index" 4817 | checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" 4818 | 4819 | [[package]] 4820 | name = "toml_edit" 4821 | version = "0.21.1" 4822 | source = "registry+https://github.com/rust-lang/crates.io-index" 4823 | checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" 4824 | dependencies = [ 4825 | "indexmap 2.2.6", 4826 | "toml_datetime", 4827 | "winnow", 4828 | ] 4829 | 4830 | [[package]] 4831 | name = "tower" 4832 | version = "0.4.13" 4833 | source = "registry+https://github.com/rust-lang/crates.io-index" 4834 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 4835 | dependencies = [ 4836 | "futures-core", 4837 | "futures-util", 4838 | "pin-project", 4839 | "pin-project-lite", 4840 | "tokio", 4841 | "tower-layer", 4842 | "tower-service", 4843 | "tracing", 4844 | ] 4845 | 4846 | [[package]] 4847 | name = "tower-layer" 4848 | version = "0.3.2" 4849 | source = "registry+https://github.com/rust-lang/crates.io-index" 4850 | checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 4851 | 4852 | [[package]] 4853 | name = "tower-service" 4854 | version = "0.3.2" 4855 | source = "registry+https://github.com/rust-lang/crates.io-index" 4856 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 4857 | 4858 | [[package]] 4859 | name = "tracing" 4860 | version = "0.1.40" 4861 | source = "registry+https://github.com/rust-lang/crates.io-index" 4862 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 4863 | dependencies = [ 4864 | "log", 4865 | "pin-project-lite", 4866 | "tracing-attributes", 4867 | "tracing-core", 4868 | ] 4869 | 4870 | [[package]] 4871 | name = "tracing-attributes" 4872 | version = "0.1.27" 4873 | source = "registry+https://github.com/rust-lang/crates.io-index" 4874 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 4875 | dependencies = [ 4876 | "proc-macro2", 4877 | "quote", 4878 | "syn 2.0.68", 4879 | ] 4880 | 4881 | [[package]] 4882 | name = "tracing-core" 4883 | version = "0.1.32" 4884 | source = "registry+https://github.com/rust-lang/crates.io-index" 4885 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 4886 | dependencies = [ 4887 | "once_cell", 4888 | "valuable", 4889 | ] 4890 | 4891 | [[package]] 4892 | name = "tracing-log" 4893 | version = "0.2.0" 4894 | source = "registry+https://github.com/rust-lang/crates.io-index" 4895 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 4896 | dependencies = [ 4897 | "log", 4898 | "once_cell", 4899 | "tracing-core", 4900 | ] 4901 | 4902 | [[package]] 4903 | name = "tracing-serde" 4904 | version = "0.1.3" 4905 | source = "registry+https://github.com/rust-lang/crates.io-index" 4906 | checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" 4907 | dependencies = [ 4908 | "serde", 4909 | "tracing-core", 4910 | ] 4911 | 4912 | [[package]] 4913 | name = "tracing-subscriber" 4914 | version = "0.3.18" 4915 | source = "registry+https://github.com/rust-lang/crates.io-index" 4916 | checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" 4917 | dependencies = [ 4918 | "matchers", 4919 | "nu-ansi-term", 4920 | "once_cell", 4921 | "regex", 4922 | "serde", 4923 | "serde_json", 4924 | "sharded-slab", 4925 | "smallvec", 4926 | "thread_local", 4927 | "tracing", 4928 | "tracing-core", 4929 | "tracing-log", 4930 | "tracing-serde", 4931 | ] 4932 | 4933 | [[package]] 4934 | name = "triomphe" 4935 | version = "0.1.13" 4936 | source = "registry+https://github.com/rust-lang/crates.io-index" 4937 | checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" 4938 | 4939 | [[package]] 4940 | name = "try-lock" 4941 | version = "0.2.5" 4942 | source = "registry+https://github.com/rust-lang/crates.io-index" 4943 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4944 | 4945 | [[package]] 4946 | name = "twox-hash" 4947 | version = "1.6.3" 4948 | source = "registry+https://github.com/rust-lang/crates.io-index" 4949 | checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" 4950 | dependencies = [ 4951 | "cfg-if", 4952 | "static_assertions", 4953 | ] 4954 | 4955 | [[package]] 4956 | name = "typenum" 4957 | version = "1.17.0" 4958 | source = "registry+https://github.com/rust-lang/crates.io-index" 4959 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 4960 | 4961 | [[package]] 4962 | name = "unicase" 4963 | version = "2.7.0" 4964 | source = "registry+https://github.com/rust-lang/crates.io-index" 4965 | checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" 4966 | dependencies = [ 4967 | "version_check", 4968 | ] 4969 | 4970 | [[package]] 4971 | name = "unicode-bidi" 4972 | version = "0.3.15" 4973 | source = "registry+https://github.com/rust-lang/crates.io-index" 4974 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 4975 | 4976 | [[package]] 4977 | name = "unicode-ident" 4978 | version = "1.0.12" 4979 | source = "registry+https://github.com/rust-lang/crates.io-index" 4980 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 4981 | 4982 | [[package]] 4983 | name = "unicode-normalization" 4984 | version = "0.1.23" 4985 | source = "registry+https://github.com/rust-lang/crates.io-index" 4986 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 4987 | dependencies = [ 4988 | "tinyvec", 4989 | ] 4990 | 4991 | [[package]] 4992 | name = "unicode-normalization-alignments" 4993 | version = "0.1.12" 4994 | source = "registry+https://github.com/rust-lang/crates.io-index" 4995 | checksum = "43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de" 4996 | dependencies = [ 4997 | "smallvec", 4998 | ] 4999 | 5000 | [[package]] 5001 | name = "unicode-segmentation" 5002 | version = "1.11.0" 5003 | source = "registry+https://github.com/rust-lang/crates.io-index" 5004 | checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" 5005 | 5006 | [[package]] 5007 | name = "unicode-width" 5008 | version = "0.1.13" 5009 | source = "registry+https://github.com/rust-lang/crates.io-index" 5010 | checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" 5011 | 5012 | [[package]] 5013 | name = "unicode_categories" 5014 | version = "0.1.1" 5015 | source = "registry+https://github.com/rust-lang/crates.io-index" 5016 | checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 5017 | 5018 | [[package]] 5019 | name = "untrusted" 5020 | version = "0.7.1" 5021 | source = "registry+https://github.com/rust-lang/crates.io-index" 5022 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 5023 | 5024 | [[package]] 5025 | name = "untrusted" 5026 | version = "0.9.0" 5027 | source = "registry+https://github.com/rust-lang/crates.io-index" 5028 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 5029 | 5030 | [[package]] 5031 | name = "ureq" 5032 | version = "2.9.7" 5033 | source = "registry+https://github.com/rust-lang/crates.io-index" 5034 | checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" 5035 | dependencies = [ 5036 | "base64 0.22.1", 5037 | "flate2", 5038 | "log", 5039 | "native-tls", 5040 | "once_cell", 5041 | "rustls 0.22.4", 5042 | "rustls-pki-types", 5043 | "rustls-webpki 0.102.4", 5044 | "serde", 5045 | "serde_json", 5046 | "url", 5047 | "webpki-roots", 5048 | ] 5049 | 5050 | [[package]] 5051 | name = "url" 5052 | version = "2.5.2" 5053 | source = "registry+https://github.com/rust-lang/crates.io-index" 5054 | checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" 5055 | dependencies = [ 5056 | "form_urlencoded", 5057 | "idna", 5058 | "percent-encoding", 5059 | ] 5060 | 5061 | [[package]] 5062 | name = "urlencoding" 5063 | version = "2.1.3" 5064 | source = "registry+https://github.com/rust-lang/crates.io-index" 5065 | checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 5066 | 5067 | [[package]] 5068 | name = "utf8parse" 5069 | version = "0.2.2" 5070 | source = "registry+https://github.com/rust-lang/crates.io-index" 5071 | checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 5072 | 5073 | [[package]] 5074 | name = "uuid" 5075 | version = "1.9.1" 5076 | source = "registry+https://github.com/rust-lang/crates.io-index" 5077 | checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" 5078 | dependencies = [ 5079 | "getrandom", 5080 | "serde", 5081 | ] 5082 | 5083 | [[package]] 5084 | name = "valuable" 5085 | version = "0.1.0" 5086 | source = "registry+https://github.com/rust-lang/crates.io-index" 5087 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 5088 | 5089 | [[package]] 5090 | name = "vcpkg" 5091 | version = "0.2.15" 5092 | source = "registry+https://github.com/rust-lang/crates.io-index" 5093 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 5094 | 5095 | [[package]] 5096 | name = "version_check" 5097 | version = "0.9.4" 5098 | source = "registry+https://github.com/rust-lang/crates.io-index" 5099 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 5100 | 5101 | [[package]] 5102 | name = "vsimd" 5103 | version = "0.8.0" 5104 | source = "registry+https://github.com/rust-lang/crates.io-index" 5105 | checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" 5106 | 5107 | [[package]] 5108 | name = "walkdir" 5109 | version = "2.5.0" 5110 | source = "registry+https://github.com/rust-lang/crates.io-index" 5111 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 5112 | dependencies = [ 5113 | "same-file", 5114 | "winapi-util", 5115 | ] 5116 | 5117 | [[package]] 5118 | name = "want" 5119 | version = "0.3.1" 5120 | source = "registry+https://github.com/rust-lang/crates.io-index" 5121 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 5122 | dependencies = [ 5123 | "try-lock", 5124 | ] 5125 | 5126 | [[package]] 5127 | name = "wasi" 5128 | version = "0.11.0+wasi-snapshot-preview1" 5129 | source = "registry+https://github.com/rust-lang/crates.io-index" 5130 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 5131 | 5132 | [[package]] 5133 | name = "wasm-bindgen" 5134 | version = "0.2.92" 5135 | source = "registry+https://github.com/rust-lang/crates.io-index" 5136 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 5137 | dependencies = [ 5138 | "cfg-if", 5139 | "wasm-bindgen-macro", 5140 | ] 5141 | 5142 | [[package]] 5143 | name = "wasm-bindgen-backend" 5144 | version = "0.2.92" 5145 | source = "registry+https://github.com/rust-lang/crates.io-index" 5146 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 5147 | dependencies = [ 5148 | "bumpalo", 5149 | "log", 5150 | "once_cell", 5151 | "proc-macro2", 5152 | "quote", 5153 | "syn 2.0.68", 5154 | "wasm-bindgen-shared", 5155 | ] 5156 | 5157 | [[package]] 5158 | name = "wasm-bindgen-futures" 5159 | version = "0.4.42" 5160 | source = "registry+https://github.com/rust-lang/crates.io-index" 5161 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 5162 | dependencies = [ 5163 | "cfg-if", 5164 | "js-sys", 5165 | "wasm-bindgen", 5166 | "web-sys", 5167 | ] 5168 | 5169 | [[package]] 5170 | name = "wasm-bindgen-macro" 5171 | version = "0.2.92" 5172 | source = "registry+https://github.com/rust-lang/crates.io-index" 5173 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 5174 | dependencies = [ 5175 | "quote", 5176 | "wasm-bindgen-macro-support", 5177 | ] 5178 | 5179 | [[package]] 5180 | name = "wasm-bindgen-macro-support" 5181 | version = "0.2.92" 5182 | source = "registry+https://github.com/rust-lang/crates.io-index" 5183 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 5184 | dependencies = [ 5185 | "proc-macro2", 5186 | "quote", 5187 | "syn 2.0.68", 5188 | "wasm-bindgen-backend", 5189 | "wasm-bindgen-shared", 5190 | ] 5191 | 5192 | [[package]] 5193 | name = "wasm-bindgen-shared" 5194 | version = "0.2.92" 5195 | source = "registry+https://github.com/rust-lang/crates.io-index" 5196 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 5197 | 5198 | [[package]] 5199 | name = "wasm-streams" 5200 | version = "0.4.0" 5201 | source = "registry+https://github.com/rust-lang/crates.io-index" 5202 | checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" 5203 | dependencies = [ 5204 | "futures-util", 5205 | "js-sys", 5206 | "wasm-bindgen", 5207 | "wasm-bindgen-futures", 5208 | "web-sys", 5209 | ] 5210 | 5211 | [[package]] 5212 | name = "web-sys" 5213 | version = "0.3.69" 5214 | source = "registry+https://github.com/rust-lang/crates.io-index" 5215 | checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" 5216 | dependencies = [ 5217 | "js-sys", 5218 | "wasm-bindgen", 5219 | ] 5220 | 5221 | [[package]] 5222 | name = "webpki-roots" 5223 | version = "0.26.3" 5224 | source = "registry+https://github.com/rust-lang/crates.io-index" 5225 | checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" 5226 | dependencies = [ 5227 | "rustls-pki-types", 5228 | ] 5229 | 5230 | [[package]] 5231 | name = "winapi" 5232 | version = "0.3.9" 5233 | source = "registry+https://github.com/rust-lang/crates.io-index" 5234 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 5235 | dependencies = [ 5236 | "winapi-i686-pc-windows-gnu", 5237 | "winapi-x86_64-pc-windows-gnu", 5238 | ] 5239 | 5240 | [[package]] 5241 | name = "winapi-i686-pc-windows-gnu" 5242 | version = "0.4.0" 5243 | source = "registry+https://github.com/rust-lang/crates.io-index" 5244 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 5245 | 5246 | [[package]] 5247 | name = "winapi-util" 5248 | version = "0.1.8" 5249 | source = "registry+https://github.com/rust-lang/crates.io-index" 5250 | checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" 5251 | dependencies = [ 5252 | "windows-sys 0.52.0", 5253 | ] 5254 | 5255 | [[package]] 5256 | name = "winapi-x86_64-pc-windows-gnu" 5257 | version = "0.4.0" 5258 | source = "registry+https://github.com/rust-lang/crates.io-index" 5259 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 5260 | 5261 | [[package]] 5262 | name = "windows-core" 5263 | version = "0.52.0" 5264 | source = "registry+https://github.com/rust-lang/crates.io-index" 5265 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 5266 | dependencies = [ 5267 | "windows-targets 0.52.5", 5268 | ] 5269 | 5270 | [[package]] 5271 | name = "windows-sys" 5272 | version = "0.48.0" 5273 | source = "registry+https://github.com/rust-lang/crates.io-index" 5274 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 5275 | dependencies = [ 5276 | "windows-targets 0.48.5", 5277 | ] 5278 | 5279 | [[package]] 5280 | name = "windows-sys" 5281 | version = "0.52.0" 5282 | source = "registry+https://github.com/rust-lang/crates.io-index" 5283 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 5284 | dependencies = [ 5285 | "windows-targets 0.52.5", 5286 | ] 5287 | 5288 | [[package]] 5289 | name = "windows-targets" 5290 | version = "0.48.5" 5291 | source = "registry+https://github.com/rust-lang/crates.io-index" 5292 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 5293 | dependencies = [ 5294 | "windows_aarch64_gnullvm 0.48.5", 5295 | "windows_aarch64_msvc 0.48.5", 5296 | "windows_i686_gnu 0.48.5", 5297 | "windows_i686_msvc 0.48.5", 5298 | "windows_x86_64_gnu 0.48.5", 5299 | "windows_x86_64_gnullvm 0.48.5", 5300 | "windows_x86_64_msvc 0.48.5", 5301 | ] 5302 | 5303 | [[package]] 5304 | name = "windows-targets" 5305 | version = "0.52.5" 5306 | source = "registry+https://github.com/rust-lang/crates.io-index" 5307 | checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 5308 | dependencies = [ 5309 | "windows_aarch64_gnullvm 0.52.5", 5310 | "windows_aarch64_msvc 0.52.5", 5311 | "windows_i686_gnu 0.52.5", 5312 | "windows_i686_gnullvm", 5313 | "windows_i686_msvc 0.52.5", 5314 | "windows_x86_64_gnu 0.52.5", 5315 | "windows_x86_64_gnullvm 0.52.5", 5316 | "windows_x86_64_msvc 0.52.5", 5317 | ] 5318 | 5319 | [[package]] 5320 | name = "windows_aarch64_gnullvm" 5321 | version = "0.48.5" 5322 | source = "registry+https://github.com/rust-lang/crates.io-index" 5323 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 5324 | 5325 | [[package]] 5326 | name = "windows_aarch64_gnullvm" 5327 | version = "0.52.5" 5328 | source = "registry+https://github.com/rust-lang/crates.io-index" 5329 | checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 5330 | 5331 | [[package]] 5332 | name = "windows_aarch64_msvc" 5333 | version = "0.48.5" 5334 | source = "registry+https://github.com/rust-lang/crates.io-index" 5335 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 5336 | 5337 | [[package]] 5338 | name = "windows_aarch64_msvc" 5339 | version = "0.52.5" 5340 | source = "registry+https://github.com/rust-lang/crates.io-index" 5341 | checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 5342 | 5343 | [[package]] 5344 | name = "windows_i686_gnu" 5345 | version = "0.48.5" 5346 | source = "registry+https://github.com/rust-lang/crates.io-index" 5347 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 5348 | 5349 | [[package]] 5350 | name = "windows_i686_gnu" 5351 | version = "0.52.5" 5352 | source = "registry+https://github.com/rust-lang/crates.io-index" 5353 | checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 5354 | 5355 | [[package]] 5356 | name = "windows_i686_gnullvm" 5357 | version = "0.52.5" 5358 | source = "registry+https://github.com/rust-lang/crates.io-index" 5359 | checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 5360 | 5361 | [[package]] 5362 | name = "windows_i686_msvc" 5363 | version = "0.48.5" 5364 | source = "registry+https://github.com/rust-lang/crates.io-index" 5365 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 5366 | 5367 | [[package]] 5368 | name = "windows_i686_msvc" 5369 | version = "0.52.5" 5370 | source = "registry+https://github.com/rust-lang/crates.io-index" 5371 | checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 5372 | 5373 | [[package]] 5374 | name = "windows_x86_64_gnu" 5375 | version = "0.48.5" 5376 | source = "registry+https://github.com/rust-lang/crates.io-index" 5377 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 5378 | 5379 | [[package]] 5380 | name = "windows_x86_64_gnu" 5381 | version = "0.52.5" 5382 | source = "registry+https://github.com/rust-lang/crates.io-index" 5383 | checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 5384 | 5385 | [[package]] 5386 | name = "windows_x86_64_gnullvm" 5387 | version = "0.48.5" 5388 | source = "registry+https://github.com/rust-lang/crates.io-index" 5389 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 5390 | 5391 | [[package]] 5392 | name = "windows_x86_64_gnullvm" 5393 | version = "0.52.5" 5394 | source = "registry+https://github.com/rust-lang/crates.io-index" 5395 | checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 5396 | 5397 | [[package]] 5398 | name = "windows_x86_64_msvc" 5399 | version = "0.48.5" 5400 | source = "registry+https://github.com/rust-lang/crates.io-index" 5401 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 5402 | 5403 | [[package]] 5404 | name = "windows_x86_64_msvc" 5405 | version = "0.52.5" 5406 | source = "registry+https://github.com/rust-lang/crates.io-index" 5407 | checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 5408 | 5409 | [[package]] 5410 | name = "winnow" 5411 | version = "0.5.40" 5412 | source = "registry+https://github.com/rust-lang/crates.io-index" 5413 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 5414 | dependencies = [ 5415 | "memchr", 5416 | ] 5417 | 5418 | [[package]] 5419 | name = "winreg" 5420 | version = "0.50.0" 5421 | source = "registry+https://github.com/rust-lang/crates.io-index" 5422 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 5423 | dependencies = [ 5424 | "cfg-if", 5425 | "windows-sys 0.48.0", 5426 | ] 5427 | 5428 | [[package]] 5429 | name = "wyz" 5430 | version = "0.5.1" 5431 | source = "registry+https://github.com/rust-lang/crates.io-index" 5432 | checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" 5433 | dependencies = [ 5434 | "tap", 5435 | ] 5436 | 5437 | [[package]] 5438 | name = "xmlparser" 5439 | version = "0.13.6" 5440 | source = "registry+https://github.com/rust-lang/crates.io-index" 5441 | checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" 5442 | 5443 | [[package]] 5444 | name = "yoke" 5445 | version = "0.7.4" 5446 | source = "registry+https://github.com/rust-lang/crates.io-index" 5447 | checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" 5448 | dependencies = [ 5449 | "serde", 5450 | "stable_deref_trait", 5451 | "yoke-derive", 5452 | "zerofrom", 5453 | ] 5454 | 5455 | [[package]] 5456 | name = "yoke-derive" 5457 | version = "0.7.4" 5458 | source = "registry+https://github.com/rust-lang/crates.io-index" 5459 | checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" 5460 | dependencies = [ 5461 | "proc-macro2", 5462 | "quote", 5463 | "syn 2.0.68", 5464 | "synstructure", 5465 | ] 5466 | 5467 | [[package]] 5468 | name = "zerocopy" 5469 | version = "0.7.34" 5470 | source = "registry+https://github.com/rust-lang/crates.io-index" 5471 | checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" 5472 | dependencies = [ 5473 | "zerocopy-derive", 5474 | ] 5475 | 5476 | [[package]] 5477 | name = "zerocopy-derive" 5478 | version = "0.7.34" 5479 | source = "registry+https://github.com/rust-lang/crates.io-index" 5480 | checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" 5481 | dependencies = [ 5482 | "proc-macro2", 5483 | "quote", 5484 | "syn 2.0.68", 5485 | ] 5486 | 5487 | [[package]] 5488 | name = "zerofrom" 5489 | version = "0.1.4" 5490 | source = "registry+https://github.com/rust-lang/crates.io-index" 5491 | checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" 5492 | dependencies = [ 5493 | "zerofrom-derive", 5494 | ] 5495 | 5496 | [[package]] 5497 | name = "zerofrom-derive" 5498 | version = "0.1.4" 5499 | source = "registry+https://github.com/rust-lang/crates.io-index" 5500 | checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" 5501 | dependencies = [ 5502 | "proc-macro2", 5503 | "quote", 5504 | "syn 2.0.68", 5505 | "synstructure", 5506 | ] 5507 | 5508 | [[package]] 5509 | name = "zeroize" 5510 | version = "1.8.1" 5511 | source = "registry+https://github.com/rust-lang/crates.io-index" 5512 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 5513 | 5514 | [[package]] 5515 | name = "zip" 5516 | version = "1.1.4" 5517 | source = "registry+https://github.com/rust-lang/crates.io-index" 5518 | checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164" 5519 | dependencies = [ 5520 | "arbitrary", 5521 | "crc32fast", 5522 | "crossbeam-utils", 5523 | "displaydoc", 5524 | "indexmap 2.2.6", 5525 | "num_enum", 5526 | "thiserror", 5527 | ] 5528 | 5529 | [[package]] 5530 | name = "zstd" 5531 | version = "0.13.1" 5532 | source = "registry+https://github.com/rust-lang/crates.io-index" 5533 | checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" 5534 | dependencies = [ 5535 | "zstd-safe", 5536 | ] 5537 | 5538 | [[package]] 5539 | name = "zstd-safe" 5540 | version = "7.1.0" 5541 | source = "registry+https://github.com/rust-lang/crates.io-index" 5542 | checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" 5543 | dependencies = [ 5544 | "zstd-sys", 5545 | ] 5546 | 5547 | [[package]] 5548 | name = "zstd-sys" 5549 | version = "2.0.11+zstd.1.5.6" 5550 | source = "registry+https://github.com/rust-lang/crates.io-index" 5551 | checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" 5552 | dependencies = [ 5553 | "cc", 5554 | "pkg-config", 5555 | ] 5556 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "doc-embedder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | tracing = "0.1.40" 8 | tracing-subscriber = { version = "0.3.18", features = [ 9 | "env-filter", 10 | "fmt", 11 | "std", 12 | "json", 13 | ] } 14 | candle = { version = "0.5.1", package = "candle-core" } 15 | candle-transformers = "0.5.1" 16 | candle-nn = "0.5.1" 17 | anyhow = "1.0.86" 18 | clap = { version = "4.5.7", features = [ 19 | "derive", 20 | ] } 21 | tokenizers = "0.19.1" 22 | hf-hub = "0.3.2" 23 | serde_json = "1.0.118" 24 | rayon = "1.10.0" 25 | tokio = { version = "1.38.0", features = [ 26 | "full", 27 | ] } 28 | lancedb = "0.6.0" 29 | arrow-array = "51.0.0" 30 | arrow-schema = "51.0.0" 31 | futures = "0.3.30" 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RAG Indexing Pipeline in Rust 2 | 3 | This repository contains the source code for my [post](https://medium.com/towards-data-science/scale-up-your-rag-a-rust-powered-indexing-pipeline-with-lancedb-and-candle-cc681c6162e8): *Scale Up Your RAG: A Rust-Powered Indexing Pipeline with LanceDB and Candle* that was published in **Towards Data Science**. The post explains how to build a high-performance Retrieval-Augmented Generation (RAG) indexing pipeline implemented in Rust. 4 | It also demonstrates how to efficiently read, chunk, embed, and store textual documents as vectors using HuggingFace's Candle framework and LanceDB. 5 | 6 | ## Features 7 | 8 | - Fast document processing and chunking 9 | - Efficient text embedding using Candle 10 | - Vector storage with LanceDB 11 | - Scalable design for handling large volumes of data 12 | - Standalone application deployable in various environments 13 | 14 | ## Prerequisites 15 | 16 | - Rust (latest stable version) 17 | - Cargo (Rust's package manager) 18 | 19 | ## Usage 20 | 21 | Clone this repository: 22 | ``` 23 | git clone https://github.com/your-username/rag-indexing-pipeline-rust.git 24 | cd rag-indexing-pipeline-rust 25 | ``` 26 | To run the app on test data, use the following command: 27 | ``` 28 | cargo run --release -- --input-directory embedding_files_test --db-uri data/vecdb1 29 | ``` 30 | -------------------------------------------------------------------------------- /embedding_files_test/embedding_content_99996.txt: -------------------------------------------------------------------------------- 1 | --- PETS --- 2 | Dogs often bark to express their feelings. 3 | Guinea pigs make a series of interesting vocalizations. 4 | Cats love scratching posts that mimic trees. 5 | Snakes can be intriguing, though somewhat unconventional pets. 6 | Parrots can mimic human speech quite accurately. 7 | Cats love scratching posts that mimic trees. 8 | Ferrets are playful animals that enjoy interacting with humans. 9 | Ferrets are playful animals that enjoy interacting with humans. 10 | Dogs often bark to express their feelings. 11 | Guinea pigs make a series of interesting vocalizations. 12 | Turtles can live for many decades with proper care. 13 | Rabbits thrive on a diet rich in hay. 14 | Ferrets are playful animals that enjoy interacting with humans. 15 | Parrots can mimic human speech quite accurately. 16 | Snakes can be intriguing, though somewhat unconventional pets. 17 | Horses require a large amount of outdoor space. 18 | Rabbits thrive on a diet rich in hay. 19 | Dogs often bark to express their feelings. 20 | Cats love scratching posts that mimic trees. 21 | Rabbits thrive on a diet rich in hay. 22 | Rabbits thrive on a diet rich in hay. 23 | Rabbits thrive on a diet rich in hay. 24 | Cats love scratching posts that mimic trees. 25 | Dogs often bark to express their feelings. 26 | Rabbits thrive on a diet rich in hay. 27 | Fish are popular pets for small apartments. 28 | Fish are popular pets for small apartments. 29 | Cats love scratching posts that mimic trees. 30 | Guinea pigs make a series of interesting vocalizations. 31 | Ferrets are playful animals that enjoy interacting with humans. 32 | Parrots can mimic human speech quite accurately. 33 | Snakes can be intriguing, though somewhat unconventional pets. 34 | Cats love scratching posts that mimic trees. 35 | Fish are popular pets for small apartments. 36 | Turtles can live for many decades with proper care. 37 | Rabbits thrive on a diet rich in hay. 38 | Guinea pigs make a series of interesting vocalizations. 39 | Snakes can be intriguing, though somewhat unconventional pets. 40 | Turtles can live for many decades with proper care. 41 | Parrots can mimic human speech quite accurately. 42 | Snakes can be intriguing, though somewhat unconventional pets. 43 | Rabbits thrive on a diet rich in hay. 44 | Ferrets are playful animals that enjoy interacting with humans. 45 | Rabbits thrive on a diet rich in hay. 46 | Horses require a large amount of outdoor space. 47 | Horses require a large amount of outdoor space. 48 | Horses require a large amount of outdoor space. 49 | Dogs often bark to express their feelings. 50 | Dogs often bark to express their feelings. 51 | Guinea pigs make a series of interesting vocalizations. 52 | Parrots can mimic human speech quite accurately. 53 | Dogs often bark to express their feelings. 54 | Turtles can live for many decades with proper care. 55 | Ferrets are playful animals that enjoy interacting with humans. 56 | Ferrets are playful animals that enjoy interacting with humans. 57 | Parrots can mimic human speech quite accurately. 58 | Rabbits thrive on a diet rich in hay. 59 | Ferrets are playful animals that enjoy interacting with humans. 60 | Turtles can live for many decades with proper care. 61 | Cats love scratching posts that mimic trees. 62 | Horses require a large amount of outdoor space. 63 | Snakes can be intriguing, though somewhat unconventional pets. 64 | Cats love scratching posts that mimic trees. 65 | Fish are popular pets for small apartments. 66 | Dogs often bark to express their feelings. 67 | Horses require a large amount of outdoor space. 68 | Parrots can mimic human speech quite accurately. 69 | Guinea pigs make a series of interesting vocalizations. 70 | Dogs often bark to express their feelings. 71 | Dogs often bark to express their feelings. 72 | Parrots can mimic human speech quite accurately. 73 | Guinea pigs make a series of interesting vocalizations. 74 | Cats love scratching posts that mimic trees. 75 | Ferrets are playful animals that enjoy interacting with humans. 76 | Dogs often bark to express their feelings. 77 | Fish are popular pets for small apartments. 78 | Dogs often bark to express their feelings. 79 | Fish are popular pets for small apartments. 80 | Parrots can mimic human speech quite accurately. 81 | Parrots can mimic human speech quite accurately. 82 | Dogs often bark to express their feelings. 83 | Guinea pigs make a series of interesting vocalizations. 84 | Dogs often bark to express their feelings. 85 | Parrots can mimic human speech quite accurately. 86 | Cats love scratching posts that mimic trees. 87 | Snakes can be intriguing, though somewhat unconventional pets. 88 | Dogs often bark to express their feelings. 89 | Turtles can live for many decades with proper care. 90 | Parrots can mimic human speech quite accurately. 91 | Guinea pigs make a series of interesting vocalizations. 92 | Fish are popular pets for small apartments. 93 | Fish are popular pets for small apartments. 94 | Parrots can mimic human speech quite accurately. 95 | Horses require a large amount of outdoor space. 96 | Fish are popular pets for small apartments. 97 | Parrots can mimic human speech quite accurately. 98 | Parrots can mimic human speech quite accurately. 99 | Fish are popular pets for small apartments. 100 | Guinea pigs make a series of interesting vocalizations. 101 | Snakes can be intriguing, though somewhat unconventional pets. 102 | Fish are popular pets for small apartments. 103 | Rabbits thrive on a diet rich in hay. 104 | Guinea pigs make a series of interesting vocalizations. 105 | Cats love scratching posts that mimic trees. 106 | Fish are popular pets for small apartments. 107 | Dogs often bark to express their feelings. 108 | Parrots can mimic human speech quite accurately. 109 | Cats love scratching posts that mimic trees. 110 | Dogs often bark to express their feelings. 111 | Parrots can mimic human speech quite accurately. 112 | Ferrets are playful animals that enjoy interacting with humans. 113 | Ferrets are playful animals that enjoy interacting with humans. 114 | Horses require a large amount of outdoor space. 115 | Rabbits thrive on a diet rich in hay. 116 | Dogs often bark to express their feelings. 117 | Snakes can be intriguing, though somewhat unconventional pets. 118 | Ferrets are playful animals that enjoy interacting with humans. 119 | Cats love scratching posts that mimic trees. 120 | Dogs often bark to express their feelings. 121 | Parrots can mimic human speech quite accurately. 122 | Turtles can live for many decades with proper care. 123 | Rabbits thrive on a diet rich in hay. 124 | Dogs often bark to express their feelings. 125 | Horses require a large amount of outdoor space. 126 | Cats love scratching posts that mimic trees. 127 | Dogs often bark to express their feelings. 128 | Turtles can live for many decades with proper care. 129 | Snakes can be intriguing, though somewhat unconventional pets. 130 | Turtles can live for many decades with proper care. 131 | Guinea pigs make a series of interesting vocalizations. 132 | Horses require a large amount of outdoor space. 133 | Parrots can mimic human speech quite accurately. 134 | Dogs often bark to express their feelings. 135 | Ferrets are playful animals that enjoy interacting with humans. 136 | Guinea pigs make a series of interesting vocalizations. 137 | Horses require a large amount of outdoor space. 138 | Horses require a large amount of outdoor space. 139 | Snakes can be intriguing, though somewhat unconventional pets. 140 | Cats love scratching posts that mimic trees. 141 | Horses require a large amount of outdoor space. 142 | Turtles can live for many decades with proper care. 143 | Snakes can be intriguing, though somewhat unconventional pets. 144 | Dogs often bark to express their feelings. 145 | Dogs often bark to express their feelings. 146 | Snakes can be intriguing, though somewhat unconventional pets. 147 | Fish are popular pets for small apartments. 148 | Dogs often bark to express their feelings. 149 | Guinea pigs make a series of interesting vocalizations. 150 | Parrots can mimic human speech quite accurately. 151 | Horses require a large amount of outdoor space. 152 | Horses require a large amount of outdoor space. 153 | Horses require a large amount of outdoor space. 154 | Parrots can mimic human speech quite accurately. 155 | Dogs often bark to express their feelings. 156 | Rabbits thrive on a diet rich in hay. 157 | Rabbits thrive on a diet rich in hay. 158 | Dogs often bark to express their feelings. 159 | Rabbits thrive on a diet rich in hay. 160 | Snakes can be intriguing, though somewhat unconventional pets. 161 | Dogs often bark to express their feelings. 162 | Cats love scratching posts that mimic trees. 163 | Turtles can live for many decades with proper care. 164 | Cats love scratching posts that mimic trees. 165 | Cats love scratching posts that mimic trees. 166 | Dogs often bark to express their feelings. 167 | Parrots can mimic human speech quite accurately. 168 | Guinea pigs make a series of interesting vocalizations. 169 | Cats love scratching posts that mimic trees. 170 | Turtles can live for many decades with proper care. 171 | Rabbits thrive on a diet rich in hay. 172 | Turtles can live for many decades with proper care. 173 | Cats love scratching posts that mimic trees. 174 | Parrots can mimic human speech quite accurately. 175 | Ferrets are playful animals that enjoy interacting with humans. 176 | Fish are popular pets for small apartments. 177 | Ferrets are playful animals that enjoy interacting with humans. 178 | Cats love scratching posts that mimic trees. 179 | Guinea pigs make a series of interesting vocalizations. 180 | Ferrets are playful animals that enjoy interacting with humans. 181 | Dogs often bark to express their feelings. 182 | Guinea pigs make a series of interesting vocalizations. 183 | Ferrets are playful animals that enjoy interacting with humans. 184 | Guinea pigs make a series of interesting vocalizations. 185 | Cats love scratching posts that mimic trees. 186 | Dogs often bark to express their feelings. 187 | Cats love scratching posts that mimic trees. 188 | Cats love scratching posts that mimic trees. 189 | Snakes can be intriguing, though somewhat unconventional pets. 190 | Parrots can mimic human speech quite accurately. 191 | Snakes can be intriguing, though somewhat unconventional pets. 192 | Dogs often bark to express their feelings. 193 | Turtles can live for many decades with proper care. 194 | Ferrets are playful animals that enjoy interacting with humans. 195 | Ferrets are playful animals that enjoy interacting with humans. 196 | Dogs often bark to express their feelings. 197 | Dogs often bark to express their feelings. 198 | Horses require a large amount of outdoor space. 199 | Ferrets are playful animals that enjoy interacting with humans. 200 | Dogs often bark to express their feelings. 201 | Guinea pigs make a series of interesting vocalizations. 202 | 203 | -------------------------------------------------------------------------------- /embedding_files_test/embedding_content_99998.txt: -------------------------------------------------------------------------------- 1 | --- COOKING --- 2 | Slow cooking allows flavors to develop fully. 3 | Fermentation is an ancient technique still used today. 4 | Pastry chefs require a precise approach to baking. 5 | Homemade pasta has a texture that’s hard to beat. 6 | Meal prepping can save time during busy weeks. 7 | Sushi rolling is an art form in Japanese cuisine. 8 | Fermentation is an ancient technique still used today. 9 | Vegetarian dishes are becoming increasingly popular. 10 | Meal prepping can save time during busy weeks. 11 | Slow cooking allows flavors to develop fully. 12 | Caramelization adds depth of flavor to vegetables. 13 | Meal prepping can save time during busy weeks. 14 | Mastering the grill takes practice and patience. 15 | Caramelization adds depth of flavor to vegetables. 16 | Slow cooking allows flavors to develop fully. 17 | Sushi rolling is an art form in Japanese cuisine. 18 | Pastry chefs require a precise approach to baking. 19 | Mastering the grill takes practice and patience. 20 | Vegetarian dishes are becoming increasingly popular. 21 | Slow cooking allows flavors to develop fully. 22 | Meal prepping can save time during busy weeks. 23 | Vegetarian dishes are becoming increasingly popular. 24 | Mastering the grill takes practice and patience. 25 | Vegetarian dishes are becoming increasingly popular. 26 | Meal prepping can save time during busy weeks. 27 | Food plating requires a sense of aesthetics. 28 | Vegetarian dishes are becoming increasingly popular. 29 | Sushi rolling is an art form in Japanese cuisine. 30 | Slow cooking allows flavors to develop fully. 31 | Caramelization adds depth of flavor to vegetables. 32 | Slow cooking allows flavors to develop fully. 33 | Mastering the grill takes practice and patience. 34 | Caramelization adds depth of flavor to vegetables. 35 | Slow cooking allows flavors to develop fully. 36 | Homemade pasta has a texture that’s hard to beat. 37 | Pastry chefs require a precise approach to baking. 38 | Homemade pasta has a texture that’s hard to beat. 39 | Food plating requires a sense of aesthetics. 40 | Slow cooking allows flavors to develop fully. 41 | Food plating requires a sense of aesthetics. 42 | Pastry chefs require a precise approach to baking. 43 | Caramelization adds depth of flavor to vegetables. 44 | Meal prepping can save time during busy weeks. 45 | Vegetarian dishes are becoming increasingly popular. 46 | Vegetarian dishes are becoming increasingly popular. 47 | Sushi rolling is an art form in Japanese cuisine. 48 | Pastry chefs require a precise approach to baking. 49 | Homemade pasta has a texture that’s hard to beat. 50 | Mastering the grill takes practice and patience. 51 | Vegetarian dishes are becoming increasingly popular. 52 | Meal prepping can save time during busy weeks. 53 | Fermentation is an ancient technique still used today. 54 | Food plating requires a sense of aesthetics. 55 | Food plating requires a sense of aesthetics. 56 | Pastry chefs require a precise approach to baking. 57 | Fermentation is an ancient technique still used today. 58 | Slow cooking allows flavors to develop fully. 59 | Pastry chefs require a precise approach to baking. 60 | Mastering the grill takes practice and patience. 61 | Mastering the grill takes practice and patience. 62 | Caramelization adds depth of flavor to vegetables. 63 | Homemade pasta has a texture that’s hard to beat. 64 | Mastering the grill takes practice and patience. 65 | Homemade pasta has a texture that’s hard to beat. 66 | Food plating requires a sense of aesthetics. 67 | Fermentation is an ancient technique still used today. 68 | Pastry chefs require a precise approach to baking. 69 | Mastering the grill takes practice and patience. 70 | Vegetarian dishes are becoming increasingly popular. 71 | Food plating requires a sense of aesthetics. 72 | Meal prepping can save time during busy weeks. 73 | Caramelization adds depth of flavor to vegetables. 74 | Sushi rolling is an art form in Japanese cuisine. 75 | Pastry chefs require a precise approach to baking. 76 | Vegetarian dishes are becoming increasingly popular. 77 | Pastry chefs require a precise approach to baking. 78 | Meal prepping can save time during busy weeks. 79 | Mastering the grill takes practice and patience. 80 | Vegetarian dishes are becoming increasingly popular. 81 | Slow cooking allows flavors to develop fully. 82 | Meal prepping can save time during busy weeks. 83 | Slow cooking allows flavors to develop fully. 84 | Vegetarian dishes are becoming increasingly popular. 85 | Food plating requires a sense of aesthetics. 86 | Vegetarian dishes are becoming increasingly popular. 87 | Sushi rolling is an art form in Japanese cuisine. 88 | Food plating requires a sense of aesthetics. 89 | Vegetarian dishes are becoming increasingly popular. 90 | Mastering the grill takes practice and patience. 91 | Homemade pasta has a texture that’s hard to beat. 92 | Sushi rolling is an art form in Japanese cuisine. 93 | Vegetarian dishes are becoming increasingly popular. 94 | Vegetarian dishes are becoming increasingly popular. 95 | Mastering the grill takes practice and patience. 96 | Sushi rolling is an art form in Japanese cuisine. 97 | Fermentation is an ancient technique still used today. 98 | Mastering the grill takes practice and patience. 99 | Homemade pasta has a texture that’s hard to beat. 100 | Caramelization adds depth of flavor to vegetables. 101 | Sushi rolling is an art form in Japanese cuisine. 102 | Fermentation is an ancient technique still used today. 103 | Caramelization adds depth of flavor to vegetables. 104 | Mastering the grill takes practice and patience. 105 | Vegetarian dishes are becoming increasingly popular. 106 | Vegetarian dishes are becoming increasingly popular. 107 | Fermentation is an ancient technique still used today. 108 | Caramelization adds depth of flavor to vegetables. 109 | Fermentation is an ancient technique still used today. 110 | Mastering the grill takes practice and patience. 111 | Sushi rolling is an art form in Japanese cuisine. 112 | Caramelization adds depth of flavor to vegetables. 113 | Vegetarian dishes are becoming increasingly popular. 114 | Homemade pasta has a texture that’s hard to beat. 115 | Vegetarian dishes are becoming increasingly popular. 116 | Sushi rolling is an art form in Japanese cuisine. 117 | Meal prepping can save time during busy weeks. 118 | Homemade pasta has a texture that’s hard to beat. 119 | Pastry chefs require a precise approach to baking. 120 | Caramelization adds depth of flavor to vegetables. 121 | Mastering the grill takes practice and patience. 122 | Caramelization adds depth of flavor to vegetables. 123 | Food plating requires a sense of aesthetics. 124 | Meal prepping can save time during busy weeks. 125 | Meal prepping can save time during busy weeks. 126 | Fermentation is an ancient technique still used today. 127 | Fermentation is an ancient technique still used today. 128 | Caramelization adds depth of flavor to vegetables. 129 | Pastry chefs require a precise approach to baking. 130 | Pastry chefs require a precise approach to baking. 131 | Caramelization adds depth of flavor to vegetables. 132 | Caramelization adds depth of flavor to vegetables. 133 | Vegetarian dishes are becoming increasingly popular. 134 | Slow cooking allows flavors to develop fully. 135 | Caramelization adds depth of flavor to vegetables. 136 | Homemade pasta has a texture that’s hard to beat. 137 | Sushi rolling is an art form in Japanese cuisine. 138 | Mastering the grill takes practice and patience. 139 | Caramelization adds depth of flavor to vegetables. 140 | Food plating requires a sense of aesthetics. 141 | Slow cooking allows flavors to develop fully. 142 | Meal prepping can save time during busy weeks. 143 | Fermentation is an ancient technique still used today. 144 | Meal prepping can save time during busy weeks. 145 | Homemade pasta has a texture that’s hard to beat. 146 | Meal prepping can save time during busy weeks. 147 | Mastering the grill takes practice and patience. 148 | Caramelization adds depth of flavor to vegetables. 149 | Mastering the grill takes practice and patience. 150 | Fermentation is an ancient technique still used today. 151 | Homemade pasta has a texture that’s hard to beat. 152 | Mastering the grill takes practice and patience. 153 | Vegetarian dishes are becoming increasingly popular. 154 | Slow cooking allows flavors to develop fully. 155 | Sushi rolling is an art form in Japanese cuisine. 156 | Meal prepping can save time during busy weeks. 157 | Pastry chefs require a precise approach to baking. 158 | Homemade pasta has a texture that’s hard to beat. 159 | Fermentation is an ancient technique still used today. 160 | Mastering the grill takes practice and patience. 161 | Slow cooking allows flavors to develop fully. 162 | Pastry chefs require a precise approach to baking. 163 | Mastering the grill takes practice and patience. 164 | Caramelization adds depth of flavor to vegetables. 165 | Vegetarian dishes are becoming increasingly popular. 166 | Vegetarian dishes are becoming increasingly popular. 167 | Caramelization adds depth of flavor to vegetables. 168 | Sushi rolling is an art form in Japanese cuisine. 169 | Vegetarian dishes are becoming increasingly popular. 170 | Slow cooking allows flavors to develop fully. 171 | Food plating requires a sense of aesthetics. 172 | Slow cooking allows flavors to develop fully. 173 | Food plating requires a sense of aesthetics. 174 | Vegetarian dishes are becoming increasingly popular. 175 | Caramelization adds depth of flavor to vegetables. 176 | Slow cooking allows flavors to develop fully. 177 | Pastry chefs require a precise approach to baking. 178 | Meal prepping can save time during busy weeks. 179 | Mastering the grill takes practice and patience. 180 | Caramelization adds depth of flavor to vegetables. 181 | Mastering the grill takes practice and patience. 182 | Sushi rolling is an art form in Japanese cuisine. 183 | Food plating requires a sense of aesthetics. 184 | Slow cooking allows flavors to develop fully. 185 | Fermentation is an ancient technique still used today. 186 | Meal prepping can save time during busy weeks. 187 | Pastry chefs require a precise approach to baking. 188 | Caramelization adds depth of flavor to vegetables. 189 | Sushi rolling is an art form in Japanese cuisine. 190 | Meal prepping can save time during busy weeks. 191 | Mastering the grill takes practice and patience. 192 | Vegetarian dishes are becoming increasingly popular. 193 | Fermentation is an ancient technique still used today. 194 | Food plating requires a sense of aesthetics. 195 | Food plating requires a sense of aesthetics. 196 | Sushi rolling is an art form in Japanese cuisine. 197 | Vegetarian dishes are becoming increasingly popular. 198 | Homemade pasta has a texture that’s hard to beat. 199 | Slow cooking allows flavors to develop fully. 200 | Slow cooking allows flavors to develop fully. 201 | Mastering the grill takes practice and patience. 202 | 203 | -------------------------------------------------------------------------------- /embedding_files_test/embedding_content_99999.txt: -------------------------------------------------------------------------------- 1 | --- PETS --- 2 | Turtles can live for many decades with proper care. 3 | Turtles can live for many decades with proper care. 4 | Rabbits thrive on a diet rich in hay. 5 | Turtles can live for many decades with proper care. 6 | Ferrets are playful animals that enjoy interacting with humans. 7 | Cats love scratching posts that mimic trees. 8 | Rabbits thrive on a diet rich in hay. 9 | Parrots can mimic human speech quite accurately. 10 | Turtles can live for many decades with proper care. 11 | Rabbits thrive on a diet rich in hay. 12 | Fish are popular pets for small apartments. 13 | Parrots can mimic human speech quite accurately. 14 | Guinea pigs make a series of interesting vocalizations. 15 | Turtles can live for many decades with proper care. 16 | Cats love scratching posts that mimic trees. 17 | Ferrets are playful animals that enjoy interacting with humans. 18 | Turtles can live for many decades with proper care. 19 | Horses require a large amount of outdoor space. 20 | Parrots can mimic human speech quite accurately. 21 | Rabbits thrive on a diet rich in hay. 22 | Cats love scratching posts that mimic trees. 23 | Turtles can live for many decades with proper care. 24 | Snakes can be intriguing, though somewhat unconventional pets. 25 | Dogs often bark to express their feelings. 26 | Horses require a large amount of outdoor space. 27 | Cats love scratching posts that mimic trees. 28 | Parrots can mimic human speech quite accurately. 29 | Cats love scratching posts that mimic trees. 30 | Turtles can live for many decades with proper care. 31 | Cats love scratching posts that mimic trees. 32 | Rabbits thrive on a diet rich in hay. 33 | Guinea pigs make a series of interesting vocalizations. 34 | Turtles can live for many decades with proper care. 35 | Guinea pigs make a series of interesting vocalizations. 36 | Fish are popular pets for small apartments. 37 | Snakes can be intriguing, though somewhat unconventional pets. 38 | Parrots can mimic human speech quite accurately. 39 | Rabbits thrive on a diet rich in hay. 40 | Snakes can be intriguing, though somewhat unconventional pets. 41 | Snakes can be intriguing, though somewhat unconventional pets. 42 | Turtles can live for many decades with proper care. 43 | Cats love scratching posts that mimic trees. 44 | Snakes can be intriguing, though somewhat unconventional pets. 45 | Parrots can mimic human speech quite accurately. 46 | Ferrets are playful animals that enjoy interacting with humans. 47 | Snakes can be intriguing, though somewhat unconventional pets. 48 | Guinea pigs make a series of interesting vocalizations. 49 | Cats love scratching posts that mimic trees. 50 | Dogs often bark to express their feelings. 51 | Turtles can live for many decades with proper care. 52 | Dogs often bark to express their feelings. 53 | Parrots can mimic human speech quite accurately. 54 | Horses require a large amount of outdoor space. 55 | Guinea pigs make a series of interesting vocalizations. 56 | Cats love scratching posts that mimic trees. 57 | Cats love scratching posts that mimic trees. 58 | Turtles can live for many decades with proper care. 59 | Rabbits thrive on a diet rich in hay. 60 | Rabbits thrive on a diet rich in hay. 61 | Snakes can be intriguing, though somewhat unconventional pets. 62 | Rabbits thrive on a diet rich in hay. 63 | Turtles can live for many decades with proper care. 64 | Ferrets are playful animals that enjoy interacting with humans. 65 | Cats love scratching posts that mimic trees. 66 | Cats love scratching posts that mimic trees. 67 | Parrots can mimic human speech quite accurately. 68 | Dogs often bark to express their feelings. 69 | Dogs often bark to express their feelings. 70 | Cats love scratching posts that mimic trees. 71 | Horses require a large amount of outdoor space. 72 | Horses require a large amount of outdoor space. 73 | Rabbits thrive on a diet rich in hay. 74 | Ferrets are playful animals that enjoy interacting with humans. 75 | Cats love scratching posts that mimic trees. 76 | Snakes can be intriguing, though somewhat unconventional pets. 77 | Snakes can be intriguing, though somewhat unconventional pets. 78 | Cats love scratching posts that mimic trees. 79 | Cats love scratching posts that mimic trees. 80 | Fish are popular pets for small apartments. 81 | Snakes can be intriguing, though somewhat unconventional pets. 82 | Guinea pigs make a series of interesting vocalizations. 83 | Snakes can be intriguing, though somewhat unconventional pets. 84 | Horses require a large amount of outdoor space. 85 | Horses require a large amount of outdoor space. 86 | Ferrets are playful animals that enjoy interacting with humans. 87 | Dogs often bark to express their feelings. 88 | Snakes can be intriguing, though somewhat unconventional pets. 89 | Parrots can mimic human speech quite accurately. 90 | Dogs often bark to express their feelings. 91 | Fish are popular pets for small apartments. 92 | Rabbits thrive on a diet rich in hay. 93 | Cats love scratching posts that mimic trees. 94 | Guinea pigs make a series of interesting vocalizations. 95 | Guinea pigs make a series of interesting vocalizations. 96 | Horses require a large amount of outdoor space. 97 | Turtles can live for many decades with proper care. 98 | Ferrets are playful animals that enjoy interacting with humans. 99 | Dogs often bark to express their feelings. 100 | Fish are popular pets for small apartments. 101 | Fish are popular pets for small apartments. 102 | Cats love scratching posts that mimic trees. 103 | Horses require a large amount of outdoor space. 104 | Fish are popular pets for small apartments. 105 | Cats love scratching posts that mimic trees. 106 | Horses require a large amount of outdoor space. 107 | Snakes can be intriguing, though somewhat unconventional pets. 108 | Fish are popular pets for small apartments. 109 | Cats love scratching posts that mimic trees. 110 | Fish are popular pets for small apartments. 111 | Dogs often bark to express their feelings. 112 | Cats love scratching posts that mimic trees. 113 | Rabbits thrive on a diet rich in hay. 114 | Rabbits thrive on a diet rich in hay. 115 | Cats love scratching posts that mimic trees. 116 | Dogs often bark to express their feelings. 117 | Snakes can be intriguing, though somewhat unconventional pets. 118 | Guinea pigs make a series of interesting vocalizations. 119 | Parrots can mimic human speech quite accurately. 120 | Ferrets are playful animals that enjoy interacting with humans. 121 | Cats love scratching posts that mimic trees. 122 | Turtles can live for many decades with proper care. 123 | Horses require a large amount of outdoor space. 124 | Turtles can live for many decades with proper care. 125 | Guinea pigs make a series of interesting vocalizations. 126 | Guinea pigs make a series of interesting vocalizations. 127 | Parrots can mimic human speech quite accurately. 128 | Snakes can be intriguing, though somewhat unconventional pets. 129 | Cats love scratching posts that mimic trees. 130 | Cats love scratching posts that mimic trees. 131 | Turtles can live for many decades with proper care. 132 | Turtles can live for many decades with proper care. 133 | Cats love scratching posts that mimic trees. 134 | Turtles can live for many decades with proper care. 135 | Cats love scratching posts that mimic trees. 136 | Ferrets are playful animals that enjoy interacting with humans. 137 | Rabbits thrive on a diet rich in hay. 138 | Snakes can be intriguing, though somewhat unconventional pets. 139 | Turtles can live for many decades with proper care. 140 | Snakes can be intriguing, though somewhat unconventional pets. 141 | Guinea pigs make a series of interesting vocalizations. 142 | Cats love scratching posts that mimic trees. 143 | Horses require a large amount of outdoor space. 144 | Snakes can be intriguing, though somewhat unconventional pets. 145 | Guinea pigs make a series of interesting vocalizations. 146 | Horses require a large amount of outdoor space. 147 | Snakes can be intriguing, though somewhat unconventional pets. 148 | Ferrets are playful animals that enjoy interacting with humans. 149 | Turtles can live for many decades with proper care. 150 | Dogs often bark to express their feelings. 151 | Snakes can be intriguing, though somewhat unconventional pets. 152 | Fish are popular pets for small apartments. 153 | Horses require a large amount of outdoor space. 154 | Cats love scratching posts that mimic trees. 155 | Parrots can mimic human speech quite accurately. 156 | Dogs often bark to express their feelings. 157 | Fish are popular pets for small apartments. 158 | Snakes can be intriguing, though somewhat unconventional pets. 159 | Cats love scratching posts that mimic trees. 160 | Guinea pigs make a series of interesting vocalizations. 161 | Fish are popular pets for small apartments. 162 | Guinea pigs make a series of interesting vocalizations. 163 | Parrots can mimic human speech quite accurately. 164 | Horses require a large amount of outdoor space. 165 | Snakes can be intriguing, though somewhat unconventional pets. 166 | Turtles can live for many decades with proper care. 167 | Guinea pigs make a series of interesting vocalizations. 168 | Ferrets are playful animals that enjoy interacting with humans. 169 | Ferrets are playful animals that enjoy interacting with humans. 170 | Snakes can be intriguing, though somewhat unconventional pets. 171 | Horses require a large amount of outdoor space. 172 | Rabbits thrive on a diet rich in hay. 173 | Horses require a large amount of outdoor space. 174 | Rabbits thrive on a diet rich in hay. 175 | Guinea pigs make a series of interesting vocalizations. 176 | Dogs often bark to express their feelings. 177 | Ferrets are playful animals that enjoy interacting with humans. 178 | Parrots can mimic human speech quite accurately. 179 | Dogs often bark to express their feelings. 180 | Parrots can mimic human speech quite accurately. 181 | Snakes can be intriguing, though somewhat unconventional pets. 182 | Fish are popular pets for small apartments. 183 | Fish are popular pets for small apartments. 184 | Fish are popular pets for small apartments. 185 | Snakes can be intriguing, though somewhat unconventional pets. 186 | Snakes can be intriguing, though somewhat unconventional pets. 187 | Guinea pigs make a series of interesting vocalizations. 188 | Rabbits thrive on a diet rich in hay. 189 | Horses require a large amount of outdoor space. 190 | Rabbits thrive on a diet rich in hay. 191 | Cats love scratching posts that mimic trees. 192 | Snakes can be intriguing, though somewhat unconventional pets. 193 | Ferrets are playful animals that enjoy interacting with humans. 194 | Fish are popular pets for small apartments. 195 | Rabbits thrive on a diet rich in hay. 196 | Turtles can live for many decades with proper care. 197 | Dogs often bark to express their feelings. 198 | Ferrets are playful animals that enjoy interacting with humans. 199 | Ferrets are playful animals that enjoy interacting with humans. 200 | Ferrets are playful animals that enjoy interacting with humans. 201 | Rabbits thrive on a diet rich in hay. 202 | 203 | -------------------------------------------------------------------------------- /generate_test_files.py: -------------------------------------------------------------------------------- 1 | import random 2 | import os 3 | 4 | def generate_sentences(theme, example_sentences, num_sentences): 5 | sentences = random.choices(example_sentences, k=num_sentences) # Randomly pick with replacement 6 | return sentences 7 | 8 | def write_to_file(filename, themes, num_sentences_per_theme): 9 | with open(filename, 'w', encoding='utf-8') as file: 10 | # choose a random theme and generate sentences for it 11 | theme = random.choice(list(themes.keys())) 12 | example_sentences = themes[theme] 13 | file.write(f"--- {theme.upper()} ---\n") 14 | sentences = generate_sentences(theme, example_sentences, num_sentences_per_theme) 15 | file.write('\n'.join(sentences) + '\n\n') 16 | 17 | def create_files(num_files, num_sentences_per_theme): 18 | themes = { 19 | 'pets': [ 20 | "Dogs often bark to express their feelings.", 21 | "Cats love scratching posts that mimic trees.", 22 | "Fish are popular pets for small apartments.", 23 | "Parrots can mimic human speech quite accurately.", 24 | "Horses require a large amount of outdoor space.", 25 | "Rabbits thrive on a diet rich in hay.", 26 | "Guinea pigs make a series of interesting vocalizations.", 27 | "Turtles can live for many decades with proper care.", 28 | "Snakes can be intriguing, though somewhat unconventional pets.", 29 | "Ferrets are playful animals that enjoy interacting with humans." 30 | # Add more actual sentences if needed 31 | ], 32 | 'technology': [ 33 | "Augmented reality offers interactive experiences.", 34 | "Blockchain could revolutionize digital transactions.", 35 | "3D printing enables rapid prototyping of designs.", 36 | "Renewable energy tech is crucial for sustainability.", 37 | "Big data analysis helps uncover hidden patterns.", 38 | "Drones provide a new perspective for photographers.", 39 | "Self-driving cars are changing the automotive industry.", 40 | "Smart homes integrate technology for convenience.", 41 | "Quantum computing promises unprecedented processing power.", 42 | "Machine learning algorithms improve over time." 43 | # Add more actual sentences if needed 44 | ], 45 | 'travel': [ 46 | "Budget travel requires careful planning and research.", 47 | "Cruise ships offer all-inclusive vacation experiences.", 48 | "Solo travel can be a rewarding challenge.", 49 | "Eco-tourism promotes sustainable travel practices.", 50 | "Historical sites attract visitors with an interest in the past.", 51 | "Local cuisine is a highlight of any trip.", 52 | "Travel bloggers often share tips and guides online.", 53 | "Language barriers can be overcome with technology.", 54 | "Packing light simplifies airport experiences.", 55 | "Off-season travel can offer significant savings." 56 | # Add more actual sentences if needed 57 | ], 58 | 'cooking': [ 59 | "Vegetarian dishes are becoming increasingly popular.", 60 | "Mastering the grill takes practice and patience.", 61 | "Pastry chefs require a precise approach to baking.", 62 | "Homemade pasta has a texture that’s hard to beat.", 63 | "Caramelization adds depth of flavor to vegetables.", 64 | "Meal prepping can save time during busy weeks.", 65 | "Sushi rolling is an art form in Japanese cuisine.", 66 | "Food plating requires a sense of aesthetics.", 67 | "Slow cooking allows flavors to develop fully.", 68 | "Fermentation is an ancient technique still used today." 69 | # Add more actual sentences if needed 70 | ] 71 | # Add more themes and sentences as needed 72 | } 73 | 74 | # Ensure the output directory exists 75 | output_directory = "embedding_files" 76 | os.makedirs(output_directory, exist_ok=True) 77 | 78 | # Generate and write to the specified number of files 79 | for i in range(num_files): 80 | filename = os.path.join(output_directory, f"embedding_content_{i+1}.txt") 81 | write_to_file(filename, themes, num_sentences_per_theme) 82 | print(f"Content generated and written to {filename}") 83 | 84 | # Configurations 85 | num_files_to_create = 100000 # 100,000 files 86 | num_sentences_per_theme = 200 # 10 sentences per theme 87 | 88 | # Call the function to create files 89 | create_files(num_files_to_create, num_sentences_per_theme) -------------------------------------------------------------------------------- /query_embedding.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "%pip install lancedb\n", 10 | "%pip install pandas\n", 11 | "%pip install pyarrow" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": null, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import lancedb\n", 21 | "import pandas as pd\n", 22 | "import pyarrow as pa\n", 23 | "\n", 24 | "uri = \"data/vecdb1\"\n", 25 | "db = lancedb.connect(uri)" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": null, 31 | "metadata": {}, 32 | "outputs": [], 33 | "source": [ 34 | "print(db.table_names())\n", 35 | "tbl = db.open_table(\"vectors_table_1\")" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": null, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "tbl.count_rows()" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": null, 50 | "metadata": {}, 51 | "outputs": [], 52 | "source": [ 53 | "tbl.search(None).select([\"filename\"]).to_pandas()" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": null, 59 | "metadata": {}, 60 | "outputs": [], 61 | "source": [ 62 | "%pip install sentence_transformers" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": null, 68 | "metadata": {}, 69 | "outputs": [], 70 | "source": [ 71 | "from sentence_transformers import SentenceTransformer\n", 72 | "model = SentenceTransformer(\"all-MiniLM-L6-v2\")\n", 73 | "\n", 74 | "# The sentences to encode\n", 75 | "sentences = [\n", 76 | " \"I really like animals and especially dogs.\",\n", 77 | " \"It's so sunny outside!\",\n", 78 | "]\n", 79 | "\n", 80 | "# 2. Calculate embeddings by calling model.encode()\n", 81 | "embeddings = model.encode(sentences, normalize_embeddings=True)\n", 82 | "print(embeddings.shape)" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": null, 88 | "metadata": {}, 89 | "outputs": [], 90 | "source": [ 91 | "type(embeddings[0])" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": null, 97 | "metadata": {}, 98 | "outputs": [], 99 | "source": [ 100 | "tbl.search(embeddings[0]) \\\n", 101 | " .select([\"filename\"]) \\\n", 102 | " .limit(3).to_pandas()" 103 | ] 104 | }, 105 | { 106 | "cell_type": "code", 107 | "execution_count": null, 108 | "metadata": {}, 109 | "outputs": [], 110 | "source": [ 111 | "# read the content of this file: embedding_files/embedding_content_99996.txt\n", 112 | "filename = \"embedding_files_test/embedding_content_99996.txt\"\n", 113 | "with open(filename , \"r\") as f:\n", 114 | " content = f.read()\n", 115 | " print(content)\n" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": null, 121 | "metadata": {}, 122 | "outputs": [], 123 | "source": [ 124 | "filename = \"embedding_files/embedding_content_10350.txt\"\n", 125 | "# count the number of words in the document without a counter\n", 126 | "with open(filename , \"r\") as f:\n", 127 | " content = f.read()\n", 128 | " print(len(content.split()))" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": null, 134 | "metadata": {}, 135 | "outputs": [], 136 | "source": [ 137 | "len(Counter(tokens))" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": null, 143 | "metadata": {}, 144 | "outputs": [], 145 | "source": [] 146 | } 147 | ], 148 | "metadata": { 149 | "kernelspec": { 150 | "display_name": "py312", 151 | "language": "python", 152 | "name": "python3" 153 | }, 154 | "language_info": { 155 | "codemirror_mode": { 156 | "name": "ipython", 157 | "version": 3 158 | }, 159 | "file_extension": ".py", 160 | "mimetype": "text/x-python", 161 | "name": "python", 162 | "nbconvert_exporter": "python", 163 | "pygments_lexer": "ipython3", 164 | "version": "3.12.3" 165 | } 166 | }, 167 | "nbformat": 4, 168 | "nbformat_minor": 2 169 | } 170 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | pub mod models; 2 | pub mod storage; 3 | use clap::Parser; 4 | use models::bert::BertModelWrapper; 5 | use rayon::prelude::*; 6 | use std::fs::{self, File}; 7 | use std::io::{BufRead, BufReader}; 8 | use std::sync::mpsc::{Receiver, Sender}; 9 | use tokio::task::JoinHandle; 10 | use tracing::{info, warn}; 11 | 12 | #[derive(Parser)] 13 | #[command(author, version, about, long_about = None)] 14 | pub struct Cli { 15 | #[clap(short, long)] 16 | input_directory: String, 17 | #[clap(short, long)] 18 | db_uri: String, 19 | } 20 | 21 | struct EmbeddingEntry { 22 | filename: String, 23 | embedding: Vec, 24 | } 25 | 26 | #[tokio::main] 27 | async fn main() -> anyhow::Result<()> { 28 | init_tracing(); 29 | let cli_args = Cli::parse(); 30 | let ts_mark = std::time::Instant::now(); 31 | 32 | // init the channel that sends data to the thread that writes embedding to the db 33 | let (sender, reciever) = std::sync::mpsc::channel::(); 34 | // start the task and get a handle to it 35 | let db_writer_task = 36 | init_db_writer_task(reciever, cli_args.db_uri.as_str(), "vectors_table_1", 100).await?; 37 | 38 | // list the files in the directory to be embedded 39 | let files_dir = fs::read_dir(cli_args.input_directory)?; 40 | 41 | let file_list = files_dir 42 | .into_iter() 43 | .map(|file| file.unwrap().path().to_str().unwrap().to_string()) 44 | .collect::>(); 45 | // process the files in parallel 46 | file_list.par_iter().for_each(|filename| { 47 | if let Err(e) = process_text_file(sender.clone(), filename.as_str()) { 48 | warn!("Error processing file: {}: Error:{}", filename, e) 49 | } 50 | }); 51 | 52 | drop(sender); // this will close the original channel 53 | info!("All files processed, waiting for write task to finish"); 54 | db_writer_task.await?; // wait for the db writer task to finish before exiting 55 | info!( 56 | "{} files indexed in: {:?}", 57 | file_list.len(), 58 | ts_mark.elapsed() 59 | ); 60 | Ok(()) 61 | } 62 | 63 | // process a text file and send the embeddings to the channel 64 | fn process_text_file(sender: Sender, filename: &str) -> anyhow::Result<()> { 65 | let bert_model = models::bert::get_model_reference()?; 66 | info!("reading file: {}", filename); 67 | let text_chunks = read_file_in_chunks(filename, 256)?; 68 | let text_chunks: Vec<&str> = text_chunks.iter().map(AsRef::as_ref).collect(); 69 | let file_vector = embed_multiple_sentences(&text_chunks, false, &bert_model)?; 70 | sender.send(EmbeddingEntry { 71 | filename: filename.to_string(), 72 | embedding: file_vector[0].clone(), 73 | })?; 74 | Ok(()) 75 | } 76 | 77 | /// Initialize the task that writes the embeddings to the db 78 | /// ## Arguments 79 | /// * reciever: the channel that receives the embeddings 80 | /// * db_uri: the uri of the db e.g. data/vecdb 81 | /// * table_name: the name of the table to write the embeddings to 82 | async fn init_db_writer_task( 83 | reciever: Receiver, 84 | db_uri: &str, 85 | table_name: &str, 86 | buffer_size: usize, 87 | ) -> anyhow::Result> { 88 | let db = storage::VecDB::connect(db_uri, table_name).await?; 89 | let task_handle = tokio::spawn(async move { 90 | let mut embeddings_buffer = Vec::new(); 91 | while let Ok(embedding) = reciever.recv() { 92 | embeddings_buffer.push(embedding); 93 | if embeddings_buffer.len() >= buffer_size { 94 | let (keys, vectors) = extract_keys_and_vectors(&embeddings_buffer); 95 | db.add_vector(&keys, vectors, 384).await.unwrap(); 96 | embeddings_buffer.clear(); 97 | } 98 | } 99 | if !embeddings_buffer.is_empty() { 100 | let (keys, vectors) = extract_keys_and_vectors(&embeddings_buffer); 101 | db.add_vector(&keys, vectors, 384).await.unwrap(); 102 | } 103 | }); 104 | Ok(task_handle) 105 | } 106 | 107 | fn extract_keys_and_vectors(embeddings_buffer: &[EmbeddingEntry]) -> (Vec<&str>, Vec>) { 108 | embeddings_buffer 109 | .iter() 110 | .map(|entry| (entry.filename.as_str(), entry.embedding.clone())) 111 | .unzip::<&str, Vec, Vec<&str>, Vec>>() 112 | } 113 | 114 | fn embed_multiple_sentences( 115 | sentences: &[&str], 116 | apply_mean: bool, 117 | bert_model: &BertModelWrapper, 118 | ) -> anyhow::Result>> { 119 | let multiple_embeddings = bert_model.embed_sentences(sentences, apply_mean)?; 120 | if apply_mean { 121 | let multiple_embeddings = multiple_embeddings.to_vec1::()?; 122 | Ok(vec![multiple_embeddings]) 123 | } else { 124 | let multiple_embeddings = multiple_embeddings.to_vec2::()?; 125 | Ok(multiple_embeddings) 126 | } 127 | } 128 | 129 | fn embed_sentence(sentence: &str, bert_model: &BertModelWrapper) -> anyhow::Result> { 130 | let embedding = bert_model.embed_sentence(sentence)?; 131 | println!("embedding Tensor: {:?}", embedding); 132 | // we squeeze the tensor to remove the batch dimension 133 | let embedding = embedding.squeeze(0)?; 134 | println!("embedding Tensor after squeeze: {:?}", embedding); 135 | let embedding = embedding.to_vec1::().unwrap(); 136 | //println!("embedding Vec: {:?}", embedding); 137 | Ok(embedding) 138 | } 139 | 140 | fn init_tracing() { 141 | if let Ok(level_filter) = tracing_subscriber::EnvFilter::try_from_env("LOG_LEVEL") { 142 | tracing_subscriber::fmt() 143 | .with_env_filter(level_filter) 144 | .with_ansi(true) 145 | .with_file(true) 146 | .with_line_number(true) 147 | .init(); 148 | } else { 149 | println!("Failed to parse LOG_LEVEL env variable, using default log level: INFO"); 150 | tracing_subscriber::fmt() 151 | .with_ansi(true) 152 | .with_file(true) 153 | .with_line_number(true) 154 | .init(); 155 | } 156 | } 157 | 158 | fn read_file_in_chunks(file_path: &str, chunk_size: usize) -> anyhow::Result> { 159 | let file = File::open(file_path).unwrap(); 160 | let reader = BufReader::new(file); 161 | let mut sentences = Vec::new(); 162 | let mut text_buffer = String::new(); 163 | for text in reader.lines() { 164 | let text = text?; 165 | text_buffer.push_str(text.as_str()); 166 | let word_count = text_buffer.split_whitespace().count(); 167 | if word_count >= chunk_size { 168 | sentences.push(text_buffer.clone()); 169 | text_buffer.clear(); 170 | } 171 | } 172 | if !text_buffer.is_empty() { 173 | sentences.push(text_buffer.clone()); 174 | } 175 | Ok(sentences) 176 | } 177 | 178 | // test the entire flow with files in embedding_files_test folder end-to-end 179 | #[cfg(test)] 180 | mod tests { 181 | use arrow_array::StringArray; 182 | use super::*; 183 | use crate::embed_sentence; 184 | #[tokio::test] 185 | async fn test_full_flow() { 186 | let temp_folder = "temp_test_folder"; 187 | let temp_table = "temp_test_table"; 188 | fs::create_dir(temp_folder).unwrap(); 189 | let (test_sender, test_reciever) = std::sync::mpsc::channel::(); 190 | let db_writer_task = init_db_writer_task(test_reciever, temp_folder, temp_table, 100) 191 | .await 192 | .unwrap(); 193 | let files_dir = fs::read_dir("embedding_files_test").unwrap(); 194 | let file_list = files_dir 195 | .into_iter() 196 | .map(|file| file.unwrap().path().to_str().unwrap().to_string()) 197 | .collect::>(); 198 | // process the files in parallel 199 | file_list.par_iter().for_each(|filename| { 200 | if let Err(e) = process_text_file(test_sender.clone(), filename.as_str()) { 201 | panic!("Error processing file: {}: Error:{}", filename, e) 202 | } 203 | }); 204 | drop(test_sender); // this will close the original channel 205 | db_writer_task.await.unwrap(); 206 | let db = storage::VecDB::connect(temp_folder, temp_table) 207 | .await 208 | .unwrap(); 209 | let bert_model = models::bert::get_model_reference().unwrap(); 210 | let animals_vector = 211 | embed_sentence("I like all animals and especially dogs", &bert_model).unwrap(); 212 | let record_batch = db.find_similar(animals_vector, 1).await.unwrap(); 213 | let files_array = record_batch.column_by_name("filename").unwrap(); 214 | let files = files_array.as_any().downcast_ref::().unwrap(); 215 | let v = files.value(0); 216 | assert_eq!(v, "embedding_files_test/embedding_content_99996.txt"); 217 | fs::remove_dir_all(temp_folder).unwrap(); 218 | } 219 | } 220 | -------------------------------------------------------------------------------- /src/models/bert.rs: -------------------------------------------------------------------------------- 1 | use std::{cell::RefCell, rc::Rc}; 2 | 3 | use candle::{Device, Tensor}; 4 | use candle_nn::VarBuilder; 5 | use candle_transformers::models::bert::{BertModel, Config, DTYPE}; 6 | use hf_hub::{api::sync::Api, Repo, RepoType}; 7 | use tokenizers::Tokenizer; 8 | use tracing::{debug, info}; 9 | 10 | // constants for the model id and default revision 11 | const EMB_MODEL_ID: &str = "sentence-transformers/all-MiniLM-L6-v2"; 12 | const EMB_MODEL_REV: &str = "refs/pr/21"; 13 | 14 | thread_local! { 15 | static BERT_MODEL: Rc = { 16 | info!("Loading a model on thread: {:?}", std::thread::current().id()); 17 | let model = BertModelWrapper::new(candle::Device::Cpu, EMB_MODEL_ID, EMB_MODEL_REV); 18 | match model { 19 | Ok(model) => Rc::new(model), 20 | Err(e) => { 21 | panic!("Failed to load the model: {}", e); 22 | } 23 | } 24 | } 25 | } 26 | 27 | pub fn get_model_reference() -> anyhow::Result> { 28 | BERT_MODEL.with(|model| Ok(model.clone())) 29 | } 30 | 31 | pub struct BertModelWrapper { 32 | model: BertModel, 33 | tokenizer: Tokenizer, 34 | device: Device, 35 | } 36 | 37 | impl BertModelWrapper { 38 | pub fn new(device: Device, model_id: &str, revision: &str) -> anyhow::Result { 39 | let repo = Repo::with_revision(model_id.into(), RepoType::Model, revision.into()); 40 | let api = Api::new()?; 41 | let api = api.repo(repo); 42 | let config_filename = api.get("config.json")?; 43 | let tokenizer_filename = api.get("tokenizer.json")?; 44 | let weights_filename = api.get("model.safetensors")?; 45 | // load the model config 46 | let config = std::fs::read_to_string(config_filename)?; 47 | let config: Config = serde_json::from_str(&config)?; 48 | // load the tokenizer 49 | let tokenizer = Tokenizer::from_file(tokenizer_filename).map_err(anyhow::Error::msg)?; 50 | // load the model 51 | let vb = 52 | unsafe { VarBuilder::from_mmaped_safetensors(&[weights_filename], DTYPE, &device)? }; 53 | let model = BertModel::load(vb, &config)?; 54 | Ok(Self { 55 | model, 56 | tokenizer, 57 | device, 58 | }) 59 | } 60 | 61 | pub fn embed_sentence(&self, sentence: &str) -> anyhow::Result { 62 | let tokens = self 63 | .tokenizer 64 | .encode(sentence, true) 65 | .map_err(anyhow::Error::msg)?; 66 | let token_ids = Tensor::new(tokens.get_ids(), &self.device)?.unsqueeze(0)?; 67 | let token_type_ids = token_ids.zeros_like()?; 68 | let start = std::time::Instant::now(); 69 | let embeddings = self.model.forward(&token_ids, &token_type_ids)?; 70 | debug!("time taken for forward: {:?}", start.elapsed()); 71 | debug!("embeddings: {:?}", embeddings); 72 | let embeddings = Self::apply_max_pooling(&embeddings)?; 73 | debug!("embeddings after pooling: {:?}", embeddings); 74 | let embeddings = Self::l2_normalize(&embeddings)?; 75 | Ok(embeddings) 76 | } 77 | 78 | pub fn embed_sentences(&self, sentences: &[&str], apply_mean: bool) -> anyhow::Result { 79 | let mut all_tokens = Vec::with_capacity(sentences.len()); 80 | for sentence in sentences { 81 | let tokens = self 82 | .tokenizer 83 | .encode(*sentence, true) 84 | .map_err(anyhow::Error::msg)?; 85 | all_tokens.push(tokens); 86 | } 87 | 88 | let batch_size = sentences.len(); 89 | let max_length = all_tokens[0].get_ids().len(); // Assuming all are padded to the same length 90 | 91 | let mut token_ids = Vec::with_capacity(batch_size * max_length); 92 | let mut attention_mask = Vec::with_capacity(batch_size * max_length); 93 | 94 | for tokens in all_tokens { 95 | token_ids.extend_from_slice(tokens.get_ids()); 96 | attention_mask.extend_from_slice(tokens.get_attention_mask()); 97 | } 98 | 99 | let token_ids = Tensor::new(token_ids, &self.device)?.reshape((batch_size, max_length))?; 100 | let token_type_ids = token_ids.zeros_like()?; 101 | let embeddings = self.model.forward(&token_ids, &token_type_ids)?; 102 | let embeddings = Self::apply_mean_pooling(&embeddings)?; 103 | let embeddings = Self::l2_normalize(&embeddings)?; 104 | if apply_mean { 105 | let embeddings = Self::apply_mean_pooling(&embeddings)?; 106 | Ok(embeddings) 107 | } else { 108 | Ok(embeddings) 109 | } 110 | } 111 | 112 | pub fn apply_max_pooling(embeddings: &Tensor) -> anyhow::Result { 113 | Ok(embeddings.max(1)?) 114 | } 115 | 116 | /// Apply mean pooling to the embeddings 117 | /// The input tensor should either have the shape (n_sentences, n_tokens, hidden_size) or (n_tokens, hidden_size) 118 | /// depending on whether the input is a batch of sentences or a single sentence 119 | pub fn apply_mean_pooling(embeddings: &Tensor) -> anyhow::Result { 120 | match embeddings.rank() { 121 | 3 => { 122 | let (_n_sentence, n_tokens, _hidden_size) = embeddings.dims3()?; 123 | (embeddings.sum(1)? / (n_tokens as f64)).map_err(anyhow::Error::msg) 124 | } 125 | 2 => { 126 | let (n_tokens, _hidden_size) = embeddings.dims2()?; 127 | (embeddings.sum(0)? / (n_tokens as f64)).map_err(anyhow::Error::msg) 128 | } 129 | _ => anyhow::bail!("Unsupported tensor rank for mean pooling"), 130 | } 131 | } 132 | 133 | pub fn l2_normalize(embeddings: &Tensor) -> anyhow::Result { 134 | let normalized = embeddings.broadcast_div(&embeddings.sqr()?.sum_keepdim(1)?.sqrt()?)?; 135 | //info!("normalized embeddings: {:?}", normalized); 136 | Ok(normalized) 137 | } 138 | 139 | fn cosine_similarity(a: &Tensor, b: &Tensor) -> anyhow::Result { 140 | let sum_ij = (a * b)?.sum_all()?.to_scalar::()?; 141 | let sum_i2 = (a * a)?.sum_all()?.to_scalar::()?; 142 | let sum_j2 = (b * b)?.sum_all()?.to_scalar::()?; 143 | let cosine_similarity = sum_ij / (sum_i2 * sum_j2).sqrt(); 144 | Ok(cosine_similarity) 145 | } 146 | } 147 | 148 | #[cfg(test)] 149 | mod tests { 150 | use super::*; 151 | use crate::embed_multiple_sentences; 152 | fn cosine_similarity_for_test(a: &Vec, b: &Vec) -> f32 { 153 | if a.len() != b.len() { 154 | panic!("Vectors must have the same length"); 155 | } 156 | 157 | let dot_product: f32 = a.iter().zip(b.iter()).map(|(&x, &y)| x * y).sum(); 158 | let magnitude_a: f32 = a.iter().map(|&x| x * x).sum::().sqrt(); 159 | let magnitude_b: f32 = b.iter().map(|&x| x * x).sum::().sqrt(); 160 | 161 | dot_product / (magnitude_a * magnitude_b) 162 | } 163 | 164 | #[test] 165 | fn test_cosine_similarity() { 166 | let a = Tensor::from_slice(&[1.0, 1.0, 2.0], (1, 3), &Device::Cpu).unwrap(); 167 | let b = Tensor::from_slice(&[1.0, 1.0, 3.0], (1, 3), &Device::Cpu).unwrap(); 168 | let c = Tensor::from_slice(&[2.0, 4.0, 5.0], (1, 3), &Device::Cpu).unwrap(); 169 | // we will test that a and b are closer than a and c or b and c 170 | let similarity_ab = BertModelWrapper::cosine_similarity(&a, &b).unwrap(); 171 | let similarity_ac = BertModelWrapper::cosine_similarity(&a, &c).unwrap(); 172 | let similarity_bc = BertModelWrapper::cosine_similarity(&b, &c).unwrap(); 173 | // just print all results now 174 | println!("similarity_ab: {}", similarity_ab); 175 | println!("similarity_ac: {}", similarity_ac); 176 | println!("similarity_bc: {}", similarity_bc); 177 | 178 | assert!(similarity_ab > similarity_ac); 179 | assert!(similarity_ab > similarity_bc); 180 | } 181 | 182 | #[test] 183 | fn test_embed_multiple_sentences() { 184 | let bert_model = get_model_reference().unwrap(); 185 | let sentences_1 = vec![ 186 | "My cat loves to nap in the sunlight", 187 | "Whiskers is always chasing after the red laser dot", 188 | "As a Siamese, my cat has a beautiful coat", 189 | ]; 190 | 191 | let sentences_2 = vec![ 192 | "My kitten enjoys playing with string", 193 | "The little feline is quick to pounce on toys", 194 | "Siamese kittens have striking blue eyes", 195 | ]; 196 | 197 | let sentences_3 = vec![ 198 | "The chef is preparing a gourmet meal tonight", 199 | "Cooking requires precise timing and skill", 200 | "Gourmet dishes often include exotic ingredients", 201 | ]; 202 | // now we emebed and test the similarity 203 | let embeddings_1 = embed_multiple_sentences(&sentences_1, true, &bert_model).unwrap(); 204 | let embeddings_2 = embed_multiple_sentences(&sentences_2, true, &bert_model).unwrap(); 205 | let embeddings_3 = embed_multiple_sentences(&sentences_3, true, &bert_model).unwrap(); 206 | // now we test the similarity between the embeddings 207 | let similarity_12 = cosine_similarity_for_test(&embeddings_1[0], &embeddings_2[0]); 208 | let similarity_13 = cosine_similarity_for_test(&embeddings_1[0], &embeddings_3[0]); 209 | let similarity_23 = cosine_similarity_for_test(&embeddings_2[0], &embeddings_3[0]); 210 | 211 | println!("similarity_12: {}", similarity_12); 212 | println!("similarity_13: {}", similarity_13); 213 | println!("similarity_23: {}", similarity_23); 214 | assert!(similarity_12 > similarity_13); 215 | assert!(similarity_12 > similarity_23); 216 | } 217 | } 218 | -------------------------------------------------------------------------------- /src/models/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod bert; 2 | -------------------------------------------------------------------------------- /src/storage/mod.rs: -------------------------------------------------------------------------------- 1 | use std::sync::Arc; 2 | 3 | use anyhow::Ok; 4 | use arrow_array::{ 5 | cast::AsArray, types::Float32Type, FixedSizeListArray, RecordBatch, RecordBatchIterator, 6 | StringArray, 7 | }; 8 | use arrow_schema::ArrowError; 9 | 10 | use lancedb::query::{ExecutableQuery, QueryBase}; 11 | 12 | use futures::TryStreamExt; 13 | use lancedb::{ 14 | arrow::arrow_schema::{DataType, Field, Schema}, 15 | Table, 16 | }; 17 | use tracing::warn; 18 | 19 | pub struct VecDB { 20 | default_table: Table, 21 | } 22 | 23 | impl VecDB { 24 | pub async fn connect(db_path: &str, default_table: &str) -> anyhow::Result { 25 | let connection = lancedb::connect(db_path).execute().await?; 26 | let table_exists = connection 27 | .table_names() 28 | .execute() 29 | .await? 30 | .contains(&default_table.to_string()); 31 | if !table_exists { 32 | warn!("Table {} does not exist, creating it", default_table); 33 | let schema = Self::get_default_schema(); 34 | connection 35 | .create_empty_table(default_table, schema) 36 | .execute() 37 | .await?; 38 | } 39 | let table = connection.open_table(default_table).execute().await?; 40 | Ok(Self { 41 | default_table: table, 42 | }) 43 | } 44 | 45 | pub async fn find_similar(&self, vector: Vec, n: usize) -> anyhow::Result { 46 | let results = self 47 | .default_table 48 | .query() 49 | .nearest_to(vector)? 50 | .limit(n) 51 | .execute() 52 | .await? 53 | .try_collect::>() 54 | .await?; 55 | 56 | println!("Got {} batches of results", results.len()); 57 | let first = results.first().unwrap(); 58 | Ok(first.clone()) 59 | } 60 | 61 | /// Get the default schema for the VecDB 62 | pub fn get_default_schema() -> Arc { 63 | Arc::new(Schema::new(vec![ 64 | Field::new("filename", DataType::Utf8, false), 65 | Field::new( 66 | "vector", 67 | DataType::FixedSizeList(Arc::new(Field::new("item", DataType::Float32, true)), 384), 68 | true, 69 | ), 70 | ])) 71 | } 72 | 73 | pub async fn add_vector( 74 | &self, 75 | filenames: &[&str], 76 | vectors: Vec>, 77 | vec_dim: i32, 78 | ) -> anyhow::Result<()> { 79 | let schema = self.default_table.schema().await?; 80 | let key_array = StringArray::from_iter_values(filenames); 81 | let vectors_array = FixedSizeListArray::from_iter_primitive::( 82 | vectors 83 | .into_iter() 84 | .map(|v| Some(v.into_iter().map(|i| Some(i)))), 85 | vec_dim, 86 | ); 87 | let batches = vec![Ok(RecordBatch::try_new( 88 | schema.clone(), 89 | vec![Arc::new(key_array), Arc::new(vectors_array)], 90 | )?) 91 | .map_err(|e| ArrowError::from_external_error(e.into()))]; 92 | let batch_iterator = RecordBatchIterator::new(batches, schema); 93 | // Create a RecordBatch stream. 94 | let boxed_batches = Box::new(batch_iterator); 95 | // add them to the table 96 | self.default_table.add(boxed_batches).execute().await?; 97 | Ok(()) 98 | } 99 | } 100 | --------------------------------------------------------------------------------