How to optimize NOT IN statement
It performs a scan because it has to find all values not in the one listed.
Imagine looking up in a phone book and finding all last name values that aren't 'Smith'.
Then you'll have to scan the entire book. If you instead had to find only those with the last name value 'Smith', then you could just seek to that section.

As for how to optimize, it would unfortunately be to rework the logic to avoid NOT IN if the scan is too costly to accept.
So if you somehow can change your NOT IN to an IN or = it would be better for the database engine.
Of course this can be impossible at time, and then you'll have to weigh the cost of the query vs. the cost of reworking the logic.