You should be able to use Reranking for this: Reranking | Weaviate - vector database
Just rerank based on a query on Topic, the example on that site should be pretty much what you need.
I believe re-ranking only helps in re-ordering of the search results using the query provided as a post-processing step. Please correct me If I am wrong.
I was looking for a way to boost scores while fetching the initial search results itself. Something similar to the field boosting, ["topic[Local]^3","topic[Global]^2","content"].
You’re correct, but the effect will be the same no? Whether they are boosted in the initial result, or you are “boosting” them after doesn’t really make a big difference, right?
In terms of vector searches, literally adding the extra terms like “local news” (rather than “news”) will have a similar effect, as they work on semantic similarity.
If your query is different to your desired ranking you could use a reranker as @lnatspacy mentioned, too.
In BM25, I was looking for a way to give more weightage to some phrases in the search query over others.
For reference (from elasticsearch documentation):
Use the boost operator ^ to make one term more relevant than another. For instance, if we want to find all documents about foxes, but we are especially interested in quick foxes:
quick^2 fox
Boosts can also be applied to phrases or to groups:
“john smith”^2 (foo bar)^4
My problem with re-ranker is it will only rerank the documents fetched with the limit specified. This might already exclude some documents that would otherwise be part of the initial set of documents (before re-ranking) if we could boost some terms/phrases.