Mem0's Node SDK v3.0.4 fixes a quiet but serious bug in its PGVector adapter. If you were filtering memory queries with anything beyond exact equality, you were getting wrong results and probably didn't know it.
The bug affected search(), keywordSearch(), and list(). When you passed an operator object as a filter, the adapter treated it as a raw value instead of interpreting it as an operator. The query ran without error, but the results were incorrect. That is the worst kind of bug: silent, confident, and wrong.
The fix unlocks a full set of filter operators: eq, ne, gt, gte, lt, lte, in, nin, contains, icontains, a wildcard *, plus logical combinators $or and $not. Before this patch, only exact-equality filters actually worked.
For product engineers using Mem0 to store and retrieve user memories, agent state, or any structured data backed by PGVector, this matters a lot. Range filters, negation, partial string matching, and multi-value inclusion filters are table stakes for any real retrieval system. Running those queries against a broken adapter meant your application was surfacing wrong memories or missing relevant ones entirely.
This also raises a testing note. The bug was not obvious because the SDK accepted the filter syntax without throwing. Anyone who wrote tests that only checked for no-crash behavior would have missed it. If your test suite checked actual result correctness against known data, you would have caught this. That is worth keeping in mind when writing tests for any retrieval layer.
The fix is tracked in pull request 5263.
What to do today: upgrade to v3.0.4, then run your retrieval queries with explicit operator filters against a dataset where you know the expected output. If you were working around the bug by post-filtering results in application code, you can now push that logic back into the query layer where it belongs.