* On Windows ARM64 builds, disable usage of neon
* Also disable optimized popcount on Windows ARM64
* fix quantization build
* revert changes in BQ
---------
Co-authored-by: Ivan Pleshkov <pleshkov.ivan@gmail.com>
* Fix unecessary unsafe in Clippy 1.87
* bump Rust version for intrinsics safe API
* ignore until we can bump the MSRV with cargo-chef
* remove unecessary change
* mark clearly as TODO
* Bump Rust edition to 2024
* gen is a reserved keyword now
* Remove ref mut on references
* Mark extern C as unsafe
* Wrap unsafe function bodies in unsafe block
* Geo hash implements Copy, don't reference but pass by value instead
* Replace secluded self import with parent
* Update execute_cluster_read_operation with new match semantics
* Fix lifetime issue
* Replace map_or with is_none_or
* set_var is unsafe now
* Reformat
* bump and migrate to rand 0.9.0
also bump rand_distr to 0.5.0 to match it
* Migrate AVX2 and SSE implementations
* Remove unused thread_rng placeholders
* More random migrations
* Migrate GPU tests
* bump seed
---------
Co-authored-by: timvisee <tim@visee.me>
Co-authored-by: Arnaud Gourlay <arnaud.gourlay@gmail.com>
* Fix division by zero in SSE2, AVX and NEON implementations of u8 cosine
* Add zero division tests
* Fix incorrect test name
* Also test inverse, and add naive implementation test
* Use correct function in NEON test
* Fix NEON feature check
* Store denominator
* byte storage with quantization
raw scorer integration
config and test
are you happy fmt
fn renamings
cow refactor
use quantization branch
quantization update
* are you happy clippy
* don't use distance in quantized scorers
* fix build
* add fn quantization_preprocess
* apply preprocessing for only cosine float metric
* fix sparse vectors tests
* update openapi
* more complicated integration test
* update openapi comment
* mmap byte storages support
* fix async test
* move .unwrap closer to the actual check of the vector presence
* fmt
* remove distance similarity function
* avoid copying data while working with cow
---------
Co-authored-by: generall <andrey@vasnetsov.com>
* Add normalization stability test
* Move stable preprocess test closer to implementation
* Make renormalizing stable, keep old values if within certain threshold
* Test with 1500 dimensions
* make SimpleDenseVectorStorage generic against VectorElementType
* make generic loading of the simple dense storage
* move memmap_dense_vector_storage
* move mmap_dense_vectors
* move appendable_mmap_dense_vector_storage
* fmt
* move dynamic_mmap_flags
* move simple_dense_vector_storage
* move PrimitiveVectorElement
* fmt
* make MmapDenseVectors generic
* make MemmapDenseVectorStorage generic to data type
* fix UringReader on non-linux platform
* make ChunkedMmapVectors generic of the vector element type
* make AppendableMmapDenseVectorStorage generic of the vector element type
* make PrimitiveVectorElement trait even more global
* make Metric generic over vector element type and refactor it into GenericMetric
* make DenseVectorStorage generic over vector element
* remove temorary trait for migrating Metric
* make CustomQueryScorer generic against vector element type
* refactor PrimitiveVectorElement to use Cow and allow owned conversions
* Move score post-processing out of metric object
* naive implementation of metrics for byte vectors
* create and connect discovery http and grpc interfaces
* add openapi tests
* fix bad rebase
* Add better descriptions
* remove numpy from openapi tests
* fix rebase artifact
* remove already addressed TODO
* add more tests
* 🤡🔫 (cfg batch handler)
* add timeout query param for discover requests
* More gRPC validation
* make fields pydantic_openapi_generator_v3 friendly
* `context_pairs` -> `context` with struct for pairs
* discovery api is only discovery or context,
move struct description to fields
---------
Co-authored-by: timvisee <tim@visee.me>
* many named vectors per point (segment-level)
* operation result for dim function
* beautifulized vector name
* fix naming bug
* segment version migration
* fmt
* add segment tests
* are you happy clippy
* fix build
* [WIP] many named vectors per point (collection-level) (#975)
* config and search
* fix placeholders for proxy segment move
* remove VectorType from collection
* are you happy fmt
* vectors in grps messages
* create collections with vectors
* segment holder fixes
* are you happy fmt
* remove default vector name placeholders
* are you happy fmt
* are you happy clippy
* fix build
* fix web api
* are you happy clippy
* are you happy fmt
* record vector&vectors
* openapi update
* fix openapi integration tests
* segment builder fix todo
* vector names for update from segment
* remove unwrap
* backward compatibility
* upd openapi
* backward compatible PointStruct
* upd openapi
* fix record back-comp
* fmt
* vector configuration backward compatibility
* fix vetor storage size estimation
* fmt
* multi-vec segment test + index test
* fmt
* api integration tests
* [WIP] Named vectors struct (#1002)
* move to separate file
* named vectors as struct
* use cow
* fix build
* keys iterator
* avoid copy in PointStruct -> get_vectors
* avoid another copy
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>