diff --git a/Cargo.lock b/Cargo.lock index edb2272c1c..3342bf39b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -570,7 +570,7 @@ dependencies = [ "libc", "pin-project", "redox_syscall 0.2.16", - "xattr 0.2.3", + "xattr", ] [[package]] @@ -903,15 +903,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "blas-src" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb48fbaa7a0cb9d6d96c46bac6cedb16f13a10aebcef1c4e73515aaae8c9909d" -dependencies = [ - "openblas-src", -] - [[package]] name = "block" version = "0.1.6" @@ -1190,15 +1181,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" -[[package]] -name = "cblas-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6feecd82cce51b0204cf063f0041d69f24ce83f680d87514b004248e7b0fa65" -dependencies = [ - "libc", -] - [[package]] name = "cc" version = "1.0.83" @@ -4604,8 +4586,6 @@ version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" dependencies = [ - "cblas-sys", - "libc", "matrixmultiply", "num-complex 0.4.4", "num-integer", @@ -4990,32 +4970,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -[[package]] -name = "openblas-build" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba42c395477605f400a8d79ee0b756cfb82abe3eb5618e35fa70d3a36010a7f" -dependencies = [ - "anyhow", - "flate2", - "native-tls", - "tar", - "thiserror", - "ureq", - "walkdir", -] - -[[package]] -name = "openblas-src" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e5d8af0b707ac2fe1574daa88b4157da73b0de3dc7c39fe3e2c0bb64070501" -dependencies = [ - "dirs 3.0.2", - "openblas-build", - "vcpkg", -] - [[package]] name = "openssl" version = "0.10.57" @@ -6490,18 +6444,6 @@ dependencies = [ "webpki 0.22.1", ] -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "schannel", - "security-framework", -] - [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -6820,7 +6762,6 @@ dependencies = [ "ai", "anyhow", "async-trait", - "blas-src", "client", "collections", "ctor", @@ -6834,7 +6775,6 @@ dependencies = [ "log", "ndarray", "node_runtime", - "openblas-src", "ordered-float", "parking_lot 0.11.2", "picker", @@ -7712,17 +7652,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" -[[package]] -name = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr 1.0.1", -] - [[package]] name = "target-lexicon" version = "0.12.11" @@ -8797,21 +8726,6 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" -[[package]] -name = "ureq" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" -dependencies = [ - "base64 0.21.4", - "flate2", - "log", - "native-tls", - "once_cell", - "rustls-native-certs", - "url", -] - [[package]] name = "url" version = "2.4.1" @@ -9865,15 +9779,6 @@ dependencies = [ "libc", ] -[[package]] -name = "xattr" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" -dependencies = [ - "libc", -] - [[package]] name = "xmlparser" version = "0.13.5" diff --git a/crates/semantic_index/Cargo.toml b/crates/semantic_index/Cargo.toml index cd08aa0d63..efda311633 100644 --- a/crates/semantic_index/Cargo.toml +++ b/crates/semantic_index/Cargo.toml @@ -39,9 +39,7 @@ rand.workspace = true schemars.workspace = true globset.workspace = true sha1 = "0.10.5" -ndarray = { version = "0.15.0", features = ["blas"] } -blas-src = { version = "0.8", features = ["openblas"] } -openblas-src = { version = "0.10", features = ["cblas", "system"] } +ndarray = { version = "0.15.0" } [dev-dependencies] collections = { path = "../collections", features = ["test-support"] } diff --git a/crates/semantic_index/src/db.rs b/crates/semantic_index/src/db.rs index caa70a4cfa..18e38c6e4c 100644 --- a/crates/semantic_index/src/db.rs +++ b/crates/semantic_index/src/db.rs @@ -1,5 +1,3 @@ -extern crate blas_src; - use crate::{ parsing::{Span, SpanDigest}, SEMANTIC_INDEX_VERSION, @@ -440,25 +438,24 @@ impl VectorDatabase { .filter_map(|row| row.ok()) .collect::>(); - let batch_n = 250; + let batch_n = 1000; let mut batches = Vec::new(); let mut batch_ids = Vec::new(); let mut batch_embeddings: Vec = Vec::new(); deserialized_rows.iter().for_each(|(id, embedding)| { batch_ids.push(id); batch_embeddings.extend(&embedding.0); + if batch_ids.len() == batch_n { - let array = - Array2::from_shape_vec((batch_ids.len(), 1536), batch_embeddings.clone()); + let embeddings = std::mem::take(&mut batch_embeddings); + let ids = std::mem::take(&mut batch_ids); + let array = Array2::from_shape_vec((batch_ids.len(), 1536), embeddings); match array { Ok(array) => { - batches.push((batch_ids.clone(), array)); + batches.push((ids, array)); } Err(err) => log::error!("Failed to deserialize to ndarray: {:?}", err), } - - batch_ids = Vec::new(); - batch_embeddings = Vec::new(); } }); diff --git a/crates/semantic_index/src/semantic_index.rs b/crates/semantic_index/src/semantic_index.rs index f42544af1c..ecdba43643 100644 --- a/crates/semantic_index/src/semantic_index.rs +++ b/crates/semantic_index/src/semantic_index.rs @@ -711,7 +711,7 @@ impl SemanticIndex { .await? .pop() .ok_or_else(|| anyhow!("could not embed query"))?; - log::trace!("Embedding Search Query: {:?}", t0.elapsed().as_millis()); + log::trace!("Embedding Search Query: {:?}ms", t0.elapsed().as_millis()); let search_start = Instant::now(); let modified_buffer_results = this.update(&mut cx, |this, cx| {