faiss/c_api/IndexIVFFlat_c.h
Eduardo Pinho 9efdd8d427 [C API] Additional API coverage: IndexLSH, I/O, meta-indexes (#425)
* [c_api] leverage index downcast

- make index downcast declaration+definition possible with macros
- use macros on existing index types

* [c_api] Add IndexLSH to C API

* [c_api] Add Index IO interface

- new header index_io_c.h for access to the index_io.h API
- function`faiss_write_index` and overloads for dumping index to a file
- function`faiss_read_index` and overloads for reading index from a file
- function`faiss_clone_index` for cloning an index
- update C example to save index to a file

* [c_api] Add IndexIDMap and IndexShards API
2018-05-02 13:39:59 +02:00

60 lines
1.6 KiB
C

/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD+Patents license found in the
* LICENSE file in the root directory of this source tree.
*/
// Copyright 2004-present Facebook. All Rights Reserved.
// -*- c -*-
#ifndef FAISS_INDEX_IVF_FLAT_C_H
#define FAISS_INDEX_IVF_FLAT_C_H
#include "faiss_c.h"
#include "Index_c.h"
#include "Clustering_c.h"
#ifdef __cplusplus
extern "C" {
#endif
/** Inverted file with stored vectors. Here the inverted file
* pre-selects the vectors to be searched, but they are not otherwise
* encoded, the code array just contains the raw float entries.
*/
FAISS_DECLARE_CLASS(IndexIVFFlat)
FAISS_DECLARE_DESTRUCTOR(IndexIVFFlat)
FAISS_DECLARE_INDEX_DOWNCAST(IndexIVFFlat)
int faiss_IndexIVFFlat_new(FaissIndexIVFFlat** p_index);
int faiss_IndexIVFFlat_new_with(FaissIndexIVFFlat** p_index,
FaissIndex* quantizer, size_t d, size_t nlist);
int faiss_IndexIVFFlat_new_with_metric(
FaissIndexIVFFlat** p_index, FaissIndex* quantizer, size_t d, size_t nlist,
FaissMetricType metric);
int faiss_IndexIVFFlat_add_core(FaissIndexIVFFlat* index, idx_t n,
const float * x, const long *xids, const long *precomputed_idx);
/** Update a subset of vectors.
*
* The index must have a direct_map
*
* @param nv nb of vectors to update
* @param idx vector indices to update, size nv
* @param v vectors of new values, size nv*d
*/
int faiss_IndexIVFFlat_update_vectors(FaissIndexIVFFlat* index, int nv,
idx_t *idx, const float *v);
#ifdef __cplusplus
}
#endif
#endif