To understand why your previous query did not fetch the expected results, it is necessary to look into the behavior of PostgreSQL's plainto_tsquery() function. This function tokenizes the given plain text into words separated by &, |, !, and <-> operators. Any commas and punctuation marks are ignored during tokenization.
To force the function to consider a comma as part of the search query, you can escape it using a backslash (). However, to search for both "Rate, Fat" and "Rate Fate" is to use the | operator to combine two separate plainto_tsquery() functions, one for each search term.
Here's an example query that uses two separate plainto_tsquery() functions with the | operator to search for both "Rate, Fat" and "Rate Fate":
SELECT * FROM mytable WHERE search_vector @@ plainto_tsquery('english', 'Rate\,Fat') | plainto_tsquery('english',' Rate <-> Fate');
the full documentation of PostgreSQL https://www.postgresql.org/docs/14/functions-textsearch.html