Transforms
BaseGraphTransformation
dataclass
BaseGraphTransformation(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)())
基础: ABC
用于对 KnowledgeGraph 进行图转换的抽象基类。
transform
abstractmethod
async
transform(kg: KnowledgeGraph) -> Any
用于转换 KnowledgeGraph 的抽象方法。转换应当是幂等的,这意味着多次应用该转换应与应用一次的结果相同。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
Any
|
转换后的知识图谱。 |
Source code in ragas/src/ragas/testset/transforms/base.py
筛选
filter(kg: KnowledgeGraph) -> KnowledgeGraph
过滤 KnowledgeGraph 并返回过滤后的图。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要被过滤的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
KnowledgeGraph
|
过滤后的知识图谱。 |
Source code in ragas/src/ragas/testset/transforms/base.py
generate_execution_plan
abstractmethod
generate_execution_plan(kg: KnowledgeGraph) -> List[Coroutine]
生成一个协程列表,由 Executor 按顺序执行。此协程在执行时会将转换写入 KnowledgeGraph。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
List[Coroutine]
|
要并行执行的协程列表。 |
Source code in ragas/src/ragas/testset/transforms/base.py
提取器
dataclass
Extractor(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)())
方法:
| 名称 | 描述 |
|---|---|
transform |
通过从其节点中提取属性来转换 KnowledgeGraph。 |
extract |
抽象方法,用于从节点中提取特定属性。 |
transform
async
transform(kg: KnowledgeGraph) -> List[Tuple[Node, Tuple[str, Any]]]
通过从其节点提取属性来转换 KnowledgeGraph。使用 filter 方法来过滤图,并使用 extract 方法从每个节点提取属性。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
List[Tuple[Node, Tuple[str, Any]]]
|
一个元组列表,每个元组包含一个节点和提取的 属性。 |
示例:
>>> kg = KnowledgeGraph(nodes=[Node(id=1, properties={"name": "Node1"}), Node(id=2, properties={"name": "Node2"})])
>>> extractor = SomeConcreteExtractor()
>>> extractor.transform(kg)
[(Node(id=1, properties={"name": "Node1"}), ("property_name", "extracted_value")),
(Node(id=2, properties={"name": "Node2"}), ("property_name", "extracted_value"))]
Source code in ragas/src/ragas/testset/transforms/base.py
提取
abstractmethod
async
extract(node: Node) -> Tuple[str, Any]
从节点中提取特定属性的抽象方法。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
node
|
Node
|
要从中提取属性的节点。 |
required |
返回:
| 类型 | 描述 |
|---|---|
Tuple[str, Any]
|
一个元组,包含属性名称和提取的值。 |
Source code in ragas/src/ragas/testset/transforms/base.py
generate_execution_plan
generate_execution_plan(kg: KnowledgeGraph) -> List[Coroutine]
生成一个由执行器并行执行的协程列表。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
List[Coroutine]
|
要并行执行的协程列表。 |
Source code in ragas/src/ragas/testset/transforms/base.py
NodeFilter
dataclass
NodeFilter(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)())
custom_filter
abstractmethod
async
custom_filter(node: Node, kg: KnowledgeGraph) -> bool
基于提示过滤节点的抽象方法。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
node
|
Node
|
要过滤的节点。 |
required |
返回:
| 类型 | 描述 |
|---|---|
bool
|
一个布尔值,指示该节点是否应被过滤。 |
Source code in ragas/src/ragas/testset/transforms/base.py
generate_execution_plan
generate_execution_plan(kg: KnowledgeGraph) -> List[Coroutine]
生成要执行的协程列表
Source code in ragas/src/ragas/testset/transforms/base.py
RelationshipBuilder
dataclass
RelationshipBuilder(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)())
在 KnowledgeGraph 中构建关系的抽象基类。
方法:
| 名称 | 描述 |
|---|---|
transform |
通过建立关系来转换知识图谱。 |
transform
abstractmethod
async
transform(kg: KnowledgeGraph) -> List[Relationship]
通过构建关系来转换知识图谱。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
List[Relationship]
|
新关系列表。 |
Source code in ragas/src/ragas/testset/transforms/base.py
generate_execution_plan
generate_execution_plan(kg: KnowledgeGraph) -> List[Coroutine]
生成一个将由 Executor 并行执行的协程列表。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
List[Coroutine]
|
要并行执行的协程列表。 |
Source code in ragas/src/ragas/testset/transforms/base.py
拆分器
dataclass
Splitter(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)())
用于对 KnowledgeGraph 进行转换的拆分器(通过将其节点拆分为更小块)的抽象基类。
方法:
| 名称 | 描述 |
|---|---|
transform |
通过将 KnowledgeGraph 的节点拆分为更小的块来转换它。 |
split |
抽象方法,用于将节点拆分为更小的块。 |
转换
async
transform(kg: KnowledgeGraph) -> Tuple[List[Node], List[Relationship]]
通过将其节点拆分为更小的块来转换知识图谱。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
Tuple[List[Node], List[Relationship]]
|
一个包含新节点列表和新关系列表的元组。 |
Source code in ragas/src/ragas/testset/transforms/base.py
split
abstractmethod
async
split(node: Node) -> Tuple[List[Node], List[Relationship]]
用于将节点拆分为更小块的抽象方法。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
node
|
Node
|
要拆分的节点。 |
required |
返回:
| 类型 | 描述 |
|---|---|
Tuple[List[Node], List[Relationship]]
|
一个元组,包含一个新的节点列表和一个新的关系列表。 |
Source code in ragas/src/ragas/testset/transforms/base.py
generate_execution_plan
generate_execution_plan(kg: KnowledgeGraph) -> List[Coroutine]
生成一个由 Executor 并行执行的协程列表。
参数:
| 名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
kg
|
KnowledgeGraph
|
要转换的知识图谱。 |
required |
返回:
| 类型 | 描述 |
|---|---|
List[Coroutine]
|
要并行执行的协程列表。 |
Source code in ragas/src/ragas/testset/transforms/base.py
并行
Parallel(*transformations: BaseGraphTransformation)
EmbeddingExtractor
dataclass
EmbeddingExtractor(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), property_name: str = 'embedding', embed_property_name: str = 'page_content', embedding_model: BaseRagasEmbeddings = embedding_factory())
基类: Extractor
一个用于从知识图谱节点中提取嵌入的类。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
property_name |
str
|
用于存储嵌入的属性名称 |
embed_property_name |
str
|
包含要嵌入文本的属性的名称 |
embedding_model |
BaseRagasEmbeddings
|
用于生成嵌入的嵌入模型 |
提取
async
extract(node: Node) -> Tuple[str, Any]
为给定节点提取嵌入。
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果要嵌入的属性不是字符串。 |
Source code in ragas/src/ragas/testset/transforms/extractors/embeddings.py
HeadlinesExtractor
dataclass
HeadlinesExtractor(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), llm: BaseRagasLLM = llm_factory(), merge_if_possible: bool = True, max_token_limit: int = 32000, tokenizer: Encoding = DEFAULT_TOKENIZER, property_name: str = 'headlines', prompt: HeadlinesExtractorPrompt = HeadlinesExtractorPrompt(), max_num: int = 5)
基类: LLMBasedExtractor
从给定文本中提取标题。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
property_name |
str
|
要提取的属性名称。 |
prompt |
HeadlinesExtractorPrompt
|
用于抽取的提示。 |
KeyphrasesExtractor
dataclass
KeyphrasesExtractor(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), llm: BaseRagasLLM = llm_factory(), merge_if_possible: bool = True, max_token_limit: int = 32000, tokenizer: Encoding = DEFAULT_TOKENIZER, property_name: str = 'keyphrases', prompt: KeyphrasesExtractorPrompt = KeyphrasesExtractorPrompt(), max_num: int = 5)
基类: LLMBasedExtractor
从给定文本中提取最重要的关键短语。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
property_name |
str
|
要提取的属性的名称。 |
prompt |
KeyphrasesExtractorPrompt
|
用于提取的提示。 |
SummaryExtractor
dataclass
SummaryExtractor(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), llm: BaseRagasLLM = llm_factory(), merge_if_possible: bool = True, max_token_limit: int = 32000, tokenizer: Encoding = DEFAULT_TOKENIZER, property_name: str = 'summary', prompt: SummaryExtractorPrompt = SummaryExtractorPrompt())
基类: LLMBasedExtractor
从给定文本中提取摘要。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
property_name |
str
|
要提取的属性名称。 |
prompt |
SummaryExtractorPrompt
|
用于提取的提示。 |
TitleExtractor
dataclass
TitleExtractor(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), llm: BaseRagasLLM = llm_factory(), merge_if_possible: bool = True, max_token_limit: int = 32000, tokenizer: Encoding = DEFAULT_TOKENIZER, property_name: str = 'title', prompt: TitleExtractorPrompt = TitleExtractorPrompt())
基类:LLMBasedExtractor
从给定文本中提取标题。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
property_name |
str
|
要提取的属性名称。 |
prompt |
TitleExtractorPrompt
|
用于抽取的提示。 |
CustomNodeFilter
dataclass
CustomNodeFilter(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), llm: BaseRagasLLM = llm_factory(), scoring_prompt: PydanticPrompt = QuestionPotentialPrompt(), min_score: int = 2, rubrics: Dict[str, str] = (lambda: DEFAULT_RUBRICS)())
基类: LLMBasedNodeFilter
如果 score 小于 min_score,则返回 True
SummaryCosineSimilarityBuilder
dataclass
SummaryCosineSimilarityBuilder(name: str = '', filter_nodes: Callable[[Node], bool] = (lambda: default_filter)(), property_name: str = 'summary_embedding', new_property_name: str = 'summary_cosine_similarity', threshold: float = 0.1)
基类: CosineSimilarityBuilder
筛选
filter(kg: KnowledgeGraph) -> KnowledgeGraph
过滤知识图谱,只保留具有摘要嵌入的节点。
Source code in ragas/src/ragas/testset/transforms/relationship_builders/cosine.py
default_transforms
default_transforms(documents: List[Document], llm: BaseRagasLLM, embedding_model: BaseRagasEmbeddings) -> Transforms
创建并返回一组用于处理知识图谱的默认转换。
该函数定义了一系列要应用于知识图谱的转换步骤,包括提取摘要、关键词、标题、头条和嵌入向量,以及构建节点之间的相似性关系。
返回:
| 类型 | 描述 |
|---|---|
Transforms
|
要应用于知识图谱的一系列转换步骤。 |
Source code in ragas/src/ragas/testset/transforms/default.py
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | |
apply_transforms
apply_transforms(kg: KnowledgeGraph, transforms: Transforms, run_config: RunConfig = RunConfig(), callbacks: Optional[Callbacks] = None)
在原地对知识图谱应用一系列变换。
Source code in ragas/src/ragas/testset/transforms/engine.py
rollback_transforms
rollback_transforms(kg: KnowledgeGraph, transforms: Transforms)
从知识图谱中回滚一系列转换。
Note
该功能尚未实现。如需此功能,请打开一个 issue。