mirror of
https://github.com/facebookresearch/faiss.git
synced 2025-06-03 21:54:02 +08:00
various bugfixes from github issues kmean with some frozen centroids GPU better tiling for large flat datasets default AVX for vector ops
285 lines
49 KiB
HTML
285 lines
49 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.5"/>
|
|
<title>Faiss: /data/users/matthijs/github_faiss/faiss/IndexScalarQuantizer.h Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { searchBox.OnSelectItem(0); });
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">Faiss
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.5 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="files.html"><span>File List</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Friends</a></div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">/data/users/matthijs/github_faiss/faiss/IndexScalarQuantizer.h</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/**</span></div>
|
|
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2015-present, Facebook, Inc.</span></div>
|
|
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * All rights reserved.</span></div>
|
|
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> *</span></div>
|
|
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * This source code is licensed under the BSD+Patents license found in the</span></div>
|
|
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * LICENSE file in the root directory of this source tree.</span></div>
|
|
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> */</span></div>
|
|
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div>
|
|
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#ifndef FAISS_INDEX_SCALAR_QUANTIZER_H</span></div>
|
|
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor"></span><span class="preprocessor">#define FAISS_INDEX_SCALAR_QUANTIZER_H</span></div>
|
|
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor"></span></div>
|
|
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <stdint.h></span></div>
|
|
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div>
|
|
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
|
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include <vector></span></div>
|
|
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div>
|
|
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
|
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "IndexIVF.h"</span></div>
|
|
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div>
|
|
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div>
|
|
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">namespace </span>faiss {</div>
|
|
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/**</span></div>
|
|
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * The uniform quantizer has a range [vmin, vmax]. The range can be</span></div>
|
|
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * the same for all dimensions (uniform) or specific per dimension</span></div>
|
|
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * (default).</span></div>
|
|
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div>
|
|
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div>
|
|
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div>
|
|
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html"> 30</a></span> <span class="keyword">struct </span><a class="code" href="structfaiss_1_1ScalarQuantizer.html">ScalarQuantizer</a> {</div>
|
|
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
|
|
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e"> 32</a></span>  <span class="keyword">enum</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e">QuantizerType</a> {</div>
|
|
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952ea1650389e3efa052ff60177d502328a2c"> 33</a></span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952ea1650389e3efa052ff60177d502328a2c">QT_8bit</a>, <span class="comment">///< 8 bits per component</span></div>
|
|
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952eacd3d1bd71533a7bc52149e4b3d1db13b"> 34</a></span> <span class="comment"></span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952eacd3d1bd71533a7bc52149e4b3d1db13b">QT_4bit</a>, <span class="comment">///< 4 bits per component</span></div>
|
|
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952ea029f07a15ea64e7e73daaf9633ac429a"> 35</a></span> <span class="comment"></span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952ea029f07a15ea64e7e73daaf9633ac429a">QT_8bit_uniform</a>, <span class="comment">///< same, shared range for all dimensions</span></div>
|
|
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"></span> QT_4bit_uniform,</div>
|
|
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  };</div>
|
|
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
|
|
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e">QuantizerType</a> qtype;</div>
|
|
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> /** The uniform encoder can estimate the range of representable</span></div>
|
|
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> * values of the unform encoder using different statistics. Here</span></div>
|
|
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"> * rs = rangestat_arg */</span></div>
|
|
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
|
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// rangestat_arg.</span></div>
|
|
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06"> 46</a></span>  <span class="keyword">enum</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06">RangeStat</a> {</div>
|
|
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06aa52f2f14616c61c04baf6323d43588fd"> 47</a></span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06aa52f2f14616c61c04baf6323d43588fd">RS_minmax</a>, <span class="comment">///< [min - rs*(max-min), max + rs*(max-min)]</span></div>
|
|
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06afb4b9f4ee9003fa0193e6de69632f7a0"> 48</a></span> <span class="comment"></span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06afb4b9f4ee9003fa0193e6de69632f7a0">RS_meanstd</a>, <span class="comment">///< [mean - std * rs, mean + std * rs]</span></div>
|
|
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06ae41cccec3a7acbcb3a47fa63c2bfb4c8"> 49</a></span> <span class="comment"></span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06ae41cccec3a7acbcb3a47fa63c2bfb4c8">RS_quantiles</a>, <span class="comment">///< [Q(rs), Q(1-rs)]</span></div>
|
|
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06ab0709ff74c1b882b64a7fdd7ca5df9a3"> 50</a></span> <span class="comment"></span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06ab0709ff74c1b882b64a7fdd7ca5df9a3">RS_optim</a>, <span class="comment">///< alternate optimization of reconstruction error</span></div>
|
|
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"></span> };</div>
|
|
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
|
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06">RangeStat</a> rangestat;</div>
|
|
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">float</span> rangestat_arg;</div>
|
|
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment"> /// dimension of input vectors</span></div>
|
|
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#acd88af01ad1d06560cecc30bc38aef49"> 57</a></span> <span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#acd88af01ad1d06560cecc30bc38aef49">d</a>;</div>
|
|
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment"> /// bytes per vector</span></div>
|
|
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a647b8774e4cd8ca5623a194f5c7f8a33"> 60</a></span> <span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a647b8774e4cd8ca5623a194f5c7f8a33">code_size</a>;</div>
|
|
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment"> /// trained values (including the range)</span></div>
|
|
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structfaiss_1_1ScalarQuantizer.html#a30b411b10780a74079bbbfaff678c86f"> 63</a></span> <span class="comment"></span> std::vector<float> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a30b411b10780a74079bbbfaff678c86f">trained</a>;</div>
|
|
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div>
|
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html">ScalarQuantizer</a> (<span class="keywordtype">size_t</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#acd88af01ad1d06560cecc30bc38aef49">d</a>, <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e">QuantizerType</a> qtype);</div>
|
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html">ScalarQuantizer</a> ();</div>
|
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
|
|
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> train (<span class="keywordtype">size_t</span> n, <span class="keyword">const</span> <span class="keywordtype">float</span> *x);</div>
|
|
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div>
|
|
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"> /// same as compute_code for several vectors</span></div>
|
|
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a2bccf276565c4f80fed3d0c715c58816">compute_codes</a> (<span class="keyword">const</span> <span class="keywordtype">float</span> * x,</div>
|
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  uint8_t * codes,</div>
|
|
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">size_t</span> n) <span class="keyword">const</span> ;</div>
|
|
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> /// decode a vector from a given code (or n vectors if third argument)</span></div>
|
|
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a7ab9e9158da1777d45e6f9bf73bfd489">decode</a> (<span class="keyword">const</span> uint8_t *code, <span class="keywordtype">float</span> *x, <span class="keywordtype">size_t</span> n) <span class="keyword">const</span>;</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div>
|
|
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div>
|
|
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="structfaiss_1_1IndexScalarQuantizer.html"> 82</a></span> <span class="keyword">struct </span><a class="code" href="structfaiss_1_1IndexScalarQuantizer.html">IndexScalarQuantizer</a>: <a class="code" href="structfaiss_1_1Index.html">Index</a> {<span class="comment"></span></div>
|
|
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> /// Used to encode the vectors</span></div>
|
|
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="structfaiss_1_1IndexScalarQuantizer.html#a71381f74754d8a54812e80af46a2a83a"> 84</a></span> <span class="comment"></span> <a class="code" href="structfaiss_1_1ScalarQuantizer.html">ScalarQuantizer</a> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#a71381f74754d8a54812e80af46a2a83a">sq</a>;</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment"> /// Codes. Size ntotal * pq.code_size</span></div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structfaiss_1_1IndexScalarQuantizer.html#a861fa059f9d4ced9147e08193a2be9be"> 87</a></span> <span class="comment"></span> std::vector<uint8_t> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#a861fa059f9d4ced9147e08193a2be9be">codes</a>;</div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">size_t</span> code_size;</div>
|
|
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> /** Constructor.</span></div>
|
|
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment"> *</span></div>
|
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment"> * @param d dimensionality of the input vectors</span></div>
|
|
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"> * @param M number of subquantizers</span></div>
|
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> * @param nbits number of bit per subvector index</span></div>
|
|
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> */</span></div>
|
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html">IndexScalarQuantizer</a> (<span class="keywordtype">int</span> <a class="code" href="structfaiss_1_1Index.html#a2a002388d2c081c2dbab8508dcefe73d">d</a>,</div>
|
|
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e">ScalarQuantizer::QuantizerType</a> qtype,</div>
|
|
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="namespacefaiss.html#afd12191c638da74760ff397cf319752c">MetricType</a> metric = METRIC_L2);</div>
|
|
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div>
|
|
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html">IndexScalarQuantizer</a> ();</div>
|
|
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div>
|
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#a300647e9cdac9acd160f2c55c610056b">train</a>(<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n, <span class="keyword">const</span> <span class="keywordtype">float</span>* x) <span class="keyword">override</span>;</div>
|
|
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#ad49602f9ecfcaa2ec8737a449b69ccd7">add</a>(<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n, <span class="keyword">const</span> <span class="keywordtype">float</span>* x) <span class="keyword">override</span>;</div>
|
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div>
|
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#abf24732c29106bb808148c3d30599662">search</a>(</div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n,</div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">const</span> <span class="keywordtype">float</span>* x,</div>
|
|
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> k,</div>
|
|
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">float</span>* distances,</div>
|
|
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a>* labels) <span class="keyword">const override</span>;</div>
|
|
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div>
|
|
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#af0d6b901a2a02fff34e5c7c1ea5b8d55">reset</a>() <span class="keyword">override</span>;</div>
|
|
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div>
|
|
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#a06e6935b75f0b209f65fffa1c9e1477c">reconstruct_n</a>(<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> i0, <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> ni, <span class="keywordtype">float</span>* recons) <span class="keyword">const override</span>;</div>
|
|
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div>
|
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexScalarQuantizer.html#a8fb8680f64465d643d96119da58099f3">reconstruct</a>(<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> key, <span class="keywordtype">float</span>* recons) <span class="keyword">const override</span>;</div>
|
|
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div>
|
|
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> };</div>
|
|
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
|
|
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"></span></div>
|
|
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> /** An IVF implementation where the components of the residuals are</span></div>
|
|
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment"> * encoded with a scalar uniform quantizer. All distance computations</span></div>
|
|
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"> * are asymmetric, so the encoded vectors are decoded and approximate</span></div>
|
|
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment"> * distances are computed.</span></div>
|
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"> */</span></div>
|
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div>
|
|
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="structfaiss_1_1IndexIVFScalarQuantizer.html"> 129</a></span> <span class="keyword">struct </span><a class="code" href="structfaiss_1_1IndexIVFScalarQuantizer.html">IndexIVFScalarQuantizer</a>:<a class="code" href="structfaiss_1_1IndexIVF.html">IndexIVF</a> {</div>
|
|
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html">ScalarQuantizer</a> sq;</div>
|
|
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div>
|
|
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="structfaiss_1_1IndexIVFScalarQuantizer.html">IndexIVFScalarQuantizer</a>(<a class="code" href="structfaiss_1_1Index.html">Index</a> *<a class="code" href="structfaiss_1_1IndexIVF.html#a4b40cc7a70dff41196a3b8769586667a">quantizer</a>, <span class="keywordtype">size_t</span> <a class="code" href="structfaiss_1_1Index.html#a2a002388d2c081c2dbab8508dcefe73d">d</a>, <span class="keywordtype">size_t</span> <a class="code" href="structfaiss_1_1IndexIVF.html#ab38fde4c923abefc4185eb7450b5b95b">nlist</a>,</div>
|
|
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e">ScalarQuantizer::QuantizerType</a> qtype,</div>
|
|
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="namespacefaiss.html#afd12191c638da74760ff397cf319752c">MetricType</a> metric = METRIC_L2);</div>
|
|
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div>
|
|
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="structfaiss_1_1IndexIVFScalarQuantizer.html">IndexIVFScalarQuantizer</a>();</div>
|
|
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div>
|
|
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexIVFScalarQuantizer.html#ac05d7fbfed59c85d1cf8ae526d279744">train_residual</a>(<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n, <span class="keyword">const</span> <span class="keywordtype">float</span>* x) <span class="keyword">override</span>;</div>
|
|
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div>
|
|
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexIVFScalarQuantizer.html#afa95c17787b7e3dbed9309b440d4d748">add_with_ids</a>(<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n, <span class="keyword">const</span> <span class="keywordtype">float</span>* x, <span class="keyword">const</span> <span class="keywordtype">long</span>* xids) <span class="keyword">override</span>;</div>
|
|
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div>
|
|
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">void</span> <a class="code" href="structfaiss_1_1IndexIVFScalarQuantizer.html#a341e473a62adcb03e07e53f67c1a7358">search_preassigned</a> (<a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> n, <span class="keyword">const</span> <span class="keywordtype">float</span> *x, <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> k,</div>
|
|
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> *<a class="code" href="structfaiss_1_1Index.html#a8bc5d8d1cd0dd7b34b3c98a9f76b4a9c">assign</a>,</div>
|
|
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">const</span> <span class="keywordtype">float</span> *centroid_dis,</div>
|
|
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">float</span> *distances, <a class="code" href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">idx_t</a> *labels,</div>
|
|
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">bool</span> store_pairs) <span class="keyword">const override</span>;</div>
|
|
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div>
|
|
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> };</div>
|
|
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div>
|
|
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div>
|
|
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div>
|
|
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div>
|
|
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div>
|
|
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#endif</span></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVF_html"><div class="ttname"><a href="structfaiss_1_1IndexIVF.html">faiss::IndexIVF</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexIVF_8h_source.html#l00045">IndexIVF.h:45</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a647b8774e4cd8ca5623a194f5c7f8a33"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a647b8774e4cd8ca5623a194f5c7f8a33">faiss::ScalarQuantizer::code_size</a></div><div class="ttdeci">size_t code_size</div><div class="ttdoc">bytes per vector </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00060">IndexScalarQuantizer.h:60</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a1201dbd1611fa5c10782ade5d0e4952e"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952e">faiss::ScalarQuantizer::QuantizerType</a></div><div class="ttdeci">QuantizerType</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00032">IndexScalarQuantizer.h:32</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_abf24732c29106bb808148c3d30599662"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#abf24732c29106bb808148c3d30599662">faiss::IndexScalarQuantizer::search</a></div><div class="ttdeci">void search(idx_t n, const float *x, idx_t k, float *distances, idx_t *labels) const override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00727">IndexScalarQuantizer.cpp:727</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVFScalarQuantizer_html_ac05d7fbfed59c85d1cf8ae526d279744"><div class="ttname"><a href="structfaiss_1_1IndexIVFScalarQuantizer.html#ac05d7fbfed59c85d1cf8ae526d279744">faiss::IndexIVFScalarQuantizer::train_residual</a></div><div class="ttdeci">void train_residual(idx_t n, const float *x) override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00824">IndexScalarQuantizer.cpp:824</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a867ad0000e4ccfd40bbb1e01e7882d06ab0709ff74c1b882b64a7fdd7ca5df9a3"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06ab0709ff74c1b882b64a7fdd7ca5df9a3">faiss::ScalarQuantizer::RS_optim</a></div><div class="ttdoc">alternate optimization of reconstruction error </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00050">IndexScalarQuantizer.h:50</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html">faiss::IndexScalarQuantizer</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00082">IndexScalarQuantizer.h:82</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a1201dbd1611fa5c10782ade5d0e4952ea029f07a15ea64e7e73daaf9633ac429a"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952ea029f07a15ea64e7e73daaf9633ac429a">faiss::ScalarQuantizer::QT_8bit_uniform</a></div><div class="ttdoc">same, shared range for all dimensions </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00035">IndexScalarQuantizer.h:35</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_ad49602f9ecfcaa2ec8737a449b69ccd7"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#ad49602f9ecfcaa2ec8737a449b69ccd7">faiss::IndexScalarQuantizer::add</a></div><div class="ttdeci">void add(idx_t n, const float *x) override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00719">IndexScalarQuantizer.cpp:719</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a1201dbd1611fa5c10782ade5d0e4952eacd3d1bd71533a7bc52149e4b3d1db13b"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952eacd3d1bd71533a7bc52149e4b3d1db13b">faiss::ScalarQuantizer::QT_4bit</a></div><div class="ttdoc">4 bits per component </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00034">IndexScalarQuantizer.h:34</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1Index_html_a8bc5d8d1cd0dd7b34b3c98a9f76b4a9c"><div class="ttname"><a href="structfaiss_1_1Index.html#a8bc5d8d1cd0dd7b34b3c98a9f76b4a9c">faiss::Index::assign</a></div><div class="ttdeci">void assign(idx_t n, const float *x, idx_t *labels, idx_t k=1)</div><div class="ttdef"><b>Definition:</b> <a href="Index_8cpp_source.html#l00023">Index.cpp:23</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_af0d6b901a2a02fff34e5c7c1ea5b8d55"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#af0d6b901a2a02fff34e5c7c1ea5b8d55">faiss::IndexScalarQuantizer::reset</a></div><div class="ttdeci">void reset() override</div><div class="ttdoc">removes all elements from the database. </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00784">IndexScalarQuantizer.cpp:784</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html">faiss::ScalarQuantizer</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00030">IndexScalarQuantizer.h:30</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVFScalarQuantizer_html_afa95c17787b7e3dbed9309b440d4d748"><div class="ttname"><a href="structfaiss_1_1IndexIVFScalarQuantizer.html#afa95c17787b7e3dbed9309b440d4d748">faiss::IndexIVFScalarQuantizer::add_with_ids</a></div><div class="ttdeci">void add_with_ids(idx_t n, const float *x, const long *xids) override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00843">IndexScalarQuantizer.cpp:843</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1Index_html_a2a002388d2c081c2dbab8508dcefe73d"><div class="ttname"><a href="structfaiss_1_1Index.html#a2a002388d2c081c2dbab8508dcefe73d">faiss::Index::d</a></div><div class="ttdeci">int d</div><div class="ttdoc">vector dimension </div><div class="ttdef"><b>Definition:</b> <a href="Index_8h_source.html#l00064">Index.h:64</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVF_html_a4b40cc7a70dff41196a3b8769586667a"><div class="ttname"><a href="structfaiss_1_1IndexIVF.html#a4b40cc7a70dff41196a3b8769586667a">faiss::IndexIVF::quantizer</a></div><div class="ttdeci">Index * quantizer</div><div class="ttdoc">quantizer that maps vectors to inverted lists </div><div class="ttdef"><b>Definition:</b> <a href="IndexIVF_8h_source.html#l00049">IndexIVF.h:49</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_a861fa059f9d4ced9147e08193a2be9be"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#a861fa059f9d4ced9147e08193a2be9be">faiss::IndexScalarQuantizer::codes</a></div><div class="ttdeci">std::vector< uint8_t > codes</div><div class="ttdoc">Codes. Size ntotal * pq.code_size. </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00087">IndexScalarQuantizer.h:87</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_a71381f74754d8a54812e80af46a2a83a"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#a71381f74754d8a54812e80af46a2a83a">faiss::IndexScalarQuantizer::sq</a></div><div class="ttdeci">ScalarQuantizer sq</div><div class="ttdoc">Used to encode the vectors. </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00084">IndexScalarQuantizer.h:84</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1Index_html_a040c6aed1f224f3ea7bf58eebc0c31a4"><div class="ttname"><a href="structfaiss_1_1Index.html#a040c6aed1f224f3ea7bf58eebc0c31a4">faiss::Index::idx_t</a></div><div class="ttdeci">long idx_t</div><div class="ttdoc">all indices are this type </div><div class="ttdef"><b>Definition:</b> <a href="Index_8h_source.html#l00062">Index.h:62</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a867ad0000e4ccfd40bbb1e01e7882d06"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06">faiss::ScalarQuantizer::RangeStat</a></div><div class="ttdeci">RangeStat</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00046">IndexScalarQuantizer.h:46</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVFScalarQuantizer_html"><div class="ttname"><a href="structfaiss_1_1IndexIVFScalarQuantizer.html">faiss::IndexIVFScalarQuantizer</a></div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00129">IndexScalarQuantizer.h:129</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a867ad0000e4ccfd40bbb1e01e7882d06ae41cccec3a7acbcb3a47fa63c2bfb4c8"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06ae41cccec3a7acbcb3a47fa63c2bfb4c8">faiss::ScalarQuantizer::RS_quantiles</a></div><div class="ttdoc">[Q(rs), Q(1-rs)] </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00049">IndexScalarQuantizer.h:49</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVFScalarQuantizer_html_a341e473a62adcb03e07e53f67c1a7358"><div class="ttname"><a href="structfaiss_1_1IndexIVFScalarQuantizer.html#a341e473a62adcb03e07e53f67c1a7358">faiss::IndexIVFScalarQuantizer::search_preassigned</a></div><div class="ttdeci">void search_preassigned(idx_t n, const float *x, idx_t k, const idx_t *assign, const float *centroid_dis, float *distances, idx_t *labels, bool store_pairs) const override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00966">IndexScalarQuantizer.cpp:966</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a867ad0000e4ccfd40bbb1e01e7882d06afb4b9f4ee9003fa0193e6de69632f7a0"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06afb4b9f4ee9003fa0193e6de69632f7a0">faiss::ScalarQuantizer::RS_meanstd</a></div><div class="ttdoc">[mean - std * rs, mean + std * rs] </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00048">IndexScalarQuantizer.h:48</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a7ab9e9158da1777d45e6f9bf73bfd489"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a7ab9e9158da1777d45e6f9bf73bfd489">faiss::ScalarQuantizer::decode</a></div><div class="ttdeci">void decode(const uint8_t *code, float *x, size_t n) const </div><div class="ttdoc">decode a vector from a given code (or n vectors if third argument) </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00685">IndexScalarQuantizer.cpp:685</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a2bccf276565c4f80fed3d0c715c58816"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a2bccf276565c4f80fed3d0c715c58816">faiss::ScalarQuantizer::compute_codes</a></div><div class="ttdeci">void compute_codes(const float *x, uint8_t *codes, size_t n) const </div><div class="ttdoc">same as compute_code for several vectors </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00674">IndexScalarQuantizer.cpp:674</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexIVF_html_ab38fde4c923abefc4185eb7450b5b95b"><div class="ttname"><a href="structfaiss_1_1IndexIVF.html#ab38fde4c923abefc4185eb7450b5b95b">faiss::IndexIVF::nlist</a></div><div class="ttdeci">size_t nlist</div><div class="ttdoc">number of possible key values </div><div class="ttdef"><b>Definition:</b> <a href="IndexIVF_8h_source.html#l00046">IndexIVF.h:46</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a1201dbd1611fa5c10782ade5d0e4952ea1650389e3efa052ff60177d502328a2c"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a1201dbd1611fa5c10782ade5d0e4952ea1650389e3efa052ff60177d502328a2c">faiss::ScalarQuantizer::QT_8bit</a></div><div class="ttdoc">8 bits per component </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00033">IndexScalarQuantizer.h:33</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1Index_html"><div class="ttname"><a href="structfaiss_1_1Index.html">faiss::Index</a></div><div class="ttdef"><b>Definition:</b> <a href="Index_8h_source.html#l00060">Index.h:60</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_a06e6935b75f0b209f65fffa1c9e1477c"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#a06e6935b75f0b209f65fffa1c9e1477c">faiss::IndexScalarQuantizer::reconstruct_n</a></div><div class="ttdeci">void reconstruct_n(idx_t i0, idx_t ni, float *recons) const override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00790">IndexScalarQuantizer.cpp:790</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_a8fb8680f64465d643d96119da58099f3"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#a8fb8680f64465d643d96119da58099f3">faiss::IndexScalarQuantizer::reconstruct</a></div><div class="ttdeci">void reconstruct(idx_t key, float *recons) const override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00800">IndexScalarQuantizer.cpp:800</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a867ad0000e4ccfd40bbb1e01e7882d06aa52f2f14616c61c04baf6323d43588fd"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a867ad0000e4ccfd40bbb1e01e7882d06aa52f2f14616c61c04baf6323d43588fd">faiss::ScalarQuantizer::RS_minmax</a></div><div class="ttdoc">[min - rs*(max-min), max + rs*(max-min)] </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00047">IndexScalarQuantizer.h:47</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_a30b411b10780a74079bbbfaff678c86f"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#a30b411b10780a74079bbbfaff678c86f">faiss::ScalarQuantizer::trained</a></div><div class="ttdeci">std::vector< float > trained</div><div class="ttdoc">trained values (including the range) </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00063">IndexScalarQuantizer.h:63</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1IndexScalarQuantizer_html_a300647e9cdac9acd160f2c55c610056b"><div class="ttname"><a href="structfaiss_1_1IndexScalarQuantizer.html#a300647e9cdac9acd160f2c55c610056b">faiss::IndexScalarQuantizer::train</a></div><div class="ttdeci">void train(idx_t n, const float *x) override</div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8cpp_source.html#l00713">IndexScalarQuantizer.cpp:713</a></div></div>
|
|
<div class="ttc" id="structfaiss_1_1ScalarQuantizer_html_acd88af01ad1d06560cecc30bc38aef49"><div class="ttname"><a href="structfaiss_1_1ScalarQuantizer.html#acd88af01ad1d06560cecc30bc38aef49">faiss::ScalarQuantizer::d</a></div><div class="ttdeci">size_t d</div><div class="ttdoc">dimension of input vectors </div><div class="ttdef"><b>Definition:</b> <a href="IndexScalarQuantizer_8h_source.html#l00057">IndexScalarQuantizer.h:57</a></div></div>
|
|
<div class="ttc" id="namespacefaiss_html_afd12191c638da74760ff397cf319752c"><div class="ttname"><a href="namespacefaiss.html#afd12191c638da74760ff397cf319752c">faiss::MetricType</a></div><div class="ttdeci">MetricType</div><div class="ttdoc">Some algorithms support both an inner product version and a L2 search version. </div><div class="ttdef"><b>Definition:</b> <a href="Index_8h_source.html#l00043">Index.h:43</a></div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.5
|
|
</small></address>
|
|
</body>
|
|
</html>
|