redis-om-python icon indicating copy to clipboard operation
redis-om-python copied to clipboard

Unable to declare a Vector-Field for a JsonModel

Open MarkusPorti opened this issue 5 months ago • 2 comments

The Bug

I'm trying to declare a Field as a Vector-Field by setting the vector_options on the Field. Pydantic is then forcing me to annotate the field with a proper type. But with any possible type for a vector, I always get errors.

The one that I think should definitly work is list[float], but this results in AttributeError: type object 'float' has no attribute '__origin__'.

Example

class Group(JsonModel):
    articles: List[Article]
    tender_text: str = Field(index=False)
    tender_embedding: list[float] = Field(
        index=True,
        vector_options=VectorFieldOptions(
            algorithm=VectorFieldOptions.ALGORITHM.FLAT,
            type=VectorFieldOptions.TYPE.FLOAT32,
            dimension=3,
            distance_metric=VectorFieldOptions.DISTANCE_METRIC.COSINE
        ))

No Documentation for Vector-Fields?

There seems to be no documentation about this feature. I just found a merge-request which describes some features a bit, but there is no example, test or any documentation about this.

MarkusPorti avatar Sep 17 '24 09:09 MarkusPorti