Skip to content

Fixed recency

节点后处理器模块。

FixedRecencyPostprocessor #

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]