Deleting the source row leaves the embedding searchable in your vector store. To prove a person is gone you have to delete across every retrieval layer, re-query to confirm zero residual matches, and sign that result into a certificate anyone can verify against a published key. None of the vector databases do this last part for you.
A DELETE on the source row doesn't touch the embedding you already wrote. The subject is gone from Postgres and still perfectly searchable in pgvector, Pinecone, or Qdrant — and frequently copied again into a RAG index or a downstream cache. So "delete this person" spans a stack where their data got copied into three or four places, and a clean database row says nothing about the rest.
In the open "Can Your AI Forget?" benchmark — run against pgvector, Qdrant, Chroma, and Pinecone using each store's own native APIs — every store deletes what you point it at, and not one produces proof the deletion happened. Provability is the universal gap.
forget(subject) can find every copy — nothing to remember by hand later.declared_scope, the re-query behind each layer, and a valid_until freshness bound.Lethe Delete (Apache-2.0, self-hosted) wires steps 1–5 as a tag-on-write plus forget(subject) loop that returns the certificate. pip install lethe-delete; wrap your store once, and each write tags itself. An agent can verify the resulting certificate with zero infrastructure — three live certs are at lethe-delete.com/demo. See also what a deletion certificate is.