Crate faiss [−] [src]
This crate provides high-level bindings to Faiss, the vector similarity search engine.
Preparing
This crate requires Faiss and the C API to be built beforehand by the developer. Please follow the instructions here, and build the dynamic library with the C API (instructions here)
This will result in the dynamic library faiss_c
("libfaiss_c.so" in Linux),
which needs to be installed in a place where your system will pick up. In
Linux, try somewhere in the LD_LIBRARY_PATH
environment variable, such as
"/usr/lib", or try adding a new path to this variable.
GPU support
In order to have GPU support, the gpufaiss_c
library from the main project
needs to be built instead. Then, enable the gpu
Cargo feature for this crate.
[dependencies]
"faiss" = {version = "0.4.0", features = ["gpu"]}
Examples
The Index
trait is one of the center-pieces of this library. Index
implementations can be requested using the index_factory
function:
use faiss::{Index, index_factory, MetricType}; let mut index = index_factory(8, "Flat", MetricType::L2)?; index.add(my_data)?; let result = index.search(my_query, 5)?; for (i, (l, d)) in result.labels.iter() .zip(result.distances.iter()) .enumerate() { println!("#{}: {} (D={})", i + 1, *l, *d); }
With GPU support, create a StandardGpuResources
and use the
into_gpu
and into_cpu
methods to move an index to and from the GPU.
use faiss::{GpuResources, StandardGpuResources, Index, index_factory, MetricType}; let index = index_factory(8, "Flat", MetricType::L2)?; let gpu_res = StandardGpuResources::new()?; let index = index.into_gpu(&gpu_res, 0)?;
Details from the official Faiss APIs still apply. Please visit the Faiss wiki for additional guidance.
Re-exports
pub use index::index_factory; |
pub use index::Index; |
pub use index::ConcurrentIndex; |
pub use index::flat::FlatIndex; |
pub use metric::MetricType; |
pub use gpu::GpuResources; |
pub use gpu::StandardGpuResources; |
pub use index::gpu::GpuIndexImpl; |
Modules
cluster |
Vector clustering interface and implementation. |
error |
Error handling module |
gpu |
Contents for GPU support |
index |
Index interface and implementations |
metric |
Module containing the metric type. |