Bases: BaseNodePostprocessor
基于相似度的节点处理器。
Source code in llama_index/core/postprocessor/node.py
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 | class SimilarityPostprocessor(BaseNodePostprocessor):
"""基于相似度的节点处理器。"""
similarity_cutoff: float = Field(default=None)
@classmethod
def class_name(cls) -> str:
return "SimilarityPostprocessor"
def _postprocess_nodes(
self,
nodes: List[NodeWithScore],
query_bundle: Optional[QueryBundle] = None,
) -> List[NodeWithScore]:
"""后处理节点。"""
sim_cutoff_exists = self.similarity_cutoff is not None
new_nodes = []
for node in nodes:
should_use_node = True
if sim_cutoff_exists:
similarity = node.score
if similarity is None:
should_use_node = False
elif cast(float, similarity) < cast(float, self.similarity_cutoff):
should_use_node = False
if should_use_node:
new_nodes.append(node)
return new_nodes
|