Create the extension, table and indexes if they do not exist.
Call once at startup. Indexes: HNSW on the vector for cosine distance, plus a btree on
agent_id, since every read filters by it and would otherwise scan the whole table.
Delete every memory for an agent (local right-to-erasure).
Postgres + pgvector cold semantic store (L2).
The point of this adapter is "no new infrastructure": most teams already run Postgres, so the durable long-term tier becomes a migration rather than a new service to operate. Requires the pgvector extension.
Ranking reuses the same hybridRank fusion as the in-memory and Qdrant stores, so recall ordering is identical across all three backends given the same candidates: Postgres returns the threshold-admitted rows and the shared fusion re-ranks them, rather than reimplementing BM25 in SQL and drifting from the others.
Mirrors the Python
actrone_memory.l2.pgvector_store.PgVectorStoreand passes the same published conformance suite (actrone-memory/testing).