Skip to content
14 changes: 1 addition & 13 deletions docs/reference/search/retriever.asciidoc
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
[[retriever]]
=== Retriever

preview::["This functionality is in technical preview and may be changed or removed in a future release. The syntax will likely change before GA. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features."]

A retriever is a specification to describe top documents returned from a
search. A retriever replaces other elements of the <<search-search, search API>>
that also return top documents such as <<query-dsl, `query`>> and
Expand Down Expand Up @@ -75,7 +73,7 @@ Collapses the top documents by a specified key into a single top document per ke
===== Restrictions

When a retriever tree contains a compound retriever (a retriever with two or more child
retrievers) *only* the query element is allowed.
retrievers) the <<search-after, search after>> parameter is not supported.

[discrete]
[[standard-retriever-example]]
Expand Down Expand Up @@ -245,12 +243,6 @@ include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=rrf-rank-window-size]

include::{es-ref-dir}/rest-api/common-parms.asciidoc[tag=rrf-filter]

===== Restrictions

An RRF retriever is a compound retriever. Child retrievers may not use
elements that are restricted by having a compound retriever as part of
the retriever tree.

[discrete]
[[rrf-retriever-example-hybrid]]
==== Example: Hybrid search
Expand Down Expand Up @@ -413,10 +405,6 @@ Applies the specified <<query-dsl-bool-query, boolean query filter>> to the chil
If the child retriever already specifies any filters, then this top-level filter is applied in conjuction
with the filter defined in the child retriever.

===== Restrictions

A text similarity re-ranker retriever is a compound retriever. Child retrievers may not use elements that are restricted by having a compound retriever as part of the retriever tree.

[discrete]
[[text-similarity-reranker-retriever-example-cohere]]
==== Example: Cohere Rerank
Expand Down
14 changes: 7 additions & 7 deletions docs/reference/search/rrf.asciidoc
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
[[rrf]]
=== Reciprocal rank fusion

preview::["This functionality is in technical preview and may be changed or removed in a future release. The syntax will likely change before GA. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features."]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We just need to make sure that we CLEARLY communicate that rank: rrf is still tech preview and will be removed. I am not sure what things link to this doc page, but we need to be absolutely clear about that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All references to docs have been removed when we introduced the rrf retriever here. Should we add a warning header that rank: rrf is a now-deprecated option?
I've also opened this PR to add deprecation headers when using rank: rrf and/or sub_searches


https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf[Reciprocal rank fusion (RRF)]
is a method for combining multiple result sets with different relevance indicators into a single result set.
RRF requires no tuning, and the different relevance indicators do not have to be related to each other to achieve high-quality results.
Expand Down Expand Up @@ -95,19 +93,21 @@ The `rrf` retriever supports:

* <<search-aggregations, aggregations>>
* <<search-from-param, from>>
* <<search-suggesters, suggesters>>
* <<highlighting, highlighting>>
* <<collapse-search-results, collapse>>
* <<profiling-queries, profiling>>

The `rrf` retriever does not currently support:

* <<search-api-scroll-query-param, scroll>>
* <<search-api-pit, point in time>>
* <<search-sort-param, sort>>
* <<rescore, rescore>>
* <<search-suggesters, suggesters>>
* <<highlighting, highlighting>>
* <<collapse-search-results, collapse>>
* <<profiling-queries, profiling>>

Using unsupported features as part of a search with an `rrf` retriever results in an exception.
+
IMPORTANT: It is best to avoid providing a <<search-api-pit, point in time>> as part of the request, as
RRF creates one internally that is shared by all sub-retrievers to ensure consistent results.

[[rrf-using-multiple-standard-retrievers]]
==== Reciprocal rank fusion using multiple standard retrievers
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
[[retrievers-overview]]
=== Retrievers

preview::[]

A retriever is an abstraction that was added to the Search API in *8.14.0*.
A retriever is an abstraction that was added to the Search API in *8.14.0* and was made GA in *8.16.0*.
This abstraction enables the configuration of multi-stage retrieval pipelines within a single `_search` call.
This simplifies your search application logic, because you no longer need to configure complex searches via multiple {es} calls or implement additional client-side logic to combine results from different queries.

Expand Down Expand Up @@ -32,8 +30,7 @@ with different relevance indicators into a single result set.
An RRF retriever is a *compound retriever*, where its `filter` element is
propagated to its sub retrievers.
+
Sub retrievers may not use elements that are restricted by having a compound retriever as part of the retriever tree.
See the <<rrf-using-multiple-standard-retrievers,RRF documentation>> for detailed examples and information on how to use the RRF retriever.

* <<text-similarity-reranker-retriever,*Text Similarity Re-ranker Retriever*>>. Used for <<semantic-reranking,semantic reranking>>.
Requires first creating a `rerank` task using the <<put-inference-api,{es} Inference API>>.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,9 @@ public ActionRequestValidationException validate(
validationException
);
}
for (RetrieverSource innerRetriever : innerRetrievers) {
validationException = innerRetriever.retriever().validate(source, validationException, allowPartialSearchResults);
}
return validationException;
}

Expand Down