Greg.C
March 16, 2023, 10:54am
1
Hi, I’m trying to use the delete method with namespace and metadata filters in the Python library and nothing happens. Here’s what I do exactly:
pinecone.init(api_key=key, environment=region)
index = pinecone.Index(<INDEX_NAME>)
delete_response = index.delete(namespace="96", filter={"file_pk": "16"})
# I have also tried this:
delete_response = index.delete(namespace="96", filter={"file_pk": {"$eq": "16"}})
When I make a query on namespace “96” I can see that file_pk
exists:
{"content": "With anxious grap...", "tokens": 202, "file_pk": "16"}
I can delete all records under a namespace with no problems but when I try with a filter nothing happens. The response from delete is {}
.
Is this a bug or do I do something wrong? If it’s a bug, is there a workaround I could use until its fixed?
PS: I have also tried making a POST request to the API. Same results ({}).
Thanks in advance.
Greg.C
March 22, 2023, 9:14am
2
So does this make sense? Is this something that you guys are working on? Does it supposed to work like this?
Hi @Greg.C ,
That’s the right way to delete by metadata. I just tried it myself and confirmed it works. In my case, I had a namespace called “example_namespace” and one of the vectors in it had a vector ID of “item_5”. I confirmed that vector had metadata setting “category: sports”, and delete with the filter worked.
>>> index.fetch(ids=["item_1"],namespace="example_namespace")
{'namespace': 'example_namespace',
'vectors': {'item_1': {'id': 'item_1',
'metadata': {'category': 'music',
'colors': ['purple', 'green', 'yellow'],
'time_stamp': 0.1},
'values': <snip>
>>> index.delete(namespace='example_namespace',filter={"category":"music"})
{}
>>> index.fetch(ids=["item_1"],namespace="example_namespace")
{'namespace': 'example_namespace', 'vectors': {}}
Can you share the query you ran that returned that vector?