Skip to content

Long context reorder

节点后处理器模块。

LongContextReorder #

Bases: BaseNodePostprocessor

模型很难访问到位于扩展上下文中心的重要细节。一项研究(https://arxiv.org/abs/2307.03172)观察到,当关键数据位于输入上下文的开头或结尾时,通常会出现最佳性能。此外,随着输入上下文的延长,即使是针对长上下文设计的模型,性能也会显著下降。".

Source code in llama_index/core/postprocessor/node.py
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
class LongContextReorder(BaseNodePostprocessor):
    """模型很难访问到位于扩展上下文中心的重要细节。一项研究(https://arxiv.org/abs/2307.03172)观察到,当关键数据位于输入上下文的开头或结尾时,通常会出现最佳性能。此外,随着输入上下文的延长,即使是针对长上下文设计的模型,性能也会显著下降。"."""

    @classmethod
    def class_name(cls) -> str:
        return "LongContextReorder"

    def _postprocess_nodes(
        self,
        nodes: List[NodeWithScore],
        query_bundle: Optional[QueryBundle] = None,
    ) -> List[NodeWithScore]:
        """后处理节点。"""
        reordered_nodes: List[NodeWithScore] = []
        ordered_nodes: List[NodeWithScore] = sorted(
            nodes, key=lambda x: x.score if x.score is not None else 0
        )
        for i, node in enumerate(ordered_nodes):
            if i % 2 == 0:
                reordered_nodes.insert(0, node)
            else:
                reordered_nodes.append(node)
        return reordered_nodes