in src/lindorm_mcp_server/lindorm_vector_search.py [0:0]
def rrf_search(self, index_name: str, query_text: str, top_k: int, content_field: str, vector_field: str) -> list[str]:
if not self._check_index_exist(index_name):
return [f"{index_name} not exist"]
vector = self._embedding_query(query_text)
query = {
"size": top_k,
"_source": [content_field],
"query": {
"knn": {
vector_field: {
"vector": vector,
"filter": {
"match": {
content_field: query_text
}
},
"k": top_k
}
}
},
"ext": {
"lvector": {
"hybrid_search_type": "filter_rrf",
"rrf_rank_constant": "60",
}
}
}
try:
response = self.client.search(
body=query,
index=index_name
)
return [hit["_source"][content_field] for hit in response['hits']['hits']]
except Exception as e:
logging.error(f"Error performing RRF search: {e}")
return []