Python faiss.IndexIVFFlat() Examples
The following are 4
code examples of faiss.IndexIVFFlat().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
faiss
, or try the search function
.
Example #1
Source File: faiss.py From gntp with MIT License | 7 votes |
def _build_approximate_index(self, data: np.ndarray): dimensionality = data.shape[1] nlist = 100 if data.shape[0] > 100 else 2 if self.kernel_name in {'rbf'}: quantizer = faiss.IndexFlatL2(dimensionality) cpu_index_flat = faiss.IndexIVFFlat(quantizer, dimensionality, nlist, faiss.METRIC_L2) else: quantizer = faiss.IndexFlatIP(dimensionality) cpu_index_flat = faiss.IndexIVFFlat(quantizer, dimensionality, nlist) gpu_index_ivf = faiss.index_cpu_to_gpu(self.resource, 0, cpu_index_flat) gpu_index_ivf.train(data) gpu_index_ivf.add(data) self.index = gpu_index_ivf
Example #2
Source File: faiss.py From ann-benchmarks with MIT License | 5 votes |
def fit(self, X): if self._metric == 'angular': X = sklearn.preprocessing.normalize(X, axis=1, norm='l2') if X.dtype != numpy.float32: X = X.astype(numpy.float32) self.quantizer = faiss.IndexFlatL2(X.shape[1]) index = faiss.IndexIVFFlat( self.quantizer, X.shape[1], self._n_list, faiss.METRIC_L2) index.train(X) index.add(X) self.index = index
Example #3
Source File: approximate_als.py From implicit with MIT License | 4 votes |
def fit(self, Ciu, show_progress=True): import faiss # train the model super(FaissAlternatingLeastSquares, self).fit(Ciu, show_progress) self.quantizer = faiss.IndexFlat(self.factors) if self.use_gpu: self.gpu_resources = faiss.StandardGpuResources() item_factors = self.item_factors.astype('float32') if self.approximate_recommend: log.debug("Building faiss recommendation index") # build up a inner product index here if self.use_gpu: index = faiss.GpuIndexIVFFlat(self.gpu_resources, self.factors, self.nlist, faiss.METRIC_INNER_PRODUCT) else: index = faiss.IndexIVFFlat(self.quantizer, self.factors, self.nlist, faiss.METRIC_INNER_PRODUCT) index.train(item_factors) index.add(item_factors) index.nprobe = self.nprobe self.recommend_index = index if self.approximate_similar_items: log.debug("Building faiss similar items index") # likewise build up cosine index for similar_items, using an inner product # index on normalized vectors` norms = numpy.linalg.norm(item_factors, axis=1) norms[norms == 0] = 1e-10 normalized = (item_factors.T / norms).T.astype('float32') if self.use_gpu: index = faiss.GpuIndexIVFFlat(self.gpu_resources, self.factors, self.nlist, faiss.METRIC_INNER_PRODUCT) else: index = faiss.IndexIVFFlat(self.quantizer, self.factors, self.nlist, faiss.METRIC_INNER_PRODUCT) index.train(normalized) index.add(normalized) index.nprobe = self.nprobe self.similar_items_index = index
Example #4
Source File: knn.py From learn-to-cluster with MIT License | 4 votes |
def __init__(self, feats, k, index_path='', index_key='', nprobe=128, omp_num_threads=None, rebuild_index=True, verbose=True, **kwargs): import faiss if omp_num_threads is not None: faiss.omp_set_num_threads(omp_num_threads) self.verbose = verbose with Timer('[faiss] build index', verbose): if index_path != '' and not rebuild_index and os.path.exists( index_path): print('[faiss] read index from {}'.format(index_path)) index = faiss.read_index(index_path) else: feats = feats.astype('float32') size, dim = feats.shape index = faiss.IndexFlatIP(dim) if index_key != '': assert index_key.find( 'HNSW') < 0, 'HNSW returns distances insted of sims' metric = faiss.METRIC_INNER_PRODUCT nlist = min(4096, 8 * round(math.sqrt(size))) if index_key == 'IVF': quantizer = index index = faiss.IndexIVFFlat(quantizer, dim, nlist, metric) else: index = faiss.index_factory(dim, index_key, metric) if index_key.find('Flat') < 0: assert not index.is_trained index.train(feats) index.nprobe = min(nprobe, nlist) assert index.is_trained print('nlist: {}, nprobe: {}'.format(nlist, nprobe)) index.add(feats) if index_path != '': print('[faiss] save index to {}'.format(index_path)) mkdir_if_no_exists(index_path) faiss.write_index(index, index_path) with Timer('[faiss] query topk {}'.format(k), verbose): knn_ofn = index_path + '.npz' if os.path.exists(knn_ofn): print('[faiss] read knns from {}'.format(knn_ofn)) self.knns = np.load(knn_ofn)['data'] else: sims, nbrs = index.search(feats, k=k) self.knns = [(np.array(nbr, dtype=np.int32), 1 - np.array(sim, dtype=np.float32)) for nbr, sim in zip(nbrs, sims)]