from netra import task, SpanWrapper, ActionModel
@task()
def upsert_vectors(index, vectors: list):
span = SpanWrapper("pinecone-upsert", {
"vectors.count": len(vectors)
}).start()
result = index.upsert(vectors=vectors)
span.set_action([ActionModel(
action="upsert",
action_type="database.upsert",
success=True,
affected_records=[{"id": v["id"]} for v in vectors],
metadata={"index": index._index_name, "upserted": result["upserted_count"]}
)])
span.set_attribute("upserted.count", result["upserted_count"])
span.end()
return result