Bases: BaseNodePostprocessor
修复了最近性后处理器。
这个后处理器执行以下步骤,按日期对节点进行排序。
假设date_key对应于元数据中的日期字段。
Source code in llama_index/core/postprocessor/node_recency.py
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 | class FixedRecencyPostprocessor(BaseNodePostprocessor):
"""修复了最近性后处理器。
这个后处理器执行以下步骤,按日期对节点进行排序。
假设date_key对应于元数据中的日期字段。"""
top_k: int = 1
date_key: str = "date"
@classmethod
def class_name(cls) -> str:
return "FixedRecencyPostprocessor"
def _postprocess_nodes(
self,
nodes: List[NodeWithScore],
query_bundle: Optional[QueryBundle] = None,
) -> List[NodeWithScore]:
"""后处理节点。"""
if query_bundle is None:
raise ValueError("Missing query bundle in extra info.")
# sort nodes by date
node_dates = pd.to_datetime(
[node.node.metadata[self.date_key] for node in nodes]
)
sorted_node_idxs = np.flip(node_dates.argsort())
sorted_nodes = [nodes[idx] for idx in sorted_node_idxs]
return sorted_nodes[: self.top_k]
|