MemPalace/mempalace · error · ValueError

ids already exist in pgvector collection: {existing.ids}

Error message

ids already exist in pgvector collection: {existing.ids}

What it means

Error "ids already exist in pgvector collection: {existing.ids}" thrown in MemPalace/mempalace.

Source

Thrown at mempalace/backends/pgvector.py:970

        return [
            row
            for row in rows
            if (id_set is None or row["id"] in id_set)
            and _matches_where(row["metadata"], where)
            and _matches_where_document(row["document"], where_document)
        ]

    def add(self, *, documents, ids, metadatas=None, embeddings=None):
        _validate_write_batch(
            documents=documents, ids=ids, metadatas=metadatas, embeddings=embeddings
        )
        if embeddings is None:
            raise ValueError("pgvector requires explicit embeddings")
        if len(set(ids)) != len(ids):
            raise ValueError("add ids must be unique")
        existing = self.get(ids=list(ids), include=[])
        if existing.ids:
            raise ValueError(f"ids already exist in pgvector collection: {existing.ids}")
        self.upsert(documents=documents, ids=ids, metadatas=metadatas, embeddings=embeddings)

    def upsert(self, *, documents, ids, metadatas=None, embeddings=None):
        _validate_write_batch(
            documents=documents, ids=ids, metadatas=metadatas, embeddings=embeddings
        )
        if embeddings is None:
            raise ValueError("pgvector requires explicit embeddings")
        vectors, dimension = _normalize_vectors(embeddings)
        self._ensure_table(dimension)
        metadatas = metadatas or [{} for _ in ids]
        rows = [
            {
                "id": str(doc_id),
                "document": str(doc),
                "metadata": _jsonable_metadata(meta),
                "embedding": vector,
                "updated_at": _utcnow(),

View on GitHub (pinned to 06cb6987f0)

Solutions

  1. Use update/upsert for existing ids, or delete the conflicting ids first

When it happens

Trigger: Thrown at mempalace/backends/pgvector.py:970 when the library encounters an invalid state.

Common situations: Re-adding drawers that already exist in the table.


AI-assisted analysis of MemPalace/mempalace@06cb6987f0 (2026-08-15). Data as JSON: /api/errors/b980ae47d296e224. Report an issue: GitHub.