from netra import task, SpanWrapper, ActionModel
import numpy as np
@task()
def store_vector(client, key: str, vector: list[float], metadata: dict):
span = SpanWrapper("redis-store-vector", {
"key": key,
"vector.size": len(vector)
}).start()
client.hset(key, mapping={
"vector": np.array(vector, dtype=np.float32).tobytes(),
**metadata
})
span.set_action([ActionModel(
action="set",
action_type="database.set",
success=True,
affected_records=[{"id": key}],
metadata={"vector_size": len(vector)}
)])
span.set_attribute("status", "success")
span.end()