11 #ifndef FAISS_INVERTEDLISTS_IVF_H
12 #define FAISS_INVERTEDLISTS_IVF_H
44 virtual size_t list_size(
size_t list_no)
const = 0;
51 virtual const uint8_t *
get_codes (
size_t list_no)
const = 0;
58 virtual const idx_t *
get_ids (
size_t list_no)
const = 0;
67 virtual idx_t
get_single_id (
size_t list_no,
size_t offset)
const;
72 size_t list_no,
size_t offset)
const;
82 virtual size_t add_entry (
size_t list_no, idx_t theid,
85 virtual size_t add_entries (
86 size_t list_no,
size_t n_entry,
87 const idx_t* ids,
const uint8_t *code) = 0;
89 virtual void update_entry (
size_t list_no,
size_t offset,
90 idx_t
id,
const uint8_t *code);
92 virtual void update_entries (
size_t list_no,
size_t offset,
size_t n_entry,
93 const idx_t *ids,
const uint8_t *code) = 0;
95 virtual void resize (
size_t list_no,
size_t new_size) = 0;
97 virtual void reset ();
130 il (il), ids (il->
get_ids (list_no))
133 const idx_t *
get() {
return ids; }
135 idx_t operator [] (
size_t i)
const {
146 const uint8_t *codes;
156 const uint8_t *
get() {
return codes; }
169 std::vector < std::vector<uint8_t> > codes;
170 std::vector < std::vector<idx_t> >
ids;
174 size_t list_size(
size_t list_no)
const override;
175 const uint8_t *
get_codes (
size_t list_no)
const override;
176 const idx_t *
get_ids (
size_t list_no)
const override;
179 size_t list_no,
size_t n_entry,
180 const idx_t*
ids,
const uint8_t *code)
override;
182 void update_entries (
size_t list_no,
size_t offset,
size_t n_entry,
183 const idx_t *
ids,
const uint8_t *code)
override;
185 void resize (
size_t list_no,
size_t new_size)
override;
195 std::vector<const InvertedLists *>ils;
200 size_t list_size(
size_t list_no)
const override;
201 const uint8_t *
get_codes (
size_t list_no)
const override;
202 const idx_t *
get_ids (
size_t list_no)
const override;
205 void release_ids (
const idx_t *ids)
const override;
207 idx_t
get_single_id (
size_t list_no,
size_t offset)
const override;
210 size_t list_no,
size_t offset)
const override;
213 size_t list_no,
size_t n_entry,
214 const idx_t* ids,
const uint8_t *code)
override;
216 void update_entries (
size_t list_no,
size_t offset,
size_t n_entry,
217 const idx_t *ids,
const uint8_t *code)
override;
219 void resize (
size_t list_no,
size_t new_size)
override;
const uint8_t * get_codes(size_t list_no) const override
simple (default) implementation as an array of inverted lists
const idx_t * get_ids(size_t list_no) const override
virtual const idx_t * get_ids(size_t list_no) const =0
virtual size_t list_size(size_t list_no) const =0
get the size of a list
void release_codes(const uint8_t *codes) const override
release codes returned by get_codes (default implementation is nop
void release_ids(const idx_t *ids) const override
release ids returned by get_ids
ConcatenatedInvertedLists(int nil, const InvertedLists **ils)
build InvertedLists by concatenating nil of them
void merge_from(InvertedLists *oivf, size_t add_id)
move all entries from oivf (empty on output)
virtual idx_t get_single_id(size_t list_no, size_t offset) const
size_t code_size
code size per vector in bytes
virtual const uint8_t * get_single_code(size_t list_no, size_t offset) const
const idx_t * get_ids(size_t list_no) const override
virtual size_t add_entry(size_t list_no, idx_t theid, const uint8_t *code)
add one entry to an inverted list
long idx_t
all indices are this type
const uint8_t * get_single_code(size_t list_no, size_t offset) const override
idx_t get_single_id(size_t list_no, size_t offset) const override
virtual void prefetch_lists(const long *list_nos, int nlist) const
size_t nlist
number of possible key values
size_t list_size(size_t list_no) const override
get the size of a list
std::vector< std::vector< idx_t > > ids
Inverted lists for indexes.
const uint8_t * get_codes(size_t list_no) const override
virtual void release_codes(const uint8_t *codes) const
release codes returned by get_codes (default implementation is nop
virtual const uint8_t * get_codes(size_t list_no) const =0
size_t list_size(size_t list_no) const override
get the size of a list
virtual void release_ids(const idx_t *ids) const
release ids returned by get_ids