in hugegraph-llm/src/hugegraph_llm/operators/common_op/merge_dedup_rerank.py [0:0]
def run(self, context: Dict[str, Any]) -> Dict[str, Any]:
query = context.get("query")
if self.custom_related_information:
query = query + self.custom_related_information
context["graph_ratio"] = self.graph_ratio
vector_search = context.get("vector_search", False)
graph_search = context.get("graph_search", False)
if graph_search and vector_search:
graph_length = int(self.topk_return_results * self.graph_ratio)
vector_length = self.topk_return_results - graph_length
else:
graph_length = self.topk_return_results
vector_length = self.topk_return_results
vector_result = context.get("vector_result", [])
vector_length = min(len(vector_result), vector_length)
vector_result = self._dedup_and_rerank(query, vector_result, vector_length)
graph_result = context.get("graph_result", [])
graph_length = min(len(graph_result), graph_length)
if self.near_neighbor_first:
graph_result = self._rerank_with_vertex_degree(
query,
graph_result,
graph_length,
context.get("vertex_degree_list"),
context.get("knowledge_with_degree"),
)
if self.switch_to_bleu:
context["switch_to_bleu"] = True
else:
graph_result = self._dedup_and_rerank(query, graph_result, graph_length)
context["vector_result"] = vector_result
context["graph_result"] = graph_result
return context