def run()

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