pinecone.core.client.exceptions.ApiAttributeError: ScoredVector has no attribute 'metadata' at ['['received_data', 'matches', 0]']['metadata']

Hi,

I’m receiving this error when I try to query my index. I assume this is because I upserted the vectors to the index without any metadata. This is the code I used to insert data:

docs_chunks =
for i in range(0, len(docs), chunk_size):
chunk = docs[i:i + chunk_size]
docs_chunks.append(chunk)

vector_embeddings = embeddings.embed_documents(docs_chunks)
vectors = [(str(uuid.uuid4()), embedding) for embedding in vector_embeddings]
pinecone_index.upsert(vectors=vectors)

Is there any way to delete these existing documents, or update them to contain metadata? I did not document the indexes of the upserted documents anywhere.

If not, is there any other way to fix this error?

Hi @nu.cps.supplierdiver, and thanks for your question.

You’ll want to either:

  1. Re-upsert the vectors with metadata, or
  2. Delete the vectors and then re-upsert them with metadata if necessary.

1. Re-Upserting Vectors with Metadata:

If you need metadata, but forgot to add it during the initial upsert, you can simply upsert the vectors again with metadata included. Here’s an example of how to do that:

python

Copy code

# Assuming you have document embeddings and want to add metadata
vectors_with_metadata = [
    (str(uuid.uuid4()), embedding, {"category": "example"})  # adding metadata
    for embedding in vector_embeddings
]

# Upsert vectors with metadata
pinecone_index.upsert(vectors=vectors_with_metadata)

If you didn’t document the IDs of your previously upserted vectors, Pinecone does not automatically overwrite them. So, you’ll need to delete the old ones first.

2. Deleting Existing Vectors:

To clean up the old vectors, you can use Pinecone’s deletion API. If you don’t have the specific vector IDs, you can delete them based on filters (if you’re using Pod-based indexes) or clear the entire index:

Delete vectors by filter (e.g., based on metadata):

python

Copy code

pinecone_index.delete(filter={"category": "example"})  # filter by metadata category

Delete all vectors (clear the index):

python

Copy code

pinecone_index.delete(delete_all=True)

After deleting the vectors, you can re-upsert them with the appropriate metadata.

See Our guide to deleting data for more details on removing data from your index​

Hope this helps!

Best,
Zack