Its not very clear what filters and exclude mean here, here is a suggestion -
We use a Filter object to contain a list of filters - could be equality or un-equality filters. A FilterBuilder can help in building the filters.
class FilterBuilder:
def eq(self, key, value) -> FilterBuilder:
....
def neq(self, key, value) -> FilterBuilder:
....
def build(self) -> Filter:
....
def bind_extractor(self, extractor_name: str, index_name: str, filters: Filter):
...
filter = FilterBuilder.eq("topic", "universe").neq("topic", "ocean").build()
bind_extractor("dpr", "text_embeddings", filter)