From 99d9425cf5bb19bb3562060e9aa1580a342764be Mon Sep 17 00:00:00 2001 From: ikka Date: Thu, 5 Dec 2024 18:36:24 +0530 Subject: [PATCH] fix: add missing query qualifier (#1733) fixes: https://github.com/explodinggradients/ragas/issues/1718 --- .../testset/synthesizers/multi_hop/abstract.py | 2 +- .../testset/synthesizers/multi_hop/specific.py | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ragas/testset/synthesizers/multi_hop/abstract.py b/src/ragas/testset/synthesizers/multi_hop/abstract.py index c464a9d99..09de39a78 100644 --- a/src/ragas/testset/synthesizers/multi_hop/abstract.py +++ b/src/ragas/testset/synthesizers/multi_hop/abstract.py @@ -116,7 +116,7 @@ async def _generate_scenarios( nodes, concept_combination.combinations, personas=persona_list, - persona_item_mapping=persona_concepts.mappping, + persona_item_mapping=persona_concepts.mapping, property_name="themes", ) base_scenarios = self.sample_diverse_combinations( diff --git a/src/ragas/testset/synthesizers/multi_hop/specific.py b/src/ragas/testset/synthesizers/multi_hop/specific.py index bee082242..53ce84094 100644 --- a/src/ragas/testset/synthesizers/multi_hop/specific.py +++ b/src/ragas/testset/synthesizers/multi_hop/specific.py @@ -43,6 +43,16 @@ class MultiHopSpecificQuerySynthesizer(MultiHopQuerySynthesizer): theme_persona_matching_prompt: PydanticPrompt = ThemesPersonasMatchingPrompt() generate_query_reference_prompt: PydanticPrompt = QueryAnswerGenerationPrompt() + def get_node_clusters(self, knowledge_graph: KnowledgeGraph) -> t.List[t.Tuple]: + + node_clusters = knowledge_graph.find_two_nodes_single_rel( + relationship_condition=lambda rel: ( + True if rel.type == self.relation_type else False + ) + ) + logger.info("found %d clusters", len(node_clusters)) + return node_clusters + async def _generate_scenarios( self, n: int, @@ -63,11 +73,7 @@ async def _generate_scenarios( 4. Return the list of scenarios of length n """ - triplets = knowledge_graph.find_two_nodes_single_rel( - relationship_condition=lambda rel: ( - True if rel.type == self.relation_type else False - ) - ) + triplets = self.get_node_clusters(knowledge_graph) if len(triplets) == 0: raise ValueError( @@ -97,7 +103,7 @@ async def _generate_scenarios( [node_a, node_b], overlapped_items, personas=persona_list, - persona_item_mapping=persona_concepts.mappping, + persona_item_mapping=persona_concepts.mapping, property_name=self.property_name, ) base_scenarios = self.sample_diverse_combinations(