add object ranker

This commit is contained in:
seehi 2024-03-26 16:40:10 +08:00
parent a22d7d8983
commit 1eb141a45f

View file

@ -38,12 +38,10 @@ class ObjectSortPostprocessor(BaseNodePostprocessor):
return []
self._check_metadata(nodes[0].node)
sort_key = lambda node: json.loads(node.node.metadata["obj_json"])[self.field_name]
return self._get_sort_func()(self.top_n, nodes, key=sort_key)
def _get_sort_func(self):
return heapq.nlargest if self.order == "desc" else heapq.nsmallest
def _check_metadata(self, node: ObjectNode):
try:
obj_dict = json.loads(node.metadata.get("obj_json"))
@ -52,3 +50,6 @@ class ObjectSortPostprocessor(BaseNodePostprocessor):
if self.field_name not in obj_dict:
raise ValueError(f"Field '{self.field_name}' not found in object: {obj_dict}")
def _get_sort_func(self):
return heapq.nlargest if self.order == "desc" else heapq.nsmallest