<divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment"> * This source code is licensed under the CC-by-NC license found in the</span></div>
<divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment"> * LICENSE file in the root directory of this source tree.</span></div>
<divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment">// Copyright 2004-present Facebook. All Rights Reserved</span></div>
<divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment">// -*- c++ -*-</span></div>
<divclass="line"><aname="l00026"></a><spanclass="lineno"> 26</span> <spanclass="comment"> * Throughout the library, vectors are provided as float * pointers.</span></div>
<divclass="line"><aname="l00027"></a><spanclass="lineno"> 27</span> <spanclass="comment"> * Most algorithms can be optimized when several vectors are processed</span></div>
<divclass="line"><aname="l00028"></a><spanclass="lineno"> 28</span> <spanclass="comment"> * (added/searched) together in a batch. In this case, they are passed</span></div>
<divclass="line"><aname="l00029"></a><spanclass="lineno"> 29</span> <spanclass="comment"> * in as a matrix. When n vectors of size d are provided as float * x,</span></div>
<divclass="line"><aname="l00030"></a><spanclass="lineno"> 30</span> <spanclass="comment"> * component j of vector i is</span></div>
<divclass="line"><aname="l00034"></a><spanclass="lineno"> 34</span> <spanclass="comment"> * where 0 <= i < n and 0 <= j < d. In other words, matrices are</span></div>
<divclass="line"><aname="l00035"></a><spanclass="lineno"> 35</span> <spanclass="comment"> * always compact. When specifying the size of the matrix, we call it</span></div>
<divclass="line"><aname="l00036"></a><spanclass="lineno"> 36</span> <spanclass="comment"> * an n*d matrix, which implies a row-major storage.</span></div>
<divclass="line"><aname="l00043"></a><spanclass="lineno"> 43</span> <spanclass="comment">/// Some algorithms support both an inner product vetsion and a L2 search version.</span></div>
<divclass="line"><aname="l00058"></a><spanclass="lineno"> 58</span> <spanclass="comment"> * Currently only asymmetric queries are supported:</span></div>
<divclass="line"><aname="l00059"></a><spanclass="lineno"> 59</span> <spanclass="comment"> * database-to-database queries are not implemented.</span></div>
<divclass="line"><aname="l00064"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4"> 64</a></span> <spanclass="keyword">typedef</span><spanclass="keywordtype">long</span><aclass="code"href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a>; <spanclass="comment">///< all indices are this type</span></div>
<divclass="line"><aname="l00067"></a><spanclass="lineno"><aclass="line"href="structfaiss_1_1Index.html#a6970683faa021b7a6f1a0865c0d4eccd"> 67</a></span> <spanclass="comment"></span><aclass="code"href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a><aclass="code"href="structfaiss_1_1Index.html#a6970683faa021b7a6f1a0865c0d4eccd">ntotal</a>; <spanclass="comment">///< total nb of indexed vectors</span></div>
<divclass="line"><aname="l00070"></a><spanclass="lineno"> 70</span> <spanclass="comment"> /// set if the Index does not require training, or if training is done already</span></div>
<divclass="line"><aname="l00073"></a><spanclass="lineno"> 73</span> <spanclass="comment"> /// type of metric this index uses for search</span></div>
<divclass="line"><aname="l00087"></a><spanclass="lineno"> 87</span> <spanclass="comment"> /** Perform training on a representative set of vectors</span></div>
<divclass="line"><aname="l00096"></a><spanclass="lineno"> 96</span> <spanclass="comment"> /** Add n vectors of dimension d to the index.</span></div>
<divclass="line"><aname="l00098"></a><spanclass="lineno"> 98</span> <spanclass="comment"> * Vectors are implicitly assigned labels ntotal .. ntotal + n - 1</span></div>
<divclass="line"><aname="l00099"></a><spanclass="lineno"> 99</span> <spanclass="comment"> * This function slices the input vectors in chuncks smaller than</span></div>
<divclass="line"><aname="l00100"></a><spanclass="lineno"> 100</span> <spanclass="comment"> * blocksize_add and calls add_core.</span></div>
<divclass="line"><aname="l00101"></a><spanclass="lineno"> 101</span> <spanclass="comment"> * @param x input matrix, size n * d</span></div>
<divclass="line"><aname="l00105"></a><spanclass="lineno"> 105</span> <spanclass="comment"> /** Same as add, but stores xids instead of sequential ids.</span></div>
<divclass="line"><aname="l00107"></a><spanclass="lineno"> 107</span> <spanclass="comment"> * The default implementation fails with an assertion, as it is</span></div>
<divclass="line"><aname="l00108"></a><spanclass="lineno"> 108</span> <spanclass="comment"> * not supported by all indexes.</span></div>
<divclass="line"><aname="l00110"></a><spanclass="lineno"> 110</span> <spanclass="comment"> * @param xids if non-null, ids to store for the vectors (size n)</span></div>
<divclass="line"><aname="l00114"></a><spanclass="lineno"> 114</span> <spanclass="comment"> /** query n vectors of dimension d to the index.</span></div>
<divclass="line"><aname="l00116"></a><spanclass="lineno"> 116</span> <spanclass="comment"> * return at most k vectors. If there are not enough results for a</span></div>
<divclass="line"><aname="l00117"></a><spanclass="lineno"> 117</span> <spanclass="comment"> * query, the result array is padded with -1s.</span></div>
<divclass="line"><aname="l00119"></a><spanclass="lineno"> 119</span> <spanclass="comment"> * @param x input vectors to search, size n * d</span></div>
<divclass="line"><aname="l00120"></a><spanclass="lineno"> 120</span> <spanclass="comment"> * @param labels output labels of the NNs, size n*k</span></div>
<divclass="line"><aname="l00126"></a><spanclass="lineno"> 126</span> <spanclass="comment"> /** query n vectors of dimension d to the index.</span></div>
<divclass="line"><aname="l00128"></a><spanclass="lineno"> 128</span> <spanclass="comment"> * return all vectors with distance < radius. Note that many</span></div>
<divclass="line"><aname="l00129"></a><spanclass="lineno"> 129</span> <spanclass="comment"> * indexes do not implement the range_search (only the k-NN search</span></div>
<divclass="line"><aname="l00130"></a><spanclass="lineno"> 130</span> <spanclass="comment"> * is mandatory).</span></div>
<divclass="line"><aname="l00132"></a><spanclass="lineno"> 132</span> <spanclass="comment"> * @param x input vectors to search, size n * d</span></div>
<divclass="line"><aname="l00139"></a><spanclass="lineno"> 139</span> <spanclass="comment"> /** return the indexes of the k vectors closest to the query x.</span></div>
<divclass="line"><aname="l00141"></a><spanclass="lineno"> 141</span> <spanclass="comment"> * This function is identical as search but only return labels of neighbors.</span></div>
<divclass="line"><aname="l00142"></a><spanclass="lineno"> 142</span> <spanclass="comment"> * @param x input vectors to search, size n * d</span></div>
<divclass="line"><aname="l00143"></a><spanclass="lineno"> 143</span> <spanclass="comment"> * @param labels output labels of the NNs, size n*k</span></div>
<divclass="line"><aname="l00147"></a><spanclass="lineno"> 147</span> <spanclass="comment"> /// removes all elements from the database.</span></div>
<divclass="line"><aname="l00150"></a><spanclass="lineno"> 150</span> <spanclass="comment"> /** removes IDs from the index. Not supported by all indexes</span></div>
<divclass="line"><aname="l00154"></a><spanclass="lineno"> 154</span> <spanclass="comment"> /** Reconstruct a stored vector (or an approximation if lossy coding)</span></div>
<divclass="line"><aname="l00156"></a><spanclass="lineno"> 156</span> <spanclass="comment"> * this function may not be defined for some indexes</span></div>
<divclass="line"><aname="l00157"></a><spanclass="lineno"> 157</span> <spanclass="comment"> * @param key id of the vector to reconstruct</span></div>
<divclass="line"><aname="l00165"></a><spanclass="lineno"> 165</span> <spanclass="comment"> * this function may not be defined for some indexes</span></div>
<divclass="line"><aname="l00171"></a><spanclass="lineno"> 171</span> <spanclass="comment"> /** Computes a residual vector after indexing encoding.</span></div>
<divclass="line"><aname="l00173"></a><spanclass="lineno"> 173</span> <spanclass="comment"> * The residual vector is the difference between a vector and the</span></div>
<divclass="line"><aname="l00174"></a><spanclass="lineno"> 174</span> <spanclass="comment"> * reconstruction that can be decoded from its representation in</span></div>
<divclass="line"><aname="l00175"></a><spanclass="lineno"> 175</span> <spanclass="comment"> * the index. The residual can be used for multiple-stage indexing</span></div>
<divclass="line"><aname="l00176"></a><spanclass="lineno"> 176</span> <spanclass="comment"> * methods, like IndexIVF's methods.</span></div>
<divclass="line"><aname="l00180"></a><spanclass="lineno"> 180</span> <spanclass="comment"> * @param key encoded index, as returned by search and assign</span></div>
<divclass="line"><aname="l00184"></a><spanclass="lineno"> 184</span> <spanclass="comment"> /** Display the actual class name and some more info */</span></div>
<divclass="line"><aname="l00187"></a><spanclass="lineno"> 187</span> <spanclass="comment"> /** Return the typeName of the index (which includes main parameters */</span></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a849361f5f0ab0aba8d419c86f2594191"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a849361f5f0ab0aba8d419c86f2594191">faiss::Index::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_1Index_html_a8bc5d8d1cd0dd7b34b3c98a9f76b4a9c"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a8bc5d8d1cd0dd7b34b3c98a9f76b4a9c">faiss::Index::assign</a></div><divclass="ttdeci">void assign(idx_t n, const float *x, idx_t *labels, idx_t k=1)</div><divclass="ttdef"><b>Definition:</b><ahref="Index_8cpp_source.html#l00024">Index.cpp:24</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_aa6931dfe054b33b02c842ff75f7a0c7f"><divclass="ttname"><ahref="structfaiss_1_1Index.html#aa6931dfe054b33b02c842ff75f7a0c7f">faiss::Index::add_with_ids</a></div><divclass="ttdeci">virtual void add_with_ids(idx_t n, const float *x, const long *xids)</div><divclass="ttdef"><b>Definition:</b><ahref="Index_8cpp_source.html#l00032">Index.cpp:32</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a1b5e9ac70adbce0897dd6c8276ad96f2"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a1b5e9ac70adbce0897dd6c8276ad96f2">faiss::Index::add</a></div><divclass="ttdeci">virtual void add(idx_t n, const float *x)=0</div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a040c6aed1f224f3ea7bf58eebc0c31a4"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">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#l00064">Index.h:64</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a6970683faa021b7a6f1a0865c0d4eccd"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a6970683faa021b7a6f1a0865c0d4eccd">faiss::Index::ntotal</a></div><divclass="ttdeci">idx_t ntotal</div><divclass="ttdoc">total nb of indexed vectors </div><divclass="ttdef"><b>Definition:</b><ahref="Index_8h_source.html#l00067">Index.h:67</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_af8bf7bd97aeed8ad5fc48b242379a68a"><divclass="ttname"><ahref="structfaiss_1_1Index.html#af8bf7bd97aeed8ad5fc48b242379a68a">faiss::Index::remove_ids</a></div><divclass="ttdeci">virtual long remove_ids(const IDSelector &sel)</div><divclass="ttdef"><b>Definition:</b><ahref="Index_8cpp_source.html#l00038">Index.cpp:38</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a8e18f641854b2bde83ecff0a2f9a6f4e"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a8e18f641854b2bde83ecff0a2f9a6f4e">faiss::Index::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="Index_8h_source.html#l00074">Index.h:74</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a6e92732617c4dbe364e7678dd8773a7f"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a6e92732617c4dbe364e7678dd8773a7f">faiss::Index::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="Index_8h_source.html#l00071">Index.h:71</a></div></div>
<divclass="ttc"id="structfaiss_1_1Index_html_a8f67dfd73993e192dc78f2c93d9d9532"><divclass="ttname"><ahref="structfaiss_1_1Index.html#a8f67dfd73993e192dc78f2c93d9d9532">faiss::Index::train</a></div><divclass="ttdeci">virtual void train(idx_t n, const float *x)</div><divclass="ttdef"><b>Definition:</b><ahref="Index_8h_source.html#l00092">Index.h:92</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 vetsion and a L2 search version. </div><divclass="ttdef"><b>Definition:</b><ahref="Index_8h_source.html#l00044">Index.h:44</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hrclass="footer"/><addressclass="footer"><small>
Generated by  <ahref="http://www.doxygen.org/index.html">