order sources from search

This commit is contained in:
Daniel O'Connell 2025-06-28 21:25:50 +02:00
parent 96c2f22b16
commit 510cfdf82f
2 changed files with 8 additions and 1 deletions

View File

@ -101,4 +101,7 @@ async def search(
) )
if settings.ENABLE_SEARCH_SCORING: if settings.ENABLE_SEARCH_SCORING:
chunks = await scorer.rank_chunks(data[0].data[0], chunks, min_score=0.3) chunks = await scorer.rank_chunks(data[0].data[0], chunks, min_score=0.3)
return await search_sources(chunks, previews)
sources = await search_sources(chunks, previews)
sources.sort(key=lambda x: x.search_score or 0, reverse=True)
return sources

View File

@ -32,6 +32,7 @@ class SearchResult(BaseModel):
tags: list[str] | None = None tags: list[str] | None = None
metadata: dict | None = None metadata: dict | None = None
created_at: datetime | None = None created_at: datetime | None = None
search_score: float | None = None
@classmethod @classmethod
def from_source_item( def from_source_item(
@ -41,6 +42,8 @@ class SearchResult(BaseModel):
metadata.pop("content", None) metadata.pop("content", None)
chunk_size = settings.DEFAULT_CHUNK_TOKENS * 4 chunk_size = settings.DEFAULT_CHUNK_TOKENS * 4
search_score = sum(chunk.relevance_score for chunk in chunks)
return cls( return cls(
id=cast(int, source.id), id=cast(int, source.id),
size=cast(int, source.size), size=cast(int, source.size),
@ -56,6 +59,7 @@ class SearchResult(BaseModel):
tags=cast(list[str], source.tags), tags=cast(list[str], source.tags),
metadata=metadata, metadata=metadata,
created_at=cast(datetime | None, source.inserted_at), created_at=cast(datetime | None, source.inserted_at),
search_score=search_score,
) )