Skip to content

Releases: Enet4/faiss-rs

v0.12.1

26 Aug 11:09
Compare
Choose a tag to compare

New

  • Static linking of Faiss is now supported as a Cargo feature (#67 @SkyFan2002)
  • Add GPU support to static linking (#70)
  • add module utils (#65 @ava57r)

Enhancements

Miscellaneous

  • Add build-static job to CI (#69)
  • Clippy lint (#71)

New Contributors

  • Thank you @SkyFan2002 for taking the initiative on supporting static linking (#67)

Full Changelog: v0.12.0...v0.12.1

v0.12.0

29 Jan 13:38
Compare
Choose a tag to compare

Changes

  • Improved type safety of encapsulating index types such as RefineFlatIndex, by restricting FromInnerPtr implementations (#60 @ava57r)
  • Removed TryClone's dependency on FromInnerPtr (#60 @ava57r)

New

  • Native utils API was added to faiss-sys (#54 @ava57r)
  • Added PreTransformIndex::prepend_transform (#59 @ava57r)
  • IndexImpl can now be dynamically cast to an IdMapIndex via into_id_map (#61 @ava57r)
  • Added more methods to Clustering (#58 @ava57r)

Fixes and enhancements

New Contributors

Full Changelog: v0.11.0...v0.12.0

v0.11.0

28 Mar 17:06
Compare
Choose a tag to compare

Changes

  • faiss-sys has been updated to link against Faiss version 1.7.2.
    Please do not forget to update your faiss and faiss_c libraries by building them against the revision pointed by tag v1.7.2. Linking against v1.7.1 may appear to work in some cases, but the API is not backwards compatible! (#52)
  • TryFromInnerPtr::try_from_inner_ptr is now unsafe, since it cannot provide the checks required to ensure memory safety. (#53)

New

  • io method read_index_with_flags allows for memory mapping to some index types (#50 @mooreniemi)
  • TryClone trait, for cloning an index (#44 @ava57r)
  • UpcastIndex trait (#43 @ava57r)

Fixes and Enhancements

  • Fixed ownership mistakes in IVFFlatIndexImpl (#42 @ava57r)
  • Implemented to_gpu for some of the new index types (#39 @ava57r)
  • Added Box impl for index types (#41 @ava57r)
  • Used impl_concurrent_index macro for implementing the trait with reduced boilerplate (#34 @ava57r)
  • Fixed README (#32 @ava57r)

Full Changelog: v0.10.0...v0.11.0

v0.10.0

21 Jun 19:51
Compare
Choose a tag to compare

Changes

  • The bindings now depend exclusively on version 1.17.1 of the native Faiss library (#16 #28)
    • See the branch Enet4/c_api_v1.7.1 for a compatible pinned revision
    • look out for the native shared objects, as libfaiss_c.so might no longer statically embed the native faiss objects, and so will need to be copied alongside it.

New

  • New TryFromInnerPtr trait, for obtaining an index from a pointer in a way which can fail (#30 @ava57r)
  • Support for multiple GPUs (#12)
    • via to_gpu_multiple methods
  • RefineFlatIndex (#25 @ava57r)
  • PreTransformIndex (#24 @ava57r)
  • Added getters and setters for verbose property (#23 @ava57r)
  • ScalarQuantizerIndex (#21 #30 @ava57r)
  • IVFFlatIndex (#17 @ava57r)
  • Access to index parameters via ParameterSpace (#14 @ava57r)

Chores

  • Migrated and updated CI using GitHub Actions (#29)

v0.9.0

21 Sep 21:26
Compare
Choose a tag to compare

Breaking changes

  • The crate now depends on Faiss v1.6.3 with the C API patches (branch c_api_v1.6.3). Please update your dynamic libraries before using. (#8 @gensmusic )
  • Updated the clustering API in line with the changes in the native library: see the method iteration_stats for retrieving the stats of the clustering process (#8 @gensmusic)
  • Implementations of Error::description were removed.
  • Removed NativeError::from_last_error from the public API.

v0.8.0

23 Aug 09:41
Compare
Choose a tag to compare

This is a maintenance release, for improved stability.

Breaking changes

  • Low-level bindings have been updated for Faiss 1.5. Please update your native faiss_c objects.
  • New abstraction for vector identifiers Idx, a newtype which makes a distinction between an identifier and no identifier (= -1).
  • set_temp_memory_fraction has been removed from GpuResources, since it is also no longer available in the native API.
  • MetricType::code takes self by move.
  • Methods as_flat and as_lsh have been renamed to into_flat and into_lsh, old names are deprecated.

Other

  • The crate faiss has been migrated to the 2018 edition.

v0.7.0

10 Dec 22:21
Compare
Choose a tag to compare

New

  • Added method remove_ids to Index (@justinaustin)
  • Updated faiss-sys bindings to include native multi-gpu functions.

Other

  • A few documentation improvements.

v0.6.0

13 Jun 19:13
Compare
Choose a tag to compare

New

  • New wrapper IdMap augments an existing index with arbitrary ID mapping.
  • A CPU-backed index can now be cloned with try_clone (if index cloning is supported).

Breaking changes

  • Internal macros are no longer exported. Hopefully no one was using them in the first place.

Minor

  • IndexLsh is now re-exported at the root.
  • Documentation was significantly improved!

LSH Index + Index I/O module

12 May 12:23
Compare
Choose a tag to compare

New

  • Index type LshIndex for locality sensitive hashing indexing.
  • index::io module for reading and writing indices from/to disk.

Breaking changes

  • New error variant BadFilePath for incompatible file path strings in io module.
  • Relies on an updated C API of faiss_c, so you may need to rebuild Faiss with the latest version.

Minor tweaks

  • implement Debug for StandardGpuResources

v0.4.0

03 Apr 16:39
Compare
Choose a tag to compare

New

  • to_gpu and to_cpu methods were brought back, but without consuming the original index. Unlike in into_gpu, both indexes can be used separately and are independent from each other.
  • Added slicker FlatIndex::new_l2 and FlatIndex::new_ip constructors.
  • FlatIndex is now reachable at the crate's root.

Breaking Change

  • GpuIndexImpl::from_cpu is no longer in the public API (its use was already ill advised).
  • Invalid description input to index_factory will return a new error variant instead of panicking.

Fixes

  • Documentation on indexes and GPU support was significantly improved.