Rank search by recency

I would like to use vector/hybrid/filter search but combine or “boost” a rank based off of recency - or perhaps another metric like “views” or “likes”. This way searches that are more recent can be boosted.

Am I wrong - I thought “reranking” only re-ranks results in the returned group - not over the whole search?

This is useful when searching for news - as people want to get close to their search but usually prefer recent news over exact match 20 yrs ago.

1 Like

Hi!

Indeed the rerank will only “rerank” the results from the query.

I am not sure how such a query can be achieved, as the vector search will bring the closest object to your query, and adding a second argument, date based, will invalidate the first query, as they will be now sorted by date and not by similarity :thinking:

One possible way is to autocut the closest results and reorder them by date/views/likes.

So the ending query will be the closest objects, trimmed by autcut, and reordered by that second argument, which is different from having this as a weight on the results.

Let me know if this helps.

@DudaNogueira

What other databases can accomplish is to “boost” weights with other properties - I don’t know weaviate under the hood - but it would make sense is to calculate distance to the vector - but also “add” to that value with another property’s match. Ie: allow additional filter:

additionalFilter: {path[“views”],weight:0.1,max:0.01};
// 1000 views0.1+weight
or
additionalFilter: {path[“views”],weight:0.1,max:0.01, method: “multiply”};
// 1000 views
0.1 * weight
or
additionalFilter: {path[“views”],weight:0.1,percentMax:10000};
// 1000 views/10000*weight

Perhaps an “autocut” on boost to allow the databse to run smoothly, so that the 10Kth result can’t be boosted to the top; otherwise that might break/drag the database.

If this is not at all possible - it might be a good idea to at least show a way of doing this on the client efficiently - which might be my only option as of now.

1 Like

Nice.

I believe this is somehow related to this thread:

On that thread the idea is to apply a bm25 after to reinforce some properties, but that “intentional bias” could also be extended to other late reinforcement other than a bm25, like in your case, taking into account a datetime property.

This is a good feature request. Do you mind opening one in our GH so we can keep track in our roadmap?

Thanks!

1 Like