# Vectors aren't immediately deleted after sending delete request

**URL:** <https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279>\
**Category:** Support\
**Tags:** serverless\
**Created:** [April 21, 2024, 4:50am UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279 "2024-04-21T04:50:51Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![shobrookj](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/shobrookj/32/2461_2.png) [@shobrookj](https://community.pinecone.io/u/shobrookj)\
**Post date:** [April 21, 2024, 4:50am UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/1 "2024-04-21T04:50:51Z")

</div>

Hi, my company recently migrated to Pinecone Serverless. We noticed that deleting vectors by ID does not behave as expected. When we send a delete request (using the Python Pinecone SDK), we immediately get a response. But if we check the index afterwards, we see that the vectors are still there. It’s only after several seconds that they actually _get deleted._ It appears that the delete endpoint just _queues_ up the vectors to be deleted.

Is this the case? If so, how can we know exactly when the vectors are in fact deleted?

---

<div class="post-metadata">

**Author:** ![zeke](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/zeke/32/4257_2.png) [@zeke](https://community.pinecone.io/u/zeke)\
**Post date:** [April 22, 2024, 2:55pm UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/2 "2024-04-22T14:55:04Z")

</div>

Hi @shobrookj, Pinecone is eventually consistent, so there can be a slight delay before new or changed records are visible to queries and other read requests.

After adding, updating, or deleting records, use the [describe\_index\_stats](https://docs.pinecone.io/reference/api/data-plane/describeindexstats) operation to check if the current record count matches the number of records you expect.

Please note that Pinecone serverless is in public preview. Performance may fluctuate, and we are continuously improving the architecture, including data freshness capabilities.

---

<div class="post-metadata">

**Author:** ![shobrookj](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/shobrookj/32/2461_2.png) [@shobrookj](https://community.pinecone.io/u/shobrookj)\
**Post date:** [April 22, 2024, 5:06pm UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/3 "2024-04-22T17:06:11Z")

</div>

Thanks for the response. For our use case, we need to know _for sure_ that the vectors are deleted before performing another operation, otherwise our system will break. It sounds like the best way to do this is to continuously poll `describe_index_stats` until it reflects the right record count? Are there plans to implement a better solution down the line, such as simply waiting to return a response from the `/delete` request until the vectors are actually deleted?

---

<div class="post-metadata">

**Author:** ![zeke](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/zeke/32/4257_2.png) [@zeke](https://community.pinecone.io/u/zeke)\
**Post date:** [April 22, 2024, 8:42pm UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/4 "2024-04-22T20:42:32Z")

</div>

@shobrookj Yes, you are correct that the best approach at this time is to poll `describe_index_stats` until you observe the expected vector count.

There are a few considerations regarding how this challenge will be handled in the future:

1. We aim to continue improving our data freshness capabilities on serverless so that this situation is less likely to emerge.
2. We are working on functionality that allows users to bind their read requests to ensure that certain previously issued writes are reflected in the freshness layer used for the read. This will effectively ensure that you can perform a read, knowing that the impact of your write requests is present.

Lastly, I’m curious how many records you are deleting in one request before you test the effect with a fetch.

---

<div class="post-metadata">

**Author:** ![shobrookj](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/shobrookj/32/2461_2.png) [@shobrookj](https://community.pinecone.io/u/shobrookj)\
**Post date:** [May 4, 2024, 9:11am UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/5 "2024-05-04T09:11:54Z")

</div>

Okay, point #2 sounds great.

One last question: I’m noticing that Pinecone serverless does not support metadata filtering for the `describe_index_stats` method. I group together vectors based on metadata, and this means I cannot check if the deletion for a particular group of vectors was successful or not. What would you recommend I do?

---

<div class="post-metadata">

**Author:** ![zeke](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/zeke/32/4257_2.png) [@zeke](https://community.pinecone.io/u/zeke)\
**Post date:** [May 7, 2024, 8:07pm UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/6 "2024-05-07T20:07:27Z")

</div>

@shobrookj You can query using a metadata filter targeting the desired field and value. If the query yields no results, the records were deleted successfully.

---

<div class="post-metadata">

**Author:** ![banumathi.thangavelu](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/banumathi.thangavelu/32/4032_2.png) [@banumathi.thangavelu](https://community.pinecone.io/u/banumathi.thangavelu)\
**Post date:** [March 18, 2025, 2:23pm UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/7 "2025-03-18T14:23:36Z")

</div>

**Am facing an issue in Pinecone:**

- In the recommendation flow, while comparing the user profile with the jobs table in Pinecone, it first provides the matched job results along with their matching scores.

- Then, I check whether the matched job results are available in our **(dev)** database. Because We can display these job details as recommended jobs only if they exist in our database. Otherwise, we cannot display them, even if they are available in the Pinecone database and considered a match.

- Therefore, I delete jobs from Pinecone that appear in the matched results but are not present in our database. (This happens because sometimes we manually delete jobs from our database, but they are not updated in Pinecone, leaving them available only in the Pinecone database.)

- However, even after deleting these jobs, Pinecone still returns the same matched results, including the deleted jobs.

- I checked the documentation, and this issue occurs because Pinecone does not update immediately after deletion. They suggest (describe\_index\_stats) checking the count before and after deleting to verify the update.

- I checked the job count , but there is no change in the count before and after deletion. Pinecone continues to return the same matched results, all of which are deleted jobs.

How can i resolve this

---

<div class="post-metadata">

**Author:** ![banumathi.thangavelu](https://sea2.discourse-cdn.com/flex020/user_avatar/community.pinecone.io/banumathi.thangavelu/32/4032_2.png) [@banumathi.thangavelu](https://community.pinecone.io/u/banumathi.thangavelu)\
**Post date:** [June 26, 2025, 5:28am UTC](https://community.pinecone.io/t/vectors-arent-immediately-deleted-after-sending-delete-request/5279/8 "2025-06-26T05:28:09Z")

</div>

It’s working as expected after migrated from GCP-Starter to Serverless
