Hi @fzaffarana,
The problem here is actually with finding an object for which a given text element does Not appear in an array; returning object #4 is secondary and could be done with a nested where filter.
As of now, Weaviate doesn’t support finding objects in which the specified array does not contain an element. Your GraphQL query arguably returns object #1 as a correct result because keyword2 (and keyword3) in the array are NotEqual to keyword1.
You may want to follow this forum thread and the associated GitHub issue: