redis-om-python
redis-om-python copied to clipboard
Cannot create HashModel containing a list to do knn
We are currently trying to get Redis-om to work with redis-search for knn search on a HashModel.
Our model is the following:
class Document(HashModel):
vector: float = Field(
vector_options=VectorFieldOptions.flat(
type=VectorFieldOptions.TYPE.FLOAT32,
dimension=512,
distance_metric=VectorFieldOptions.DISTANCE_METRIC.COSINE
)
)
When using the type float
we can go into that line of code, that creates the correct vector type. However, a vector is actually NOT a float, so any creation of the model will fail.
Transforming the model to a valid model, we see that we need to use:
class Document(HashModel):
vector: list[float] = Field(
vector_options=VectorFieldOptions.flat(
type=VectorFieldOptions.TYPE.FLOAT32,
dimension=512,
distance_metric=VectorFieldOptions.DISTANCE_METRIC.COSINE
)
)
That would allow us to create the correct VECTOR
and use it. However, it seems that there's a check in __init__
that prevent any list
to be a field in the HashModel
However, when creating the schema, there's a specific clause to check that the subscribed type, is supported if this is a list
or a tuple
that we are clearly in.
The question is:
How can we create a HashModel
with vector list[float]
to be able to create a knn_vector
query?
Is it a bug where we need to skip the list
and check that actually we support list
and tuples
in HashModel
? Or should we use any other container to let us do the vector query?
Thanks already for the information!