blob: ef1a0cd618a0b66911e8cc713a03be026e263c25 [file]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Paimon-cpp: paimon::VectorSearch Struct Reference</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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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 id="projectrow">
<td id="projectalign">
<div id="projectname">Paimon-cpp
</div>
<div id="projectbrief">A high-performance C++ implementation of Apache Paimon</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacepaimon.html">paimon</a></li><li class="navelem"><a class="el" href="structpaimon_1_1_vector_search.html">VectorSearch</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structpaimon_1_1_vector_search-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">paimon::VectorSearch Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code><a class="el" href="structpaimon_1_1_vector_search.html" title="VectorSearch to perform vector similarity search.">VectorSearch</a></code> to perform vector similarity search.
<a href="structpaimon_1_1_vector_search.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="vector__search_8h_source.html">/home/runner/work/paimon-cpp/paimon-cpp/include/paimon/predicate/vector_search.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a6f960bf74c4872082c36d26c05c95bef" id="r_a6f960bf74c4872082c36d26c05c95bef"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">DistanceType</a> { <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95befab142d642e537e694b9314e1a56835f8d">EUCLIDEAN</a> = 1
, <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95befa5dbd0030546e2ee560ccd7c5e4bfcfc8">INNER_PRODUCT</a> = 2
, <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95befae66ba018ef96aa5c78c8fba787f43717">COSINE</a> = 3
, <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95befa696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a> = 128
}</td></tr>
<tr class="memdesc:a6f960bf74c4872082c36d26c05c95bef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration of distance or similarity metrics for vector comparison. <a href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">More...</a><br /></td></tr>
<tr class="separator:a6f960bf74c4872082c36d26c05c95bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a294b3b66e32c02cdd139dc87b3e7bae1" id="r_a294b3b66e32c02cdd139dc87b3e7bae1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">using</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a294b3b66e32c02cdd139dc87b3e7bae1">PreFilter</a> = std::function&lt; <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">bool</a>(<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int64_t</a>)&gt;</td></tr>
<tr class="memdesc:a294b3b66e32c02cdd139dc87b3e7bae1"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>PreFilter</code>: A lightweight pre-filtering function applied <b>before</b> similarity scoring. <br /></td></tr>
<tr class="separator:a294b3b66e32c02cdd139dc87b3e7bae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac60c0f481348c78b9fc8c94261302a93" id="r_ac60c0f481348c78b9fc8c94261302a93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#ac60c0f481348c78b9fc8c94261302a93">VectorSearch</a> (<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::string &amp;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_field_name</a>, <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int32_t</a> <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_limit</a>, <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::vector&lt; <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">float</a> &gt; &amp;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_query</a>, <a class="el" href="structpaimon_1_1_vector_search.html#a294b3b66e32c02cdd139dc87b3e7bae1">PreFilter</a> <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_pre_filter</a>, <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::shared_ptr&lt; <a class="el" href="classpaimon_1_1_predicate.html">Predicate</a> &gt; &amp;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_predicate</a>, <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::optional&lt; <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">DistanceType</a> &gt; &amp;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_distance_type</a>, <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::map&lt; std::string, std::string &gt; &amp;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_options</a>)</td></tr>
<tr class="separator:ac60c0f481348c78b9fc8c94261302a93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbf31025f628951de5c3ff5ba1eabd2a" id="r_afbf31025f628951de5c3ff5ba1eabd2a"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="structpaimon_1_1_vector_search.html">VectorSearch</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#afbf31025f628951de5c3ff5ba1eabd2a">ReplacePreFilter</a> (<a class="el" href="structpaimon_1_1_vector_search.html#a294b3b66e32c02cdd139dc87b3e7bae1">PreFilter</a> <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">_pre_filter</a>) <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a></td></tr>
<tr class="separator:afbf31025f628951de5c3ff5ba1eabd2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:aa03f39649c522c7e757cfb8e43a7dc67" id="r_aa03f39649c522c7e757cfb8e43a7dc67"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#aa03f39649c522c7e757cfb8e43a7dc67">field_name</a></td></tr>
<tr class="memdesc:aa03f39649c522c7e757cfb8e43a7dc67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search field name. <br /></td></tr>
<tr class="separator:aa03f39649c522c7e757cfb8e43a7dc67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00cdd95028fa4e3edf96e71afea26bc4" id="r_a00cdd95028fa4e3edf96e71afea26bc4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a00cdd95028fa4e3edf96e71afea26bc4">limit</a></td></tr>
<tr class="memdesc:a00cdd95028fa4e3edf96e71afea26bc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of top results to return. <br /></td></tr>
<tr class="separator:a00cdd95028fa4e3edf96e71afea26bc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac90fea2a7e3d795ae509cd78f500ee20" id="r_ac90fea2a7e3d795ae509cd78f500ee20"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">float</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#ac90fea2a7e3d795ae509cd78f500ee20">query</a></td></tr>
<tr class="memdesc:ac90fea2a7e3d795ae509cd78f500ee20"><td class="mdescLeft">&#160;</td><td class="mdescRight">The query vector (must match the dimensionality of the indexed vectors). <br /></td></tr>
<tr class="separator:ac90fea2a7e3d795ae509cd78f500ee20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e6dc0d2cf6b4a7791efb80b80a57589" id="r_a6e6dc0d2cf6b4a7791efb80b80a57589"><td class="memItemLeft" align="right" valign="top">std::function&lt; <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">bool</a>(<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int64_t</a>)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a6e6dc0d2cf6b4a7791efb80b80a57589">pre_filter</a></td></tr>
<tr class="memdesc:a6e6dc0d2cf6b4a7791efb80b80a57589"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pre-filter based on <b>global row ids</b>, implemented by leveraging other global index. <br /></td></tr>
<tr class="separator:a6e6dc0d2cf6b4a7791efb80b80a57589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69111b7d3e96471b31f364eef152bbe8" id="r_a69111b7d3e96471b31f364eef152bbe8"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classpaimon_1_1_predicate.html">Predicate</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a69111b7d3e96471b31f364eef152bbe8">predicate</a></td></tr>
<tr class="memdesc:a69111b7d3e96471b31f364eef152bbe8"><td class="mdescLeft">&#160;</td><td class="mdescRight">A runtime filtering condition that may involve graph traversal of structured attributes. <br /></td></tr>
<tr class="separator:a69111b7d3e96471b31f364eef152bbe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d9869e20b0c4fe464aa3afef46de546" id="r_a4d9869e20b0c4fe464aa3afef46de546"><td class="memItemLeft" align="right" valign="top">std::optional&lt; <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">DistanceType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a4d9869e20b0c4fe464aa3afef46de546">distance_type</a></td></tr>
<tr class="memdesc:a4d9869e20b0c4fe464aa3afef46de546"><td class="mdescLeft">&#160;</td><td class="mdescRight">The distance metric to use for this query, if explicitly specified. <br /></td></tr>
<tr class="separator:a4d9869e20b0c4fe464aa3afef46de546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75b4356198ae0c851bea1909e578611e" id="r_a75b4356198ae0c851bea1909e578611e"><td class="memItemLeft" align="right" valign="top">std::map&lt; std::string, std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpaimon_1_1_vector_search.html#a75b4356198ae0c851bea1909e578611e">options</a></td></tr>
<tr class="memdesc:a75b4356198ae0c851bea1909e578611e"><td class="mdescLeft">&#160;</td><td class="mdescRight">A key-value map of query-specific runtime options. <br /></td></tr>
<tr class="separator:a75b4356198ae0c851bea1909e578611e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><code><a class="el" href="structpaimon_1_1_vector_search.html" title="VectorSearch to perform vector similarity search.">VectorSearch</a></code> to perform vector similarity search. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a294b3b66e32c02cdd139dc87b3e7bae1" name="a294b3b66e32c02cdd139dc87b3e7bae1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a294b3b66e32c02cdd139dc87b3e7bae1">&#9670;&#160;</a></span>PreFilter</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">using</a> <a class="el" href="structpaimon_1_1_vector_search.html#a294b3b66e32c02cdd139dc87b3e7bae1">paimon::VectorSearch::PreFilter</a> = std::function&lt;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">bool</a>(<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int64_t</a>)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p><code>PreFilter</code>: A lightweight pre-filtering function applied <b>before</b> similarity scoring. </p>
<p>It operates solely on <b>global row ids</b> and is typically driven by other global index, such as bitmap, or range index. This filter enables early pruning of irrelevant candidates (e.g., "only consider rows with label X"), significantly reducing the search space. Returns true to include the row in vector search process; false to exclude it.</p>
<dl class="section note"><dt>Note</dt><dd>Must be thread-safe. </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a6f960bf74c4872082c36d26c05c95bef" name="a6f960bf74c4872082c36d26c05c95bef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f960bf74c4872082c36d26c05c95bef">&#9670;&#160;</a></span>DistanceType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">enum</a> <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">class</a> <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">paimon::VectorSearch::DistanceType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enumeration of distance or similarity metrics for vector comparison. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a6f960bf74c4872082c36d26c05c95befab142d642e537e694b9314e1a56835f8d" name="a6f960bf74c4872082c36d26c05c95befab142d642e537e694b9314e1a56835f8d"></a>EUCLIDEAN&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a6f960bf74c4872082c36d26c05c95befa5dbd0030546e2ee560ccd7c5e4bfcfc8" name="a6f960bf74c4872082c36d26c05c95befa5dbd0030546e2ee560ccd7c5e4bfcfc8"></a>INNER_PRODUCT&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a6f960bf74c4872082c36d26c05c95befae66ba018ef96aa5c78c8fba787f43717" name="a6f960bf74c4872082c36d26c05c95befae66ba018ef96aa5c78c8fba787f43717"></a>COSINE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a6f960bf74c4872082c36d26c05c95befa696b031073e74bf2cb98e5ef201d4aa3" name="a6f960bf74c4872082c36d26c05c95befa696b031073e74bf2cb98e5ef201d4aa3"></a>UNKNOWN&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ac60c0f481348c78b9fc8c94261302a93" name="ac60c0f481348c78b9fc8c94261302a93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac60c0f481348c78b9fc8c94261302a93">&#9670;&#160;</a></span>VectorSearch()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">paimon::VectorSearch::VectorSearch </td>
<td>(</td>
<td class="paramtype"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::string &amp;&#160;</td>
<td class="paramname"><em>_field_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int32_t</a>&#160;</td>
<td class="paramname"><em>_limit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::vector&lt; <a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">float</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>_query</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structpaimon_1_1_vector_search.html#a294b3b66e32c02cdd139dc87b3e7bae1">PreFilter</a>&#160;</td>
<td class="paramname"><em>_pre_filter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::shared_ptr&lt; <a class="el" href="classpaimon_1_1_predicate.html">Predicate</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>_predicate</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::optional&lt; <a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">DistanceType</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>_distance_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">const</a> std::map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>_options</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="afbf31025f628951de5c3ff5ba1eabd2a" name="afbf31025f628951de5c3ff5ba1eabd2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbf31025f628951de5c3ff5ba1eabd2a">&#9670;&#160;</a></span>ReplacePreFilter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::shared_ptr&lt; <a class="el" href="structpaimon_1_1_vector_search.html">VectorSearch</a> &gt; paimon::VectorSearch::ReplacePreFilter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structpaimon_1_1_vector_search.html#a294b3b66e32c02cdd139dc87b3e7bae1">PreFilter</a>&#160;</td>
<td class="paramname"><em>_pre_filter</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="aa03f39649c522c7e757cfb8e43a7dc67" name="aa03f39649c522c7e757cfb8e43a7dc67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa03f39649c522c7e757cfb8e43a7dc67">&#9670;&#160;</a></span>field_name</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string paimon::VectorSearch::field_name</td>
</tr>
</table>
</div><div class="memdoc">
<p>Search field name. </p>
</div>
</div>
<a id="a00cdd95028fa4e3edf96e71afea26bc4" name="a00cdd95028fa4e3edf96e71afea26bc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00cdd95028fa4e3edf96e71afea26bc4">&#9670;&#160;</a></span>limit</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int32_t</a> paimon::VectorSearch::limit</td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of top results to return. </p>
</div>
</div>
<a id="ac90fea2a7e3d795ae509cd78f500ee20" name="ac90fea2a7e3d795ae509cd78f500ee20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac90fea2a7e3d795ae509cd78f500ee20">&#9670;&#160;</a></span>query</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">float</a>&gt; paimon::VectorSearch::query</td>
</tr>
</table>
</div><div class="memdoc">
<p>The query vector (must match the dimensionality of the indexed vectors). </p>
</div>
</div>
<a id="a6e6dc0d2cf6b4a7791efb80b80a57589" name="a6e6dc0d2cf6b4a7791efb80b80a57589"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e6dc0d2cf6b4a7791efb80b80a57589">&#9670;&#160;</a></span>pre_filter</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::function&lt;<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">bool</a>(<a class="el" href="memory__pool_8h.html#a147ba4ba34a215b3a4f3a95c1ee11704">int64_t</a>)&gt; paimon::VectorSearch::pre_filter</td>
</tr>
</table>
</div><div class="memdoc">
<p>A pre-filter based on <b>global row ids</b>, implemented by leveraging other global index. </p>
</div>
</div>
<a id="a69111b7d3e96471b31f364eef152bbe8" name="a69111b7d3e96471b31f364eef152bbe8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69111b7d3e96471b31f364eef152bbe8">&#9670;&#160;</a></span>predicate</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::shared_ptr&lt;<a class="el" href="classpaimon_1_1_predicate.html">Predicate</a>&gt; paimon::VectorSearch::predicate</td>
</tr>
</table>
</div><div class="memdoc">
<p>A runtime filtering condition that may involve graph traversal of structured attributes. </p>
<p><b>Using this parameter often yields better filtering accuracy</b> because during index construction, the underlying graph was built with explicit consideration of field connectivity (e.g., relationships between attributes). As a result, predicates can leverage this pre-established semantic structure to perform more meaningful and context-aware filtering at query time. </p><dl class="section note"><dt>Note</dt><dd>All fields referenced in the predicate must have been materialized in the index during build to ensure availability. </dd>
<dd>
For tag-based vector indexes, fields referenced by the predicate must keep the same names and types as the fields used during index construction. Indexes built with tag fields must not be reused across schema evolution that renames or changes those tag fields. </dd></dl>
</div>
</div>
<a id="a4d9869e20b0c4fe464aa3afef46de546" name="a4d9869e20b0c4fe464aa3afef46de546"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d9869e20b0c4fe464aa3afef46de546">&#9670;&#160;</a></span>distance_type</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::optional&lt;<a class="el" href="structpaimon_1_1_vector_search.html#a6f960bf74c4872082c36d26c05c95bef">DistanceType</a>&gt; paimon::VectorSearch::distance_type</td>
</tr>
</table>
</div><div class="memdoc">
<p>The distance metric to use for this query, if explicitly specified. </p>
<p>If set, this value must match the distance type used by the index (e.g., EUCLIDEAN, COSINE). A mismatch will result in an error during query execution. If not set (std::nullopt), the query will use the distance type configured in the index. </p>
</div>
</div>
<a id="a75b4356198ae0c851bea1909e578611e" name="a75b4356198ae0c851bea1909e578611e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b4356198ae0c851bea1909e578611e">&#9670;&#160;</a></span>options</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::map&lt;std::string, std::string&gt; paimon::VectorSearch::options</td>
</tr>
</table>
</div><div class="memdoc">
<p>A key-value map of query-specific runtime options. </p>
<p>Such as the size of candidate list in approximate search or parallelism for this query. </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>/home/runner/work/paimon-cpp/paimon-cpp/include/paimon/predicate/<a class="el" href="vector__search_8h_source.html">vector_search.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>