in example-apps/relevance-workbench/app-api/app.py [0:0]
def get_hybrid_search_rrf_request_body(query, size=10, **options):
"""
Generates an ES hybrid search with RRF
"""
fields = datasets[options["dataset"]]["elser_search_fields"]
result_fields = datasets[options["dataset"]]["result_fields"]
search_fields = datasets[options["dataset"]]["search_fields"]
text_expansions = []
boost = 1
for field in fields:
split_field_descriptor = field.split("^")
if len(split_field_descriptor) == 2:
boost = split_field_descriptor[1]
field = split_field_descriptor[0]
te = {"text_expansion": {}}
te["text_expansion"][field] = {
"model_text": query,
"model_id": ".elser_model_1",
"boost": boost,
}
text_expansions.append(te)
return {
"_source": False,
"fields": result_fields,
"size": size,
"rank": {"rrf": {"window_size": 10, "rank_constant": 2}},
"sub_searches": [
{"query": {"bool": {"should": text_expansions}}},
{"query": {"multi_match": {"query": query, "fields": search_fields}}},
],
}