Upgrade Qdrant Edge to 0.8.0 and drop our Qdrant fork

This commit is contained in:
Thorsten Sommer 2026-09-18 13:25:07 +02:00
parent 557d0b1409
commit 440b61168d
Signed by untrusted user who does not match committer: tsommer
GPG Key ID: 371BBA77A02C0108
3 changed files with 165 additions and 431 deletions

547
runtime/Cargo.lock generated
View File

@ -113,6 +113,12 @@ version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "allocator-api2"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c880a97d28a3681c0267bd29cff89621202715b065127cd445fa0f0fe0aa2880"
[[package]] [[package]]
name = "android_system_properties" name = "android_system_properties"
version = "0.1.5" version = "0.1.5"
@ -884,6 +890,15 @@ dependencies = [
"constant_time_eq 0.1.5", "constant_time_eq 0.1.5",
] ]
[[package]]
name = "blink-alloc"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce4c15bad517bc0fb4a44523adf470e2c3eb3a365769327acdba849948ea3705"
dependencies = [
"allocator-api2 0.4.0",
]
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
version = "0.10.4" version = "0.10.4"
@ -952,14 +967,6 @@ dependencies = [
"piper", "piper",
] ]
[[package]]
name = "bm25"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"murmur3_32",
]
[[package]] [[package]]
name = "brotli" name = "brotli"
version = "8.0.2" version = "8.0.2"
@ -1366,53 +1373,6 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "common"
version = "0.0.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"ahash",
"aligned-vec",
"atomicwrites",
"bincode 1.3.3",
"bitvec",
"bytemuck",
"chrono",
"fs-err",
"fs4",
"fs_extra",
"io-uring",
"itertools",
"log",
"memmap2",
"nix 0.31.3",
"num-traits",
"num_cpus",
"ordered-float 5.3.0",
"parking_lot",
"ph",
"procfs",
"quick_cache",
"rand 0.10.2",
"roaring",
"schemars 0.8.22",
"self_cell",
"semver",
"serde",
"serde_json",
"slab",
"strum",
"tap",
"tar",
"tempfile",
"thiserror 2.0.18",
"thread-priority",
"tokio",
"validator",
"walkdir",
"zerocopy",
]
[[package]] [[package]]
name = "compact_str" name = "compact_str"
version = "0.9.1" version = "0.9.1"
@ -1550,6 +1510,17 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "core_affinity"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a034b3a7b624016c6e13f5df875747cc25f884156aad2abd12b6c46797971342"
dependencies = [
"libc",
"num_cpus",
"winapi",
]
[[package]] [[package]]
name = "cpubits" name = "cpubits"
version = "0.1.1" version = "0.1.1"
@ -1810,20 +1781,6 @@ version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
[[package]]
name = "dataset"
version = "0.0.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"anyhow",
"flate2",
"fs-err",
"indicatif",
"reqwest",
"serde",
"serde_json",
]
[[package]] [[package]]
name = "dbus" name = "dbus"
version = "0.9.7" version = "0.9.7"
@ -2882,10 +2839,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"js-sys",
"libc", "libc",
"wasi 0.11.1+wasi-snapshot-preview1", "wasi 0.11.1+wasi-snapshot-preview1",
"wasm-bindgen",
] ]
[[package]] [[package]]
@ -3046,42 +3001,6 @@ dependencies = [
"system-deps", "system-deps",
] ]
[[package]]
name = "gpu"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"log",
"parking_lot",
"zerocopy",
]
[[package]]
name = "gridstore"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"ahash",
"bitvec",
"bytemuck",
"common",
"dataset",
"ecow",
"fs-err",
"itertools",
"log",
"lz4_flex",
"parking_lot",
"rand 0.10.2",
"serde",
"serde_cbor",
"serde_json",
"smallvec",
"tempfile",
"thiserror 2.0.18",
"zerocopy",
]
[[package]] [[package]]
name = "gtk" name = "gtk"
version = "0.18.2" version = "0.18.2"
@ -3195,7 +3114,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [ dependencies = [
"ahash", "ahash",
"allocator-api2", "allocator-api2 0.2.21",
] ]
[[package]] [[package]]
@ -3204,7 +3123,7 @@ version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
dependencies = [ dependencies = [
"allocator-api2", "allocator-api2 0.2.21",
"equivalent", "equivalent",
"foldhash 0.1.5", "foldhash 0.1.5",
] ]
@ -3215,7 +3134,7 @@ version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
dependencies = [ dependencies = [
"allocator-api2", "allocator-api2 0.2.21",
"equivalent", "equivalent",
"foldhash 0.2.0", "foldhash 0.2.0",
] ]
@ -3343,6 +3262,12 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "humantime"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15"
[[package]] [[package]]
name = "hybrid-array" name = "hybrid-array"
version = "0.4.12" version = "0.4.12"
@ -3761,7 +3686,6 @@ checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb"
dependencies = [ dependencies = [
"console", "console",
"portable-atomic", "portable-atomic",
"rayon",
"unicode-width", "unicode-width",
"unit-prefix", "unit-prefix",
"web-time", "web-time",
@ -3885,6 +3809,15 @@ dependencies = [
"either", "either",
] ]
[[package]]
name = "itertools"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc"
dependencies = [
"either",
]
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.11" version = "1.0.11"
@ -4221,17 +4154,11 @@ dependencies = [
"imgref", "imgref",
] ]
[[package]]
name = "lru-slab"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
[[package]] [[package]]
name = "lz4_flex" name = "lz4_flex"
version = "0.13.1" version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" checksum = "ecbdfe44b1bd960b68170b417450a628c43f7cf56bb3c5317e61cb230ee7f226"
[[package]] [[package]]
name = "lzma-rust2" name = "lzma-rust2"
@ -4258,16 +4185,6 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30" checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30"
[[package]]
name = "macros"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]] [[package]]
name = "markup5ever" name = "markup5ever"
version = "0.38.0" version = "0.38.0"
@ -4382,7 +4299,7 @@ dependencies = [
"strum_macros", "strum_macros",
"symphonia", "symphonia",
"sys-locale", "sys-locale",
"sysinfo 0.39.6", "sysinfo",
"tauri", "tauri",
"tauri-build", "tauri-build",
"tauri-plugin-dialog", "tauri-plugin-dialog",
@ -5291,7 +5208,7 @@ dependencies = [
"console_error_panic_hook", "console_error_panic_hook",
"console_log", "console_log",
"image", "image",
"itertools", "itertools 0.14.0",
"js-sys", "js-sys",
"libloading 0.8.6", "libloading 0.8.6",
"log", "log",
@ -5523,16 +5440,6 @@ dependencies = [
"portable-atomic", "portable-atomic",
] ]
[[package]]
name = "posting_list"
version = "0.0.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"bitpacking",
"common",
"zerocopy",
]
[[package]] [[package]]
name = "powerfmt" name = "powerfmt"
version = "0.2.0" version = "0.2.0"
@ -5757,25 +5664,97 @@ checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea"
[[package]] [[package]]
name = "qdrant-edge" name = "qdrant-edge"
version = "0.7.2" version = "0.8.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b8072302c87506a34bffec9bc16dbdcd36df8ab1321406b6e141530348c7e54"
dependencies = [ dependencies = [
"ahash", "ahash",
"bm25", "aligned-vec",
"common", "arrayvec 0.7.6",
"atomic_refcell",
"atomicwrites",
"bincode 1.3.3",
"bitpacking",
"bitvec",
"blink-alloc",
"bytemuck",
"byteorder",
"cc",
"cgroups-rs",
"charabia",
"chrono",
"core_affinity",
"crc32c",
"data-encoding",
"docopt",
"duplicate",
"ecow",
"env_logger",
"fnv",
"fs-err", "fs-err",
"itertools", "fs4",
"fs_extra",
"geo",
"geohash",
"half 2.7.1",
"humantime",
"indexmap 2.14.0",
"integer-encoding",
"io-uring",
"itertools 0.15.0",
"log", "log",
"lz4_flex",
"macro_rules_attribute",
"memmap2",
"murmur3_32",
"nix 0.31.3",
"nom 8.0.0",
"num-cmp",
"num-derive",
"num-traits",
"num_cpus",
"once_cell",
"ordered-float 5.3.0", "ordered-float 5.3.0",
"parking_lot", "parking_lot",
"permutation_iterator",
"ph",
"procfs",
"qdrant-rust-stemmers",
"quick_cache",
"rand 0.10.2", "rand 0.10.2",
"segment", "rand_distr",
"rayon",
"rmp-serde",
"roaring",
"rustix 1.1.4",
"schemars 0.8.22",
"self_cell",
"semver",
"serde", "serde",
"serde-untagged",
"serde-value",
"serde_cbor",
"serde_json", "serde_json",
"shard", "serde_variant",
"sparse", "sha2 0.11.0",
"siphasher",
"slab",
"smallvec",
"strum",
"sysinfo",
"tap",
"tar",
"tempfile",
"thiserror 2.0.18",
"thread-priority",
"tinyvec",
"tokio",
"tonic",
"uuid", "uuid",
"wal", "validator",
"vaporetto",
"walkdir",
"zerocopy",
] ]
[[package]] [[package]]
@ -5797,27 +5776,6 @@ dependencies = [
"bytemuck", "bytemuck",
] ]
[[package]]
name = "quantization"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"arrayvec 0.7.6",
"bytemuck",
"cc",
"common",
"fs-err",
"num-traits",
"ordered-float 5.3.0",
"parking_lot",
"permutation_iterator",
"rand 0.10.2",
"rayon",
"serde",
"serde_json",
"strum",
]
[[package]] [[package]]
name = "quick-error" name = "quick-error"
version = "2.0.1" version = "2.0.1"
@ -5854,73 +5812,16 @@ dependencies = [
[[package]] [[package]]
name = "quick_cache" name = "quick_cache"
version = "0.6.22" version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1c821816e9b928e20e92ed59bb3ac4aab321d16ca2316871c9fe7ca739cd477" checksum = "403c1a912fec895cafb223201e368234842acb9220aaf08ab042ae89ba5f135c"
dependencies = [ dependencies = [
"ahash",
"equivalent", "equivalent",
"hashbrown 0.16.1", "foldhash 0.2.0",
"hashbrown 0.17.0",
"parking_lot", "parking_lot",
] ]
[[package]]
name = "quinn"
version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
dependencies = [
"bytes",
"cfg_aliases",
"pin-project-lite",
"quinn-proto",
"quinn-udp",
"rustc-hash",
"rustls",
"socket2",
"thiserror 2.0.18",
"tokio",
"tracing",
"web-time",
]
[[package]]
name = "quinn-proto"
version = "0.11.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
dependencies = [
"aws-lc-rs",
"bytes",
"getrandom 0.4.2",
"lru-slab",
"rand 0.10.2",
"rand_pcg",
"ring",
"rustc-hash",
"rustls",
"rustls-pki-types",
"slab",
"thiserror 2.0.18",
"tinyvec",
"tracing",
"web-time",
]
[[package]]
name = "quinn-udp"
version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
dependencies = [
"cfg_aliases",
"libc",
"once_cell",
"socket2",
"tracing",
"windows-sys 0.60.2",
]
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.45" version = "1.0.45"
@ -6065,7 +5966,7 @@ dependencies = [
"built", "built",
"cfg-if", "cfg-if",
"interpolate_name", "interpolate_name",
"itertools", "itertools 0.14.0",
"libc", "libc",
"libfuzzer-sys", "libfuzzer-sys",
"log", "log",
@ -6131,7 +6032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f" checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f"
dependencies = [ dependencies = [
"either", "either",
"itertools", "itertools 0.14.0",
"rayon", "rayon",
] ]
@ -6266,10 +6167,8 @@ checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
dependencies = [ dependencies = [
"base64 0.22.1", "base64 0.22.1",
"bytes", "bytes",
"futures-channel",
"futures-core", "futures-core",
"futures-util", "futures-util",
"h2",
"http", "http",
"http-body", "http-body",
"http-body-util", "http-body-util",
@ -6280,7 +6179,6 @@ dependencies = [
"log", "log",
"percent-encoding", "percent-encoding",
"pin-project-lite", "pin-project-lite",
"quinn",
"rustls", "rustls",
"rustls-pki-types", "rustls-pki-types",
"rustls-platform-verifier", "rustls-platform-verifier",
@ -6526,7 +6424,6 @@ version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
dependencies = [ dependencies = [
"web-time",
"zeroize", "zeroize",
] ]
@ -6700,78 +6597,6 @@ dependencies = [
"xxhash-rust", "xxhash-rust",
] ]
[[package]]
name = "segment"
version = "0.6.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"ahash",
"atomic_refcell",
"atomicwrites",
"bincode 1.3.3",
"bitvec",
"bytemuck",
"byteorder",
"cc",
"cgroups-rs",
"charabia",
"chrono",
"common",
"data-encoding",
"duplicate",
"ecow",
"fnv",
"fs-err",
"fs_extra",
"geo",
"geohash",
"gpu",
"gridstore",
"half 2.7.1",
"indexmap 2.14.0",
"integer-encoding",
"io-uring",
"itertools",
"log",
"macro_rules_attribute",
"macros",
"memmap2",
"nom 8.0.0",
"num-cmp",
"num-derive",
"num-traits",
"ordered-float 5.3.0",
"parking_lot",
"posting_list",
"procfs",
"qdrant-rust-stemmers",
"quantization",
"rand 0.10.2",
"rayon",
"roaring",
"schemars 0.8.22",
"self_cell",
"serde",
"serde-untagged",
"serde-value",
"serde_cbor",
"serde_json",
"serde_variant",
"sha2 0.11.0",
"smallvec",
"sparse",
"strum",
"sysinfo 0.38.4",
"tap",
"tempfile",
"thiserror 2.0.18",
"tinyvec",
"uuid",
"validator",
"vaporetto",
"zerocopy",
]
[[package]] [[package]]
name = "selectors" name = "selectors"
version = "0.36.1" version = "0.36.1"
@ -7050,39 +6875,6 @@ dependencies = [
"digest 0.11.3", "digest 0.11.3",
] ]
[[package]]
name = "shard"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"ahash",
"chrono",
"common",
"fs-err",
"fs4",
"indexmap 2.14.0",
"itertools",
"log",
"ordered-float 5.3.0",
"parking_lot",
"rand 0.10.2",
"rmp-serde",
"schemars 0.8.22",
"segment",
"serde",
"serde_cbor",
"serde_json",
"smallvec",
"sparse",
"strum",
"tempfile",
"thiserror 2.0.18",
"tonic",
"uuid",
"validator",
"wal",
]
[[package]] [[package]]
name = "shared_child" name = "shared_child"
version = "1.0.0" version = "1.0.0"
@ -7223,32 +7015,6 @@ dependencies = [
"smallvec", "smallvec",
] ]
[[package]]
name = "sparse"
version = "0.1.0"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"bincode 1.3.3",
"bitpacking",
"common",
"fs-err",
"gridstore",
"half 2.7.1",
"itertools",
"log",
"memmap2",
"ordered-float 5.3.0",
"parking_lot",
"rand 0.10.2",
"schemars 0.8.22",
"serde",
"serde_json",
"tempfile",
"typed-arena",
"validator",
"zerocopy",
]
[[package]] [[package]]
name = "spm_precompiled" name = "spm_precompiled"
version = "0.1.4" version = "0.1.4"
@ -7590,20 +7356,6 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "sysinfo"
version = "0.38.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f"
dependencies = [
"libc",
"memchr",
"ntapi",
"objc2-core-foundation",
"objc2-io-kit",
"windows 0.62.2",
]
[[package]] [[package]]
name = "sysinfo" name = "sysinfo"
version = "0.39.6" version = "0.39.6"
@ -8080,7 +7832,7 @@ dependencies = [
"serde_with", "serde_with",
"swift-rs", "swift-rs",
"thiserror 2.0.18", "thiserror 2.0.18",
"toml 0.9.12+spec-1.1.0", "toml 1.1.4+spec-1.1.0",
"url", "url",
"urlpattern", "urlpattern",
"uuid", "uuid",
@ -8260,7 +8012,7 @@ dependencies = [
"esaxx-rs", "esaxx-rs",
"getrandom 0.3.1", "getrandom 0.3.1",
"indicatif", "indicatif",
"itertools", "itertools 0.14.0",
"log", "log",
"macro_rules_attribute", "macro_rules_attribute",
"monostate", "monostate",
@ -8626,12 +8378,6 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "typed-arena"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a"
[[package]] [[package]]
name = "typed-path" name = "typed-path"
version = "0.12.2" version = "0.12.2"
@ -8948,25 +8694,6 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "wal"
version = "0.1.4"
source = "git+https://github.com/SommerEngineering/qdrant.git?rev=462c84d82ced126e4a2b7914544bfde16a509eb1#462c84d82ced126e4a2b7914544bfde16a509eb1"
dependencies = [
"byteorder",
"crc32c",
"docopt",
"env_logger",
"fs-err",
"fs4",
"log",
"memmap2",
"rand 0.10.2",
"rand_distr",
"rustix 1.1.4",
"serde",
]
[[package]] [[package]]
name = "walkdir" name = "walkdir"
version = "2.5.0" version = "2.5.0"

View File

@ -67,7 +67,7 @@ tempfile = "3.27.0"
strum_macros = "0.28.0" strum_macros = "0.28.0"
sysinfo = "0.39.6" sysinfo = "0.39.6"
bytes = "1.12.1" bytes = "1.12.1"
qdrant-edge = "0.7.2" qdrant-edge = "0.8.0"
# Prompt-injection detection. `regex` gives us linear-time matching without backtracking, so # Prompt-injection detection. `regex` gives us linear-time matching without backtracking, so
# a hostile document cannot make a scan blow up, and `aho-corasick` matches the ~1600 fixed # a hostile document cannot make a scan blow up, and `aho-corasick` matches the ~1600 fixed
@ -79,12 +79,9 @@ image = { version = "0.25.10", default-features = false, features = ["jpeg", "pn
tokenizers = "0.23.1" tokenizers = "0.23.1"
[patch.crates-io] [patch.crates-io]
# Issue: It was not possible to build qdrant-edge for macOS. See PR 9312: https://github.com/qdrant/qdrant/pull/9312
# State: The PR was merged, but not yet released. We use the git version for now.
qdrant-edge = { git = "https://github.com/SommerEngineering/qdrant.git", rev = "462c84d82ced126e4a2b7914544bfde16a509eb1" }
# Issue: This repo was not updated since 2020. The rand crate was outdated. We patched it to use a newer version of rand. # Issue: This repo was not updated since 2020. The rand crate was outdated. We patched it to use a newer version of rand.
# State: There is a PR for a long time, but it was not merged. We use the git version for now. # State: There is a PR for a long time, but it was not merged. We use the git version for now. Qdrant Edge still depends
# on this crate in version 0.1.2, so the patch stays relevant: https://github.com/asimihsan/permutation-iterator-rs/pull/14
permutation_iterator = { git = "https://github.com/SommerEngineering/permutation-iterator-rs.git", rev = "76836ed316d18dfef530ba908f58481c343e80d7" } permutation_iterator = { git = "https://github.com/SommerEngineering/permutation-iterator-rs.git", rev = "76836ed316d18dfef530ba908f58481c343e80d7" }
[target.'cfg(target_os = "windows")'.dependencies] [target.'cfg(target_os = "windows")'.dependencies]

View File

@ -11,8 +11,9 @@ use qdrant_edge::external::uuid::Uuid;
use qdrant_edge::{ use qdrant_edge::{
Condition, Distance, EdgeConfig, EdgeOptimizersConfig, EdgeShard, EdgeVectorParams, Condition, Distance, EdgeConfig, EdgeOptimizersConfig, EdgeShard, EdgeVectorParams,
FieldCondition, Filter, HnswIndexConfig, Match, MatchValue, NamedQuery, Payload, PointId, FieldCondition, Filter, HnswIndexConfig, Match, MatchValue, NamedQuery, Payload, PointId,
PointInsertOperations, PointOperations, PointStruct, QueryEnum, ScoredPoint, SearchRequest, PointInsertOperations, PointOperations, PointStruct, QueryEnum, QueryRequest, ScoredPoint,
UpdateOperation, ValueVariants, VectorInternal, Vectors, WithPayloadInterface, WithVector, ScoringQuery, UpdateOperation, ValueVariants, VectorInternal, Vectors, WithPayloadInterface,
WithVector,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use tauri::Manager; use tauri::Manager;
@ -306,7 +307,7 @@ impl QdrantEdgeDatabase {
shard.update(UpdateOperation::PointOperation( shard.update(UpdateOperation::PointOperation(
PointOperations::UpsertPoints(PointInsertOperations::PointsList(points)), PointOperations::UpsertPoints(PointInsertOperations::PointsList(points)),
))?; ))?;
shard.flush(); shard.flush()?;
Ok(()) Ok(())
} }
@ -320,18 +321,19 @@ impl QdrantEdgeDatabase {
return Ok(vec![]); return Ok(vec![]);
}; };
let search_results = shard.search(SearchRequest { let search_results = shard.query(QueryRequest {
query: QueryEnum::Nearest(NamedQuery::new( prefetches: Vec::new(),
query: Some(ScoringQuery::Vector(QueryEnum::Nearest(NamedQuery::new(
VectorInternal::Dense(vector), VectorInternal::Dense(vector),
VECTOR_NAME, VECTOR_NAME,
)), )))),
filter: None, filter: None,
params: None, score_threshold: None,
limit: max_matches, limit: max_matches,
offset: 0, offset: 0,
with_payload: Some(WithPayloadInterface::Bool(true)), params: None,
with_vector: Some(WithVector::Bool(false)), with_vector: WithVector::Bool(false),
score_threshold: None, with_payload: WithPayloadInterface::Bool(true),
})?; })?;
Ok(search_results Ok(search_results
@ -348,7 +350,7 @@ impl QdrantEdgeDatabase {
shard.update(UpdateOperation::PointOperation( shard.update(UpdateOperation::PointOperation(
PointOperations::DeletePointsByFilter(match_keyword_filter("file_path", file_path)?), PointOperations::DeletePointsByFilter(match_keyword_filter("file_path", file_path)?),
))?; ))?;
shard.flush(); shard.flush()?;
Ok(()) Ok(())
} }
@ -361,7 +363,7 @@ impl QdrantEdgeDatabase {
if optimized { if optimized {
info!(Source = "Qdrant Edge"; "Optimized vector store '{}'.", store_name); info!(Source = "Qdrant Edge"; "Optimized vector store '{}'.", store_name);
} }
shard.flush(); shard.flush()?;
Ok(()) Ok(())
} }
@ -595,7 +597,7 @@ fn remove_obsolete_qdrant_path(path: &Path) {
fn edge_config(vector_size: usize) -> EdgeConfig { fn edge_config(vector_size: usize) -> EdgeConfig {
EdgeConfig { EdgeConfig {
on_disk_payload: true, on_disk_payload: Some(true),
vectors: HashMap::from([( vectors: HashMap::from([(
VECTOR_NAME.to_string(), VECTOR_NAME.to_string(),
EdgeVectorParams { EdgeVectorParams {
@ -609,13 +611,20 @@ fn edge_config(vector_size: usize) -> EdgeConfig {
}, },
)]), )]),
sparse_vectors: HashMap::new(), sparse_vectors: HashMap::new(),
hnsw_config: hnsw_config(), hnsw_config: Some(hnsw_config()),
quantization_config: None, quantization_config: None,
optimizers: edge_optimizers_config(), optimizers: Some(edge_optimizers_config()),
wal_options: None, wal_options: None,
max_search_threads: None,
search_pool_core: None,
} }
} }
// `on_disk` is deprecated in favor of `memory`, but Qdrant Edge does not re-export the `Memory`
// type, so the new field cannot be named from here. Leaving both unset is not an option either:
// the effective placement would fall back to cached instead of on-disk, which is a real change
// and would have the optimizers rebuild the HNSW graph.
#[allow(deprecated)]
fn hnsw_config() -> HnswIndexConfig { fn hnsw_config() -> HnswIndexConfig {
HnswIndexConfig { HnswIndexConfig {
m: HNSW_M, m: HNSW_M,
@ -623,6 +632,7 @@ fn hnsw_config() -> HnswIndexConfig {
full_scan_threshold: HNSW_FULL_SCAN_THRESHOLD_KB, full_scan_threshold: HNSW_FULL_SCAN_THRESHOLD_KB,
max_indexing_threads: HNSW_MAX_INDEXING_THREADS, max_indexing_threads: HNSW_MAX_INDEXING_THREADS,
on_disk: Some(true), on_disk: Some(true),
memory: None,
payload_m: None, payload_m: None,
inline_storage: None, inline_storage: None,
} }