Using postgres to select a filtered array
Not sure if this is the most efficient way to do it, but this works.

You do have to unnest all elements from keyword_array to be able to filter the unwanted out: 

with whitelist (kw) as (
    values ('a'),('b'),('c'),('f'),('h')
), raw_with_keyword_array (id, keyword_array) as (
  values 
      ('1234', array['a','c','e','h','q']),
      ('1235', array['a','d','e','f']) 
)
select id, 
       array(select kw
             from unnest(ra.keyword_array) as t(kw)
             except 
             select kw
             from whitelist)
from raw_with_keyword_array ra;


Instead of except you could also use a where not exists:

....
select id, 
       array(select kw
             from unnest(ra.keyword_array) as t(kw)
             where not exists (select *
                               from whitelist wl
                               where wl.kw = t.kw)
             )
from raw_with_keyword_array ra;


I don't think it makes a big difference though. 

Online example