Modified: sites/solr/guide/solr/9_8/query-guide/dense-vector-search.html URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/9_8/query-guide/dense-vector-search.html?rev=1088329&r1=1088328&r2=1088329&view=diff ============================================================================== --- sites/solr/guide/solr/9_8/query-guide/dense-vector-search.html (original) +++ sites/solr/guide/solr/9_8/query-guide/dense-vector-search.html Sun Dec 22 15:25:07 2024 @@ -1523,10 +1523,10 @@ client.add(Arrays.asList(d1, d2));</code <h2 id="query-time"><a class="anchor" href="#query-time"></a>Query Time</h2> <div class="sectionbody"> <div class="paragraph"> -<p>Apache Solr provides two query parsers that work with dense vector fields, that each support different ways of matching documents based on vector similarity: The <code>knn</code> query parser, and the <code>vectorSimilarity</code> query parser.</p> +<p>Apache Solr provides three query parsers that work with dense vector fields, that each support different ways of matching documents based on vector similarity: The <code>knn</code> query parser, the <code>vectorSimilarity</code> query parser and the <code>knn_text_to_vector</code> query parser.</p> </div> <div class="paragraph"> -<p>Both parsers return scores for retrieved documents that are the approximate distance to the target vector (defined by the similarityFunction configured at indexing time) and both support "Pre-Filtering" the document graph to reduce the number of candidate vectors evaluated (with out needing to compute their vector similarity distances).</p> +<p>All parsers return scores for retrieved documents that are the approximate distance to the target vector (defined by the similarityFunction configured at indexing time) and both support "Pre-Filtering" the document graph to reduce the number of candidate vectors evaluated (without needing to compute their vector similarity distances).</p> </div> <div class="paragraph"> <p>Common parameters for both query parsers are:</p> @@ -1650,6 +1650,69 @@ client.add(Arrays.asList(d1, d2));</code </div> </div> <div class="sect2"> +<h3 id="knn_text_to_vector-query-parser"><a class="anchor" href="#knn_text_to_vector-query-parser"></a>knn_text_to_vector Query Parser</h3> +<div class="paragraph"> +<p>The <code>knn_text_to_vector</code> query parser encode a textual query to a vector using a dedicated Large Language Model(fine tuned for the task of encoding text to vector for sentence similarity) and matches k-nearest neighbours documents to such query vector.</p> +</div> +<div class="paragraph"> +<p>In addition to the parameters in common with the other dense-retrieval query parsers, it takes the following:</p> +</div> +<div class="dlist"> +<dl> +<dt class="hdlist1"><code>model</code></dt> +<dd> +<table class="tableblock frame-none grid-all fit-content"> +<colgroup> +<col> +<col> +</colgroup> +<tbody> +<tr> +<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Required</strong></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">Default: none</p></td> +</tr> +</tbody> +</table> +<div class="paragraph"> +<p>The model to use to encode the text to a vector. Must reference an existing model loaded into the <code>/schema/text-to-vector-model-store</code>.</p> +</div> +</dd> +<dt class="hdlist1"><code>topK</code></dt> +<dd> +<table class="tableblock frame-none grid-all fit-content"> +<colgroup> +<col> +<col> +</colgroup> +<tbody> +<tr> +<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">Default: 10</p></td> +</tr> +</tbody> +</table> +<div class="paragraph"> +<p>How many k-nearest results to return.</p> +</div> +</dd> +</dl> +</div> +<div class="paragraph"> +<p>Here’s an example of a simple <code>knn_text_to_vector</code> search:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">?q={!knn_text_to_vector model=a-model f=vector topK=10}hello world query</code></pre> +</div> +</div> +<div class="paragraph"> +<p>The search results retrieved are the k=10 nearest documents to the vector encoded from the query <code>hello world query</code>, using the model <code>a-model</code>.</p> +</div> +<div class="paragraph"> +<p>For more details on how to work with vectorise text in Apache Solr, please refer to the dedicated page: <a href="text-to-vector.html" class="xref page">Text to Vector</a></p> +</div> +</div> +<div class="sect2"> <h3 id="vectorsimilarity-query-parser"><a class="anchor" href="#vectorsimilarity-query-parser"></a>vectorSimilarity Query Parser</h3> <div class="paragraph"> <p>The <code>vectorSimilarity</code> vector similarity query parser matches documents whose similarity with the target vector is a above a minimum threshold.</p> @@ -1710,6 +1773,90 @@ client.add(Arrays.asList(d1, d2));</code </div> </div> <div class="sect2"> +<h3 id="which-one-to-use"><a class="anchor" href="#which-one-to-use"></a>Which one to use?</h3> +<div class="paragraph"> +<p>Let’s see when to use each of the dense retrieval query parsers available:</p> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="knn-query-parser-2"><a class="anchor" href="#knn-query-parser-2"></a>knn Query Parser</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>You should use the <code>knn</code> query parser when:</p> +</div> +<div class="ulist"> +<ul> +<li> +<p>you search for the top-K closest vectors to a query vector</p> +</li> +<li> +<p>you work directly with vectors (no text encoding is involved)</p> +</li> +<li> +<p>you want to a have a fine-grained control over the way you encode text to vector and prefer to do it outside of Apache Solr</p> +</li> +</ul> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="knn_text_to_vector-query-parser-2"><a class="anchor" href="#knn_text_to_vector-query-parser-2"></a>knn_text_to_vector Query Parser</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>You should use the <code>knn_text_to_vector</code> query parser when:</p> +</div> +<div class="ulist"> +<ul> +<li> +<p>you search for the top-K closest vectors to a query text</p> +</li> +<li> +<p>you work directly with text and want Solr to handle the encoding to vector behind the scenes</p> +</li> +<li> +<p>you are building demos/prototypes</p> +</li> +</ul> +</div> +<div class="admonitionblock important"> +<table> +<tr> +<td class="icon"> +<i class="fa icon-important" title="Important"></i> +</td> +<td class="content"> +<div class="paragraph"> +<p>Apache Solr uses <a href="https://github.com/langchain4j/langchain4j">LangChain4j</a> to interact with Large Language Models. +The integration is experimental and we are going to improve our stress-test and benchmarking coverage of this query parser in future iterations: if you care about raw performance you may prefer to encode the text outside of Solr</p> +</div> +</td> +</tr> +</table> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="vectorsimilarity-query-parser-2"><a class="anchor" href="#vectorsimilarity-query-parser-2"></a>vectorSimilarity Query Parser</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>You should use the <code>vectorSimilarity</code> query parser when:</p> +</div> +<div class="ulist"> +<ul> +<li> +<p>you search for the closest vectors to a query vector within a similarity threshold</p> +</li> +<li> +<p>you work directly with vectors (no text encoding is involved)</p> +</li> +<li> +<p>you want to a have a fine-grained control over the way you encode text to vector and prefer to do it outside of Apache Solr</p> +</li> +</ul> +</div> +<div class="sect2"> <h3 id="graph-pre-filtering"><a class="anchor" href="#graph-pre-filtering"></a>Graph Pre-Filtering</h3> <div class="paragraph"> <p>Pre-Filtering the set of candidate documents considered when walking the graph can be specified either explicitly, or implicitly (based on existing <code>fq</code> params) depending on how and when these dense vector query parsers are used.</p>
Added: sites/solr/guide/solr/9_8/query-guide/text-to-vector.html URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/9_8/query-guide/text-to-vector.html?rev=1088329&view=auto ============================================================================== --- sites/solr/guide/solr/9_8/query-guide/text-to-vector.html (added) +++ sites/solr/guide/solr/9_8/query-guide/text-to-vector.html Sun Dec 22 15:25:07 2024 @@ -0,0 +1,1522 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title>Text to Vector :: Apache Solr Reference Guide</title> + <meta name="generator" content="Antora 3.1.4"> + <link rel="stylesheet" href="../../../_/css/site.css"> + <script>var uiRootPath = '../../../_'</script> +<!-- Solr Changes - Start --> + <link rel="icon" href="../../../_/img/favicon.ico" type="image/x-icon"> +<!-- Solr Changes - End --> + </head> + <body class="article"> +<header class="header"> + <nav class="navbar"> + <div class="navbar-brand"> + <!-- Solr Changes - Start --> + <img class="navbar-item" src="../../../_/img/solr-sunOnly-small.png" width="30" height="30"> + <a class="navbar-item" href="https://solr.apache.org/guide">Apache Solr Reference Guide</a> + <!-- Solr Changes - End --> + <div class="navbar-item search hide-for-print"> + <div id="search-field" class="field"> + <input id="search-input" type="text" placeholder="Search the docs"> + </div> + </div> + + <button class="navbar-burger" data-target="topbar-nav"> + <span></span> + <span></span> + <span></span> + </button> + </div> + <div id="topbar-nav" class="navbar-menu"> + <div class="navbar-end"> + <!-- Solr Changes - Start --> + <a class="navbar-item" href="https://solr.apache.org/" target="_blank" rel="noreferrer nopener">Solr Website</a> + <div class="navbar-item has-dropdown is-hoverable"> + <a class="navbar-link" href="#">Resources</a> + <div class="navbar-dropdown"> + <a class="navbar-item" href="https://solr.apache.org/docs/9_8_0/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a> + <a class="navbar-item" href="https://solr.apache.org/community.html#version-control" target="_blank" rel="noreferrer nopener">Source Code</a> + <a class="navbar-item" href="https://solr.apache.org/community.html" target="_blank" rel="noreferrer nopener">Community Links</a> + <a class="navbar-item" href="https://github.com/apache/solr/tree/main/dev-docs/ref-guide" target="_blank" rel="noreferrer nopener">Contribute</a> + </div> + </div> + <div class="navbar-item"> + <span class="control"> + <a class="button is-primary" href="https://solr.apache.org/downloads.html" target="_blank" rel="noreferrer nopener">Download</a> + </span> + </div> + <!-- Solr Changes - End --> + </div> + </div> + </nav> +</header> +<div class="body"> +<div class="nav-container" data-component="solr" data-version="9_8"> + <aside class="nav"> + <div class="panels"> +<!-- Solr Changes - Start --> +<div class="nav-panel-explore" data-panel="explore"> + <div class="context"> + <span class="title">Solr Reference Guide</span> + <span class="version">9.8-beta</span> + </div> +<!-- Programmatically creates the component and version list --> + <ul class="components"> + <li class="component is-current"> + <a class="title" href="../../latest/index.html">Solr Reference Guide</a> + <ul class="versions"> + <li class="version is-current"> + <a href="../index.html">9.8-beta</a> + </li> + <li class="version is-latest"> + <a href="../../latest/index.html">9.7</a> + </li> + <li class="version"> + <a href="../../9_6/index.html">9.6</a> + </li> + <li class="version"> + <a href="../../9_5/index.html">9.5</a> + </li> + <li class="version"> + <a href="../../9_4/index.html">9.4</a> + </li> + <li class="version"> + <a href="../../9_3/index.html">9.3</a> + </li> + <li class="version"> + <a href="../../9_2/index.html">9.2</a> + </li> + <li class="version"> + <a href="../../9_1/index.html">9.1</a> + </li> + <li class="version"> + <a href="../../9_0/index.html">9.0</a> + </li> + </ul> + </li> + </ul> + + <!-- Solr Additions - Start --> + <!-- A hard-coded list of older Ref Guides, pre-Antora --> + <ul class="components"> + <li class="component"> <a class="title" href="https://solr.apache.org/guide">Pre-9.0 Reference Guides</a> + <ul class="versions"> + <li class="version"> + <a href="https://solr.apache.org/guide/8_11">8.11</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_10">8.10</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_9">8.9</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_8">8.8</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_7">8.7</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_6">8.6</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_5">8.5</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_4">8.4</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_3">8.3</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_2">8.2</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_1">8.1</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/8_0">8.0</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_7">7.7</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_6">7.6</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_5">7.5</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_4">7.4</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_3">7.3</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_2">7.2</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_1">7.1</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/7_0">7.0</a> + </li> + <li class="version"> + <a href="https://solr.apache.org/guide/6_6">6.6</a> + </li> + <li class="version"> + <a href="http://archive.apache.org/dist/lucene/solr/ref-guide/">Older</a> + </li> + </ul> + </li> + <!-- Solr Additions - End --> + </ul> +</div> + +<div class="nav-panel-menu is-active" data-panel="menu"> + <nav class="nav-menu"> + <!-- Solr Removals - Start + <h3 class="title"><a href="../index.html">Solr Reference Guide</a></h3> + Solr Removals - End --> +<ul class="nav-list"> + <li class="nav-item" data-depth="0"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Getting Started</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../getting-started/introduction.html">Introduction to Solr</a> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Solr Concepts</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/documents-fields-schema-design.html">Documents, Fields, and Schema Design</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/solr-indexing.html">Solr Indexing</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/searching-in-solr.html">Searching in Solr</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/relevance.html">Relevance</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/solr-glossary.html">Solr Glossary</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../getting-started/solr-tutorial.html">Solr Tutorials</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-five-minutes.html">Exercise 0: Five Minutes to Searching!</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-techproducts.html">Exercise 1: Index Techproducts Data</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-films.html">Exercise 2: Index Films Data</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3: Index Your Own Data</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-paramsets.html">Exercise 4: Using ParamSets</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-vectors.html">Exercise 5: Using Vectors</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-solrcloud.html">Getting Started with SolrCloud</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../getting-started/tutorial-aws.html">SolrCloud on AWS EC2</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../getting-started/solr-admin-ui.html">Solr Admin UI</a> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../getting-started/about-this-guide.html">About This Guide</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="0"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Deployment Guide</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../deployment-guide/solr-control-script-reference.html">Solr Control Script Reference</a> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Installation & Deployment</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/system-requirements.html">System Requirements</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/installing-solr.html">Installing Solr</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/taking-solr-to-production.html">Taking Solr to Production</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/jvm-settings.html">JVM Settings</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/upgrading-a-solr-cluster.html">Upgrading a Solr Cluster</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/backup-restore.html">Backup and Restore</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../deployment-guide/solr-in-docker.html">Solr in Docker</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/docker-faq.html">Solr Docker FAQ</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/solr-on-hdfs.html">Solr on HDFS</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Scaling Solr</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/cluster-types.html">Solr Cluster Types</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <span class="nav-text">SolrCloud Clusters</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/solrcloud-shards-indexing.html">SolrCloud Shards and Indexing</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/solrcloud-recoveries-and-write-tolerance.html">SolrCloud Recoveries and Write Tolerance</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/solrcloud-distributed-requests.html">SolrCloud Distributed Requests</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/node-roles.html">Node Roles</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/aliases.html">Aliases</a> + </li> + <li class="nav-item" data-depth="3"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Collections API</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/cluster-node-management.html">Cluster and Node Management Commands</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/collection-management.html">Collection Management Commands</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/shard-management.html">Shard Management Commands</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/replica-management.html">Replica Management Commands</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/alias-management.html">Alias Management</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="3"> + <button class="nav-item-toggle"></button> + <span class="nav-text">ZooKeeper Configuration</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/zookeeper-ensemble.html">ZooKeeper Ensemble Configuration</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/zookeeper-file-management.html">ZooKeeper File Management</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/zookeeper-utilities.html">ZooKeeper Utilities</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/solrcloud-with-legacy-configuration-files.html">SolrCloud with Legacy Configuration Files</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="3"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Admin UI</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/collections-core-admin.html">Collections / Core Admin</a> + </li> + <li class="nav-item" data-depth="4"> + <a class="nav-link" href="../deployment-guide/cloud-screens.html">Cloud Screens</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <span class="nav-text">User-Managed Clusters</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/user-managed-index-replication.html">User-Managed Index Replication Index Replication</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/user-managed-distributed-search.html">User-Managed Distributed Search</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Monitoring Solr</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/configuring-logging.html">Configuring Logging</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/ping.html">Ping</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/metrics-reporting.html">Metrics Reporting</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/performance-statistics-reference.html">Performance Statistics Reference</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/plugins-stats-screen.html">Plugins & Stats Screen</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/mbean-request-handler.html">MBean Request Handler</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/monitoring-with-prometheus-and-grafana.html">Monitoring with Prometheus and Grafana</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/jmx-with-solr.html">JMX with Solr</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/thread-dump.html">Thread Dump Screen</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/distributed-tracing.html">Distributed Tracing</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/circuit-breakers.html">Circuit Breakers</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/rate-limiters.html">Request Rate Limiters</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/task-management.html">Task Management</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../deployment-guide/securing-solr.html">Securing Solr</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../deployment-guide/authentication-and-authorization-plugins.html">Configuring Authentication and Authorization</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/basic-authentication-plugin.html">Basic Authentication Plugin</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/kerberos-authentication-plugin.html">Kerberos Authentication Plugin</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/jwt-authentication-plugin.html">JWT Authentication Plugin</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/cert-authentication-plugin.html">Certificate Authentication Plugin</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/hadoop-authentication-plugin.html">Hadoop Authentication Plugin</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../deployment-guide/rule-based-authorization-plugin.html">Rule-Based Authorization Plugins</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/audit-logging.html">Audit Logging</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/enabling-ssl.html">Enabling SSL</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/zookeeper-access-control.html">ZooKeeper Access Control</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/security-ui.html">Security UI</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../deployment-guide/client-apis.html">Client APIs</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/solrj.html">SolrJ</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/javascript.html">JavaScript</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/python.html">Python</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../deployment-guide/ruby.html">Ruby</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="0"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Configuration Guide</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../configuration-guide/configuration-files.html">Solr Configuration Files</a> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../configuration-guide/property-substitution.html">Property Substitution in Configuration Files</a> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../configuration-guide/core-discovery.html">Core Discovery</a> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../configuration-guide/configuring-solr-xml.html">Configuring solr.xml</a> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../configuration-guide/configuring-solrconfig-xml.html">Configuring solrconfig.xml</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/index-location-format.html">Index Location and Format</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/index-segments-merging.html">Index Segments and Merging</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/schema-factory.html">Schema Factory Configuration</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/commits-transaction-logs.html">Commits and Transaction Logs</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/caches-warming.html">Caches and Query Warming</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/requesthandlers-searchcomponents.html">Request Handlers and Search Components</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/implicit-requesthandlers.html">Implicit Request Handlers</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/realtime-get.html">RealTime Get</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/initparams.html">InitParams</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/requestdispatcher.html">RequestDispatcher</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/update-request-processors.html">Update Request Processors</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/script-update-processor.html">Script Update Processor</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/codec-factory.html">Codec Factory</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Configuration APIs</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/config-api.html">Config API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/request-parameters-api.html">Request Parameters API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/managed-resources.html">Managed Resources</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/collections-api.html">Collections API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/configsets-api.html">Configsets API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/coreadmin-api.html">CoreAdmin API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/v2-api.html">v2 API</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../configuration-guide/config-sets.html">Configsets</a> + </li> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../configuration-guide/resource-loading.html">Resource Loading</a> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../configuration-guide/solr-plugins.html">Solr Plugins</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/libs.html">Lib Directories and Directives</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/solr-modules.html">Solr Modules</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../configuration-guide/package-manager.html">Package Management</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../configuration-guide/package-manager-internals.html">Package Manager Internals</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/cluster-plugins.html">Cluster Plugins</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../configuration-guide/replica-placement-plugins.html">Replica Placement Plugins</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="0"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Schema and Indexing Guide</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Solr Schema</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/schema-elements.html">Schema Elements</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/schema-api.html">Schema API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/schemaless-mode.html">Schemaless Mode</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/schema-designer.html">Schema Designer</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/schema-browser-screen.html">Schema Browser Screen</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Fields & Schema Design</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/fields.html">Fields</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Field Types</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/field-type-definitions-and-properties.html">Field Type Definitions and Properties</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/field-types-included-with-solr.html">Field Types Included with Solr</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/currencies-exchange-rates.html">Currencies and Exchange Rates</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/date-formatting-math.html">Date Formatting and Date Math</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/enum-fields.html">Enum Fields</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/external-files-processes.html">External Files and Processes</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/field-properties-by-use-case.html">Field Properties by Use Case</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/copy-fields.html">Copy Fields</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/dynamic-fields.html">Dynamic Fields</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/docvalues.html">DocValues</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/luke-request-handler.html">Luke Request Handler</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../indexing-guide/document-analysis.html">Document Analysis in Solr</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/analyzers.html">Analyzers</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/tokenizers.html">Tokenizers</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/filters.html">Filters</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/charfilters.html">CharFilters</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/language-analysis.html">Language Analysis</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/phonetic-matching.html">Phonetic Matching</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/analysis-screen.html">Analysis Screen</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Indexing & Data Operations</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../indexing-guide/indexing-with-update-handlers.html">Indexing with Update Handlers</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="../indexing-guide/transforming-and-indexing-custom-json.html">Transforming and Indexing Custom JSON</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/indexing-with-cbor.html">Indexing with Update CBOR data format</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/indexing-with-tika.html">Indexing with Solr Cell and Apache Tika</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/indexing-nested-documents.html">Indexing Nested Documents</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/post-tool.html">Post Tool</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/documents-screen.html">Documents Screen</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/partial-document-updates.html">Partial Document Updates</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/reindexing.html">Reindexing</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/language-detection.html">Language Detection</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/de-duplication.html">De-Duplication</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../indexing-guide/content-streams.html">Content Streams</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="0"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Query Guide</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="query-syntax-and-parsers.html">Query Syntax and Parsers</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="common-query-parameters.html">Common Query Parameters</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="standard-query-parser.html">Standard Query Parser</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="dismax-query-parser.html">DisMax Query Parser</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="edismax-query-parser.html">Extended DisMax (eDisMax) Query Parser</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="function-queries.html">Function Queries</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="local-params.html">Local Params</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="json-request-api.html">JSON Request API</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="json-query-dsl.html">JSON Query DSL</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="searching-nested-documents.html">Searching Nested Child Documents</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="block-join-query-parser.html">Block Join Query Parser</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="join-query-parser.html">Join Query Parser</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="spatial-search.html">Spatial Search</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="dense-vector-search.html">Dense Vector Search</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="other-parsers.html">Other Query Parsers</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="sql-query.html">SQL Query Language</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="jdbc-dbvisualizer.html">JDBC with DbVisualizer</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="jdbc-squirrel.html">JDBC with SQuirreL SQL</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="jdbc-zeppelin.html">JDBC with Apache Zeppelin</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="jdbc-python-jython.html">JDBC with Python/Jython</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="jdbc-r.html">JDBC with R</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="query-screen.html">Query Screen</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="sql-screen.html">SQL Query Screen</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Enhancing Queries</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="spell-checking.html">Spell Checking</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="suggester.html">Suggester</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="morelikethis.html">MoreLikeThis</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="query-re-ranking.html">Query Re-Ranking</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="learning-to-rank.html">Learning To Rank</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="tagger-handler.html">Tagger Handler</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="analytics.html">Analytics Component</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="analytics-expression-sources.html">Analytics Expression Sources</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="analytics-mapping-functions.html">Analytics Mapping Functions</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="analytics-reduction-functions.html">Analytics Reduction Functions</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="terms-component.html">Terms Component</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="term-vector-component.html">Term Vector Component</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="stats-component.html">Stats Component</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <span class="nav-text">Controlling Results</span> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="faceting.html">Faceting</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="json-facet-api.html">JSON Facet API</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="json-faceting-domain-changes.html">JSON Faceting Domain Changes</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="collapse-and-expand-results.html">Collapse and Expand Results</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="result-grouping.html">Result Grouping</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="result-clustering.html">Result Clustering</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="highlighting.html">Highlighting</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="query-elevation-component.html">Query Elevation Component</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="document-transformers.html">Document Transformers</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="response-writers.html">Response Writers</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="exporting-result-sets.html">Exporting Result Sets</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="pagination-of-results.html">Pagination of Results</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="streaming-expressions.html">Streaming Expressions</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="stream-source-reference.html">Stream Source Reference</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="stream-decorator-reference.html">Stream Decorator Reference</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="stream-evaluator-reference.html">Stream Evaluator Reference</a> + </li> + <li class="nav-item" data-depth="2"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="math-expressions.html">Streaming Expressions and Math Expressions</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="visualization.html">Visualization</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="math-start.html">Getting Started</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="loading.html">Loading Data</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="search-sample.html">Searching, Sampling and Aggregation</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="transform.html">Transforming Data</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="scalar-math.html">Scalar Math</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="vector-math.html">Vector Math</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="variables.html">Variables</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="matrix-math.html">Matrices and Matrix Math</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="term-vectors.html">Text Analysis and Term Vectors</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="probability-distributions.html">Probability Distributions</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="statistics.html">Statistics</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="regression.html">Linear Regression</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="curve-fitting.html">Curve Fitting</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="time-series.html">Time Series</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="numerical-analysis.html">Interpolation, Derivatives and Integrals</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="dsp.html">Digital Signal Processing</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="simulations.html">Monte Carlo Simulations</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="machine-learning.html">Machine Learning</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="graph.html">Graph</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="computational-geometry.html">Computational Geometry</a> + </li> + <li class="nav-item" data-depth="3"> + <a class="nav-link" href="logs.html">Log Analytics</a> + </li> +</ul> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="graph-traversal.html">Graph Traversal</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="stream-api.html">Stream Request Handler API</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="stream-screen.html">Stream Screen</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="0"> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <button class="nav-item-toggle"></button> + <a class="nav-link" href="../upgrade-notes/solr-upgrade-notes.html">Solr Upgrade Notes</a> +<ul class="nav-list"> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../upgrade-notes/major-changes-in-solr-9.html">Major Changes in Solr 9</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../upgrade-notes/major-changes-in-solr-8.html">Major Changes in Solr 8</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../upgrade-notes/major-changes-in-solr-7.html">Major Changes in Solr 7</a> + </li> + <li class="nav-item" data-depth="2"> + <a class="nav-link" href="../upgrade-notes/major-changes-in-solr-6.html">Major Changes in Solr 6</a> + </li> +</ul> + </li> +</ul> + </li> + <li class="nav-item" data-depth="0"> +<ul class="nav-list"> + <li class="nav-item" data-depth="1"> + <a class="nav-link" href="../how-to-contribute/how-to-contribute.html">How To Contribute</a> + </li> +</ul> + </li> +</ul> + </nav> +</div> +<!-- Solr Changes - End --> + </div> + </aside> +</div> +<main class="article"> +<div class="toolbar" role="navigation"> +<button class="nav-toggle"></button> + <a href="../../latest/index.html" class="home-link"></a> +<nav class="breadcrumbs" aria-label="breadcrumbs"> + <ul> + <li><a href="../index.html">Solr Reference Guide</a></li> + <li><a href="text-to-vector.html">Text to Vector</a></li> + </ul> +</nav> +<div class="page-versions"> + <button class="version-menu-toggle" title="Show other versions of page">9.8-beta</button> + <div class="version-menu"> + <a class="version is-current" href="text-to-vector.html">9.8-beta</a> + <a class="version is-missing" href="../../latest/index.html">9.7</a> + <a class="version is-missing" href="../../9_6/index.html">9.6</a> + <a class="version is-missing" href="../../9_5/index.html">9.5</a> + <a class="version is-missing" href="../../9_4/index.html">9.4</a> + <a class="version is-missing" href="../../9_3/index.html">9.3</a> + <a class="version is-missing" href="../../9_2/index.html">9.2</a> + <a class="version is-missing" href="../../9_1/index.html">9.1</a> + <a class="version is-missing" href="../../9_0/index.html">9.0</a> + </div> +</div> +<!-- Solr Additions - Start --> +<!-- Solr New File --> +<span class="perma-link-copy" version="9_8"> +</span><!-- Solr Additions - End --> + <div class="edit-this-page"><a href="https://github.com/apache/solr/tree/main/solr/solr-ref-guide/modules/query-guide/pages/text-to-vector.adoc">Edit this Page</a></div> + </div> + <div class="content"> +<!-- Solr Changes - Start --> +<nav class="toc sidebar" data-title="On This Page" data-levels="2"> + <div class="toc-menu"></div> +</nav> +<!-- Solr Changes - End --><article class="doc"> +<h1 class="page">Text to Vector</h1> +<div id="preamble"> +<div class="sectionbody"> +<div class="paragraph"> +<p>This module brings the power of <strong>Large Language Models</strong> (*LLM*s) to Solr. More specifically, it provides a text-to-vector capability, used on documents or queries, via integrating with popular external services that do this. The state-of-the-art of such services use an LLM, hence the name of this module. +<em>Without</em> this module, vectors must be supplied <em>to</em> Solr for indexing & searching, possibly coordinating with such services.</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="main-concepts"><a class="anchor" href="#main-concepts"></a>Main Concepts</h2> +<div class="sectionbody"> +<div class="sect2"> +<h3 id="from-text-to-vector"><a class="anchor" href="#from-text-to-vector"></a>From Text to Vector</h3> +<div class="paragraph"> +<p>The aim of encoding text to numerical vectors is to represent text in a way that semantically similar sentences are encoded to vectors close in a vector space. +Vector distance metrics (algorithms) can then be used to compute a pairwise similarity, producing a score.</p> +</div> +</div> +<div class="sect2"> +<h3 id="large-language-models"><a class="anchor" href="#large-language-models"></a>Large Language Models</h3> +<div class="paragraph"> +<p>Specific Large Language Models are able to encode text to a numerical vector.</p> +</div> +<div class="paragraph"> +<p>For additional information you can refer to this <a href="https://sease.io/2021/12/using-bert-to-improve-search-relevance.html">blog post</a>.</p> +</div> +<div class="sect3"> +<h4 id="text-to-vector-online-services"><a class="anchor" href="#text-to-vector-online-services"></a>Text to Vector Online Services</h4> +<div class="paragraph"> +<p>Training, fine-tuning and operating such Large Language Models is expensive.</p> +</div> +<div class="paragraph"> +<p>Many companies focus on this aspect and let users access APIs to encode the text (at the price of a license fee).</p> +</div> +<div class="paragraph"> +<p>Apache Solr uses <a href="https://github.com/langchain4j/langchain4j">LangChain4j</a> to connect to such apis.</p> +</div> +<div class="admonitionblock important"> +<table> +<tr> +<td class="icon"> +<i class="fa icon-important" title="Important"></i> +</td> +<td class="content"> +<div class="paragraph"> +<p>This module sends your documents and queries off to some hosted service on the internet. +There are cost, privacy, performance, and service availability implications on such a strong dependency that should be diligently examined before employing this module in a serious way.</p> +</div> +</td> +</tr> +</table> +</div> +<div class="paragraph"> +<p>At the moment a subset of the text vectorisation services supported by LangChain4j is supported by Solr.</p> +</div> +<div class="paragraph"> +<p><strong>Disclaimer</strong>: Apache Solr is <strong>in no way</strong> affiliated to any of these corporations or services.</p> +</div> +<div class="paragraph"> +<p>If you want to add support for additional services or improve the support for the existing ones, feel free to contribute:</p> +</div> +<div class="ulist"> +<ul> +<li> +<p><a href="https://github.com/apache/solr/blob/main/CONTRIBUTING.md">Contributing to Solr</a></p> +</li> +</ul> +</div> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="module"><a class="anchor" href="#module"></a>Module</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>This is provided via the <code>llm</code> <a href="../configuration-guide/solr-modules.html" class="xref page">Solr Module</a> that needs to be enabled before use.</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="llm-configuration"><a class="anchor" href="#llm-configuration"></a>LLM Configuration</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>You need to register / configure the plugins provided by the LLM module that you want to use. This is done in <code>solrconfig.xml</code>.</p> +</div> +<div class="ulist"> +<ul> +<li> +<p>Declaration of the <code>knn_text_to_vector</code> query parser.</p> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><queryParser name="knn_text_to_vector" class="org.apache.solr.llm.texttovector.search.TextToVectorQParserPlugin"/></code></pre> +</div> +</div> +</li> +</ul> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="text-to-vector-lifecycle"><a class="anchor" href="#text-to-vector-lifecycle"></a>Text to Vector Lifecycle</h2> +<div class="sectionbody"> +<div class="sect2"> +<h3 id="models"><a class="anchor" href="#models"></a>Models</h3> +<div class="ulist"> +<ul> +<li> +<p>A model encodes text to a vector.</p> +</li> +<li> +<p>A model in Solr is a reference to an external API that runs the Large Language Model responsible for text vectorisation.</p> +</li> +</ul> +</div> +<div class="admonitionblock important"> +<table> +<tr> +<td class="icon"> +<i class="fa icon-important" title="Important"></i> +</td> +<td class="content"> +<div class="paragraph"> +<p>the Solr vectorisation model specifies the parameters to access the APIs, the model doesn’t run internally in Solr</p> +</div> +</td> +</tr> +</table> +</div> +<div class="paragraph"> +<p>A model is described by these parameters:</p> +</div> +<div class="dlist"> +<dl> +<dt class="hdlist1"><code>class</code></dt> +<dd> +<table class="tableblock frame-none grid-all fit-content"> +<colgroup> +<col> +<col> +</colgroup> +<tbody> +<tr> +<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Required</strong></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">Default: none</p></td> +</tr> +</tbody> +</table> +<div class="paragraph"> +<p>The model implementation. +Accepted values:</p> +</div> +<div class="ulist"> +<ul> +<li> +<p><code>dev.langchain4j.model.huggingface.HuggingFaceEmbeddingModel</code>.</p> +</li> +<li> +<p><code>dev.langchain4j.model.mistralai.MistralAiEmbeddingModel</code>.</p> +</li> +<li> +<p><code>dev.langchain4j.model.openai.OpenAiEmbeddingModel</code>.</p> +</li> +<li> +<p><code>dev.langchain4j.model.cohere.CohereEmbeddingModel</code>.</p> +</li> +</ul> +</div> +</dd> +<dt class="hdlist1"><code>name</code></dt> +<dd> +<table class="tableblock frame-none grid-all fit-content"> +<colgroup> +<col> +<col> +</colgroup> +<tbody> +<tr> +<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Required</strong></p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">Default: none</p></td> +</tr> +</tbody> +</table> +<div class="paragraph"> +<p>The identifier of your model, this is used by any component that intends to use the model (<code>knn_text_to_vector</code> query parser).</p> +</div> +</dd> +<dt class="hdlist1"><code>params</code></dt> +<dd> +<table class="tableblock frame-none grid-all fit-content"> +<colgroup> +<col> +<col> +</colgroup> +<tbody> +<tr> +<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td> +<td class="tableblock halign-left valign-top"><p class="tableblock">Default: none</p></td> +</tr> +</tbody> +</table> +<div class="paragraph"> +<p>Each model class has potentially different params. +Many are shared but for the full set of parameters of the model you are interested in please refer to the official documentation of the LangChain4j version included in Solr: <a href="https://docs.langchain4j.dev/category/embedding-models">Vectorisationm Models in LangChain4j</a>.</p> +</div> +</dd> +</dl> +</div> +</div> +<div class="sect2"> +<h3 id="supported-models"><a class="anchor" href="#supported-models"></a>Supported Models</h3> +<div class="paragraph"> +<p>Apache Solr uses <a href="https://github.com/langchain4j/langchain4j">LangChain4j</a> to support text vectorisation. +The models currently supported are:</p> +</div> +<div id="supported-models" class="openblock tabs is-loading"> +<div class="content"> +<div class="ulist tablist"> +<ul> +<li id="supported-models-hugging-face" class="tab"> +<p>Hugging Face</p> +</li> +<li id="supported-models-mistralai" class="tab"> +<p>MistralAI</p> +</li> +<li id="supported-models-openai" class="tab"> +<p>OpenAI</p> +</li> +<li id="supported-models-cohere" class="tab"> +<p>Cohere</p> +</li> +</ul> +</div> +<div id="supported-models-hugging-face--panel" class="tabpanel" aria-labelledby="supported-models-hugging-face"> +<div class="exampleblock"> +<div class="content"> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ + "class": "dev.langchain4j.model.huggingface.HuggingFaceEmbeddingModel", + "name": "<a-name-for-your-model>", + "params": { + "accessToken": "<your-huggingface-api-key>", + "modelId": "<a-huggingface-vectorisation-model>" + } +}</code></pre> +</div> +</div> +</div> +</div> +</div> +<div id="supported-models-mistralai--panel" class="tabpanel" aria-labelledby="supported-models-mistralai"> +<div class="exampleblock"> +<div class="content"> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ + "class": "dev.langchain4j.model.mistralai.MistralAiEmbeddingModel", + "name": "<a-name-for-your-model>", + "params": { + "baseUrl": "https://api.mistral.ai/v1", + "apiKey": "<your-mistralAI-api-key>", + "modelName": "<a-mistralAI-vectorisation-model>", + "timeout": 60, + "logRequests": true, + "logResponses": true, + "maxRetries": 5 + } +}</code></pre> +</div> +</div> +</div> +</div> +</div> +<div id="supported-models-openai--panel" class="tabpanel" aria-labelledby="supported-models-openai"> +<div class="exampleblock"> +<div class="content"> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ + "class": "dev.langchain4j.model.openai.OpenAiEmbeddingModel", + "name": "<a-name-for-your-model>", + "params": { + "baseUrl": "https://api.openai.com/v1", + "apiKey": "<your-openAI-api-key>", + "modelName": "<a-openAI-vectorisation-model>", + "timeout": 60, + "logRequests": true, + "logResponses": true, + "maxRetries": 5 + } +}</code></pre> +</div> +</div> +</div> +</div> +</div> +<div id="supported-models-cohere--panel" class="tabpanel" aria-labelledby="supported-models-cohere"> +<div class="exampleblock"> +<div class="content"> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ + "class": "dev.langchain4j.model.cohere.CohereEmbeddingModel", + "name": "<a-name-for-your-model>", + "params": { + "baseUrl": "https://api.cohere.ai/v1/", + "apiKey": "<your-cohere-api-key>", + "modelName": "<a-cohere-vectorisation-model>", + "inputType": "search_document", + "timeout": 60, + "logRequests": true, + "logResponses": true + } +}</code></pre> +</div> +</div> +</div> +</div> +</div> +</div> +</div> +</div> +<div class="sect2"> +<h3 id="uploading-a-model"><a class="anchor" href="#uploading-a-model"></a>Uploading a Model</h3> +<div class="paragraph"> +<p>To upload the model in a <code>/path/myModel.json</code> file, please run:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">curl -XPUT 'http://localhost:8983/solr/techproducts/schema/vectorisation-model-store' --data-binary "@/path/myModel.json" -H 'Content-type:application/json'</code></pre> +</div> +</div> +<div class="paragraph"> +<p>To view all models:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/vectorisation-model-store</code></pre> +</div> +</div> +<div class="paragraph"> +<p>To delete the <code>currentModel</code> model:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">curl -XDELETE 'http://localhost:8983/solr/techproducts/schema/vectorisation-model-store/currentModel'</code></pre> +</div> +</div> +<div class="paragraph"> +<p>To view the model you just uploaded please open the following URL in a browser:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/vectorisation-model-store</code></pre> +</div> +</div> +<div class="listingblock"> +<div class="title">Example: /path/myModel.json</div> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{ + "class": "dev.langchain4j.model.openai.OpenAiEmbeddingModel", + "name": "openai-1", + "params": { + "baseUrl": "https://api.openai.com/v1", + "apiKey": "apiKey-openAI", + "modelName": "text-embedding-3-small", + "timeout": 60, + "logRequests": true, + "logResponses": true, + "maxRetries": 5 + } +}</code></pre> +</div> +</div> +</div> +<div class="sect2"> +<h3 id="running-a-text-to-vector-query"><a class="anchor" href="#running-a-text-to-vector-query"></a>Running a Text-to-Vector Query</h3> +<div class="paragraph"> +<p>To run a query that embeds your query text, using a model you previously uploaded is simple:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">?q={!knn_text_to_vector model=a-model f=vector topK=10}hello world query</code></pre> +</div> +</div> +<div class="paragraph"> +<p>The search results retrieved are the k=10 nearest documents to the vector encoded from the query <code>hello world query</code>, using the model <code>a-model</code>.</p> +</div> +<div class="paragraph"> +<p>For more details on how to work with vector search query parsers in Apache Solr, please refer to the dedicated page: <a href="dense-vector-search.html" class="xref page">Dense Vector Search</a></p> +</div> +</div> +</div> +</div> +</article> + </div> +</main> +</div> +<footer class="footer"> + <!-- Solr Changes - Start --> + <p> © Apache Software Foundation. All rights reserved.</p> + <script async src="../../../_/js/vendor/tabs.js"></script> + <!-- Solr Changes - End --> +</footer> +<script src="../../../_/js/site.js"></script> +<script async src="../../../_/js/vendor/highlight.js"></script> +<script src="../../../_/js/vendor/lunr.js"></script> +<script src="../../../_/js/search-ui.js" id="search-ui-script" data-site-root-path="../../.." data-snippet-length="100" data-stylesheet="../../../_/css/search.css"></script> +<script async src="../../../search-index.js"></script> + </body> +</html>