<divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment"> * Copyright (c) Facebook, Inc. and its affiliates.</span></div>
<divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment"> * This source code is licensed under the MIT license found in the</span></div>
<divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="comment"> * LICENSE file in the root directory of this source tree.</span></div>
<divclass="line"><aname="l00033"></a><spanclass="lineno"> 33</span> <spanclass="comment"> * All queries are symmetric because there is no distinction between codes and</span></div>
<divclass="line"><aname="l00037"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1IndexBinary.html#a01749bbdbd3b7ec6bb9390257ab16c5c"> 37</a></span> <spanclass="keyword">using</span><aclass="code"href="structfaiss_1_1IndexBinary.html#a01749bbdbd3b7ec6bb9390257ab16c5c">idx_t</a> = <aclass="code"href="structfaiss_1_1Index.html#ad3f0d3071f987baabbdd3da4500c87ea">Index::idx_t</a>; <spanclass="comment">///< all indices are this type</span></div>
<divclass="line"><aname="l00042"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1IndexBinary.html#a277c2645b8def11c5d982384098c5380"> 42</a></span> <spanclass="comment"></span><spanclass="keywordtype">int</span><aclass="code"href="structfaiss_1_1IndexBinary.html#a277c2645b8def11c5d982384098c5380">code_size</a>; <spanclass="comment">///< number of bytes per vector ( = d / 8 )</span></div>
<divclass="line"><aname="l00043"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1IndexBinary.html#a41b6759d127475d5fcd2b3982a8f355e"> 43</a></span> <spanclass="comment"></span><aclass="code"href="structfaiss_1_1IndexBinary.html#a01749bbdbd3b7ec6bb9390257ab16c5c">idx_t</a><aclass="code"href="structfaiss_1_1IndexBinary.html#a41b6759d127475d5fcd2b3982a8f355e">ntotal</a>; <spanclass="comment">///< total nb of indexed vectors</span></div>
<divclass="line"><aname="l00046"></a><spanclass="lineno"> 46</span> <spanclass="comment"> /// set if the Index does not require training, or if training is done already</span></div>
<divclass="line"><aname="l00049"></a><spanclass="lineno"> 49</span> <spanclass="comment"> /// type of metric this index uses for search</span></div>
<divclass="line"><aname="l00065"></a><spanclass="lineno"> 65</span> <spanclass="comment"> /** Perform training on a representative set of vectors.</span></div>
<divclass="line"><aname="l00072"></a><spanclass="lineno"> 72</span> <spanclass="comment"> /** Add n vectors of dimension d to the index.</span></div>
<divclass="line"><aname="l00079"></a><spanclass="lineno"> 79</span> <spanclass="comment"> /** Same as add, but stores xids instead of sequential ids.</span></div>
<divclass="line"><aname="l00081"></a><spanclass="lineno"> 81</span> <spanclass="comment"> * The default implementation fails with an assertion, as it is</span></div>
<divclass="line"><aname="l00082"></a><spanclass="lineno"> 82</span> <spanclass="comment"> * not supported by all indexes.</span></div>
<divclass="line"><aname="l00084"></a><spanclass="lineno"> 84</span> <spanclass="comment"> * @param xids if non-null, ids to store for the vectors (size n)</span></div>
<divclass="line"><aname="l00088"></a><spanclass="lineno"> 88</span> <spanclass="comment"> /** Query n vectors of dimension d to the index.</span></div>
<divclass="line"><aname="l00090"></a><spanclass="lineno"> 90</span> <spanclass="comment"> * return at most k vectors. If there are not enough results for a</span></div>
<divclass="line"><aname="l00091"></a><spanclass="lineno"> 91</span> <spanclass="comment"> * query, the result array is padded with -1s.</span></div>
<divclass="line"><aname="l00093"></a><spanclass="lineno"> 93</span> <spanclass="comment"> * @param x input vectors to search, size n * d / 8</span></div>
<divclass="line"><aname="l00094"></a><spanclass="lineno"> 94</span> <spanclass="comment"> * @param labels output labels of the NNs, size n*k</span></div>
<divclass="line"><aname="l00100"></a><spanclass="lineno"> 100</span> <spanclass="comment"> /** Query n vectors of dimension d to the index.</span></div>
<divclass="line"><aname="l00102"></a><spanclass="lineno"> 102</span> <spanclass="comment"> * return all vectors with distance < radius. Note that many</span></div>
<divclass="line"><aname="l00103"></a><spanclass="lineno"> 103</span> <spanclass="comment"> * indexes do not implement the range_search (only the k-NN search</span></div>
<divclass="line"><aname="l00104"></a><spanclass="lineno"> 104</span> <spanclass="comment"> * is mandatory).</span></div>
<divclass="line"><aname="l00106"></a><spanclass="lineno"> 106</span> <spanclass="comment"> * @param x input vectors to search, size n * d / 8</span></div>
<divclass="line"><aname="l00113"></a><spanclass="lineno"> 113</span> <spanclass="comment"> /** Return the indexes of the k vectors closest to the query x.</span></div>
<divclass="line"><aname="l00115"></a><spanclass="lineno"> 115</span> <spanclass="comment"> * This function is identical to search but only returns labels of neighbors.</span></div>
<divclass="line"><aname="l00116"></a><spanclass="lineno"> 116</span> <spanclass="comment"> * @param x input vectors to search, size n * d / 8</span></div>
<divclass="line"><aname="l00117"></a><spanclass="lineno"> 117</span> <spanclass="comment"> * @param labels output labels of the NNs, size n*k</span></div>
<divclass="line"><aname="l00121"></a><spanclass="lineno"> 121</span> <spanclass="comment"> /// Removes all elements from the database.</span></div>
<divclass="line"><aname="l00124"></a><spanclass="lineno"> 124</span> <spanclass="comment"> /** Removes IDs from the index. Not supported by all indexes.</span></div>
<divclass="line"><aname="l00130"></a><spanclass="lineno"> 130</span> <spanclass="comment"> * This function may not be defined for some indexes.</span></div>
<divclass="line"><aname="l00131"></a><spanclass="lineno"> 131</span> <spanclass="comment"> * @param key id of the vector to reconstruct</span></div>
<divclass="line"><aname="l00139"></a><spanclass="lineno"> 139</span> <spanclass="comment"> * This function may not be defined for some indexes.</span></div>
<divclass="line"><aname="l00140"></a><spanclass="lineno"> 140</span> <spanclass="comment"> * @param recons reconstucted vectors (size ni * d / 8)</span></div>
<divclass="line"><aname="l00144"></a><spanclass="lineno"> 144</span> <spanclass="comment"> /** Similar to search, but also reconstructs the stored vectors (or an</span></div>
<divclass="line"><aname="l00145"></a><spanclass="lineno"> 145</span> <spanclass="comment"> * approximation in the case of lossy coding) for the search results.</span></div>
<divclass="line"><aname="l00147"></a><spanclass="lineno"> 147</span> <spanclass="comment"> * If there are not enough results for a query, the resulting array</span></div>
<divclass="line"><aname="l00148"></a><spanclass="lineno"> 148</span> <spanclass="comment"> * is padded with -1s.</span></div>
<divclass="line"><aname="l00156"></a><spanclass="lineno"> 156</span> <spanclass="comment"> /** Display the actual class name and some more info. */</span></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a11bff8bcaa366c563076a3d18f3ae30c"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a11bff8bcaa366c563076a3d18f3ae30c">faiss::IndexBinary::reset</a></div><divclass="ttdeci">virtual void reset()=0</div><divclass="ttdoc">Removes all elements from the database. </div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_ae2b85e2cad27acb06cb9d6d8e600ae02"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#ae2b85e2cad27acb06cb9d6d8e600ae02">faiss::IndexBinary::remove_ids</a></div><divclass="ttdeci">virtual long remove_ids(const IDSelector &sel)</div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8cpp_source.html#l00038">IndexBinary.cpp:38</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a132119ae93e240b54621c5c669853c7f"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a132119ae93e240b54621c5c669853c7f">faiss::IndexBinary::is_trained</a></div><divclass="ttdeci">bool is_trained</div><divclass="ttdoc">set if the Index does not require training, or if training is done already </div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8h_source.html#l00047">IndexBinary.h:47</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a34b7f0f358259d858135555967c6bc79"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a34b7f0f358259d858135555967c6bc79">faiss::IndexBinary::train</a></div><divclass="ttdeci">virtual void train(idx_t n, const uint8_t *x)</div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8cpp_source.html#l00019">IndexBinary.cpp:19</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a277c2645b8def11c5d982384098c5380"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a277c2645b8def11c5d982384098c5380">faiss::IndexBinary::code_size</a></div><divclass="ttdeci">int code_size</div><divclass="ttdoc">number of bytes per vector ( = d / 8 ) </div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8h_source.html#l00042">IndexBinary.h:42</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a01749bbdbd3b7ec6bb9390257ab16c5c"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a01749bbdbd3b7ec6bb9390257ab16c5c">faiss::IndexBinary::idx_t</a></div><divclass="ttdeci">Index::idx_t idx_t</div><divclass="ttdoc">all indices are this type </div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8h_source.html#l00037">IndexBinary.h:37</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_ad3f0d3071f987baabbdd3da4500c87ea"><divclass="ttname"><ahref="structfaiss_1_1Index.html#ad3f0d3071f987baabbdd3da4500c87ea">faiss::Index::idx_t</a></div><divclass="ttdeci">long idx_t</div><divclass="ttdoc">all indices are this type </div><divclass="ttdef"><b>Definition:</b><ahref="Index_8h_source.html#l00062">Index.h:62</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a27c32414471c57138b248583fc0c5f8c"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a27c32414471c57138b248583fc0c5f8c">faiss::IndexBinary::assign</a></div><divclass="ttdeci">void assign(idx_t n, const uint8_t *x, idx_t *labels, idx_t k=1)</div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8cpp_source.html#l00028">IndexBinary.cpp:28</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_adec414108d34c63e4a06b6d3f9a3fa35"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#adec414108d34c63e4a06b6d3f9a3fa35">faiss::IndexBinary::range_search</a></div><divclass="ttdeci">virtual void range_search(idx_t n, const uint8_t *x, int radius, RangeSearchResult *result) const </div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8cpp_source.html#l00023">IndexBinary.cpp:23</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a68a24abdf241eb98372b7d6fbd8d3891"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a68a24abdf241eb98372b7d6fbd8d3891">faiss::IndexBinary::add_with_ids</a></div><divclass="ttdeci">virtual void add_with_ids(idx_t n, const uint8_t *x, const long *xids)</div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8cpp_source.html#l00034">IndexBinary.cpp:34</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a41b6759d127475d5fcd2b3982a8f355e"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a41b6759d127475d5fcd2b3982a8f355e">faiss::IndexBinary::ntotal</a></div><divclass="ttdeci">idx_t ntotal</div><divclass="ttdoc">total nb of indexed vectors </div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8h_source.html#l00043">IndexBinary.h:43</a></div></div>
<divclass="ttc"id="structfaiss_1_1IndexBinary_html_a344529c829717012b530ef9c13b145b7"><divclass="ttname"><ahref="structfaiss_1_1IndexBinary.html#a344529c829717012b530ef9c13b145b7">faiss::IndexBinary::metric_type</a></div><divclass="ttdeci">MetricType metric_type</div><divclass="ttdoc">type of metric this index uses for search </div><divclass="ttdef"><b>Definition:</b><ahref="IndexBinary_8h_source.html#l00050">IndexBinary.h:50</a></div></div>
<divclass="ttc"id="namespacefaiss_html_afd12191c638da74760ff397cf319752c"><divclass="ttname"><ahref="namespacefaiss.html#afd12191c638da74760ff397cf319752c">faiss::MetricType</a></div><divclass="ttdeci">MetricType</div><divclass="ttdoc">Some algorithms support both an inner product version and a L2 search version. </div><divclass="ttdef"><b>Definition:</b><ahref="Index_8h_source.html#l00044">Index.h:44</a></div></div>