Graph
节点类型
基类: str, Enum
知识图谱中节点类型的枚举。
当前支持的节点类型为: UNKNOWN, DOCUMENT, CHUNK
节点
基类: BaseModel
表示知识图谱中的一个节点。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
id |
UUID
|
该节点的唯一标识符。 |
properties |
dict
|
与该节点关联的属性字典。 |
type |
NodeType
|
节点的类型。 |
add_property
向节点添加一个属性。
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果该属性已存在。 |
Source code in ragas/src/ragas/testset/graph.py
get_property
关系
基类: BaseModel
表示知识图谱中两个节点之间的关系。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
id |
(UUID, optional)
|
关系的唯一标识符。默认值为新的 UUID。 |
type |
str
|
The type of the relationship. |
source |
Node
|
The source node of the relationship. |
target |
Node
|
关系的目标节点。 |
bidirectional |
(bool, optional)
|
Whether the relationship is bidirectional. Defaults to False. |
properties |
(dict, optional)
|
与该关系关联的属性字典。默认值为空字典。 |
get_property
知识图谱
dataclass
KnowledgeGraph(nodes: List[Node] = list(), relationships: List[Relationship] = list())
表示一个包含节点和关系的知识图谱。
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
nodes |
List[Node]
|
知识图谱中的节点列表。 |
relationships |
List[Relationship]
|
知识图谱中的关系列表。 |
添加
add(item: Union[Node, Relationship])
将节点或关系添加到知识图谱中。
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果项目类型不是 Node 或 Relationship。 |
Source code in ragas/src/ragas/testset/graph.py
保存
将知识图谱保存到 JSON 文件中。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
Union[str, Path]
|
JSON 文件应保存的路径。 |
required |
Notes
该文件使用 UTF-8 编码保存,以确保在不同平台上正确处理 Unicode 字符。
Source code in ragas/src/ragas/testset/graph.py
load
classmethod
load(path: Union[str, Path]) -> KnowledgeGraph
从路径加载知识图谱。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
path
|
Union[str, Path]
|
包含知识图谱的 JSON 文件的路径。 |
required |
返回:
| 类型 | 描述 |
|---|---|
KnowledgeGraph
|
已加载的知识图谱。 |
Notes
该文件使用 UTF-8 编码读取,以确保在不同平台上正确处理 Unicode 字符。
Source code in ragas/src/ragas/testset/graph.py
find_indirect_clusters
find_indirect_clusters(relationship_condition: Callable[[Relationship], bool] = lambda _: True, depth_limit: int = 3) -> List[Set[Node]]
根据关系条件在知识图谱中查找节点的间接聚类。这里如果 A -> B -> C -> D,那么 A、B、C 和 D 形成一个聚类。如果还有一条路径 A -> B -> C -> E,则会形成一个单独的聚类。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
relationship_condition
|
Callable[[Relationship], bool]
|
接受一个 Relationship 并返回一个布尔值,默认值为 lambda _: True |
lambda _: True
|
返回:
| 类型 | 描述 |
|---|---|
List[Set[Node]]
|
集合的列表,其中每个集合包含构成一个簇的节点。 |
Source code in ragas/src/ragas/testset/graph.py
remove_node
remove_node(node: Node, inplace: bool = True) -> Optional[KnowledgeGraph]
从知识图谱中删除一个节点及其相关关系。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
node
|
Node
|
要从知识图谱中移除的节点。 |
required |
inplace
|
bool
|
如果为 True,则原地修改知识图谱。 如果为 False,则返回一个已移除该节点的修改副本。 |
True
|
返回:
| 类型 | 描述 |
|---|---|
KnowledgeGraph or None
|
如果 |
引发:
| 类型 | 描述 |
|---|---|
ValueError
|
如果该节点不在知识图谱中。 |
Source code in ragas/src/ragas/testset/graph.py
find_two_nodes_single_rel
find_two_nodes_single_rel(relationship_condition: Callable[[Relationship], bool] = lambda _: True) -> List[Tuple[Node, Relationship, Node]]
根据关系条件在知识图谱中查找节点。(NodeA, NodeB, Rel) 三元组被视为多跳节点。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
relationship_condition
|
Callable[[Relationship], bool]
|
接收一个 Relationship 并返回一个布尔值,默认 lambda _: True |
lambda _: True
|
返回:
| 类型 | 描述 |
|---|---|
List[Set[Node, Relationship, Node]]
|
一系列集合,每个集合包含两个节点和一个关系,形成一个多跳节点。 |