Successfully Added Data to Weaviate but Facing Retrieval Issue

Hello Community,

I wanted to share a recent experience with Weaviate, and seek some advice or suggestions on an issue I encountered. I successfully added the following data to Weaviate:

{
    "class": "SearchProduct_3",
    "creationTimeUnix": 1720096787175,
    "id": "a-a-a-a-a,
    "lastUpdateTimeUnix": 1720096787175,
    "properties": {
        "description": "A percentage-based merchant charge of 2.9% per transaction. Suitable for businesses with varying transaction amounts.",
        "keywords": "merchant,percentage,transaction fee,business,2.9%",
        "row_data": {
            "charge_id": "a-a-a-a-a",
            "charge_name": "merchant charges",
            "charge_per_unit": 2.9,
            "charge_type": "percent",
            "is_active": true,
            "is_deleted": false
        },
        "title": "Percentage-Based Merchant Charges"
    },
    "vectorWeights": null
}

The data was successfully added without any issues. However, when I attempted to retrieve the data, I encountered the following error related to the row_data key:

"errors": [
    {
        "locations": [
            {
                "column": 122,
                "line": 1
            }
        ],
        "message": "Field \"row_data\" of type \"SearchProduct_3_row_data_object\" must have a sub selection.",
        "path": null
    }
]

Request for Suggestions:

  • Has anyone encountered a similar issue with nested fields in Weaviate?
  • Any advice on how to resolve this error or configure the sub-selection for row_data?

Looking forward to any insights or suggestions from the community!

Thanks in advance! :blush:

@DudaNogueira

Hi @Freddy !

What is the server version?
Can you share the query?

If you are trying to filter by nested object, this is not possible as of now:

Let me know if this helps.

Thanks!

Version is : 1.23.6

Query is :

(
            self.client.query.get(class_name, properties=['title', 'description', 'row_data', 'keywords'])
            .with_hybrid(
                query="get me charge data",
                alpha=0.6,
                fusion_type=HybridFusion.RANKED,
            )
        ).do()

Oh, I see. You have a problem on hybrid search with nested . :slight_smile:

Note that filtering on nested objects are yet supported :frowning:

Check here the note when this feature was released:

There is a feature request around this in our roadmap:

Please, leave your :+1: on that issue so we can keep it high on priority!

I was able to partially reproduce this issue.

Check the following code, running on

print(weaviate.__version__, client.get_meta().get("version"))
>>> client: 4.6.5, server:1.25.6

this is basically the same query but using python v4 client. And it raise the same error you have:

client.collections.delete("Nested")
collection = client.collections.get("Nested")
collection.data.insert({"parent": {"child": "hello nested world"}})
results = collection.query.hybrid(query="get me charge data", alpha=0.6, fusion_type=wvc.query.HybridFusion.RANKED)

However, this will work

client.collections.delete("Nested")
collection = client.collections.get("Nested")
collection.data.insert({"parent": {"child": "hello nested world"}, "other": "text"})
results = collection.query.hybrid(query="get me charge data", alpha=0.6, fusion_type=wvc.query.HybridFusion.RANKED)

Note the “other” property.

Now, considering that the nested object is not indexable, can you make sure you have other content on your collection other than the nested obhect?

Let me know if this helps.

Thanks!