Mem0 v2.2.1 stops reporting memories it never stored
1 month ago
Mem0 v2.2.1: add() stops reporting memories the vector store rejected, Turbopuffer filters apply every operator, S3 Vectors and Turbopuffer scores rank correctly, Claude reasoning models work on Bedrock, pg becomes optional in the TypeScript SDK, and Mem0 for Hermes Agent ships as a standalone plugin. https://github.com/mem0ai/mem0/releases/tag/v2.2.1 https://github.com/mem0ai/mem0/compare/v2.2.0...v2.2.1 https://docs.mem0.ai/integrations/hermes
Ask about this presentation
Chapters
0:00Mem0 v2.2.1
0:11What add() returns
0:13Only inserted records count
0:25VectorStoreError
0:37Context manager is back
0:47Vector store search
0:49Turbopuffer filters
1:04Turbopuffer scores
1:18S3 Vectors scores
1:31Models and providers
1:33Bedrock reasoning models
1:46Provider defaults
2:00Installing from npm
2:02pg is optional
2:16PGVector needs pg
2:28Mem0 for Hermes Agent
2:30Standalone Hermes plugin
2:44Three backends
2:57Upgrade
Show transcriptHide transcript
In this Mem0 release, the add call changes what it reports. Until now, a record the vector store rejected still came back as a successful add event, although it was never stored.
What the add call returns.
Now only the records the vector store actually inserted count. Those are the ones written to history, linked to entities, and returned to your code, in both Memory and AsyncMemory.
If none of the extracted memories could be inserted, the add call now raises a VectorStoreError. Before, it returned those memories anyway, so your code carried on as if they were saved.
The context manager protocol is back on Memory and AsyncMemory. Open one in a with block, or an async with block, and the instance closes itself when the block exits.
Vector store search.
Turbopuffer filters now apply every operator, in both the Python and TypeScript SDKs. Before, only the range operators were read. Equals, not equals, in and not in were dropped silently, and the query came back unfiltered.
Turbopuffer search scores now respect the distance metric. With squared euclidean distance, the old score went negative for any distance above one, which turned the ranking upside down. Now it stays between zero and one.
S3 Vectors search scores are now metric-aware. With euclidean distance, the old formula collapsed most scores to zero. Now every distance maps to its own score, and a closer match always scores higher.
Models and providers.
On AWS Bedrock, Claude reasoning models can send a reasoning block before the text. Mem0 used to take only the first block and fail with a key error. Now it returns the first block that carries text.
In the TypeScript SDK, a DeepSeek or xAI config without its own base URL or model used to point at OpenAI, with an OpenAI model name. Now it falls back to that provider's own defaults.
Installing from npm.
Installing mem0ai from npm no longer pulls in the Postgres driver. It's an optional peer dependency now, with a caret range in place of the exact pin, so it stops clashing with your app's own version.
If you use the PGVector store, the SDK now loads the Postgres driver only when that store is used. So install it next to mem0ai with one npm command.
Mem0 for Hermes Agent.
Mem0's memory for Hermes Agent, from Nous Research, now has its own plugin. Install it from the Mem0 repository, enable it, and run the memory setup wizard. It recalls memories before each reply.
The setup wizard offers three backends. Mem0 Cloud with an API key, your own self-hosted Mem0 server, or the open source SDK running inside Hermes with your own model and vector store.
Both SDKs shipped on September twenty-fifth. Upgrade mem0ai from PyPI for Python, or from npm for TypeScript.
