If the hierarchy is only defined once I'd define a dictionary (or structure of your choice) of the hierarchy. When creating a product, I'd save the path of tags against the product.
The model would look something like this:
class Product(ndb.model):
tags = ndb.StringProperty(repeated=True)
name = ndb.StringProperty()
e.g. Using your example hierarchy, if saving a pillow I'd include: Household, Bedroom, Bed, Pillows.
Product(tags=['Household', 'Bedroom', 'Bed', 'Pillows'], name='Best pillow case')
Querying is then easy for any level in the hierarchy. e.g. querying bed products:
qry = Product.query(Product.tags=='Bed')
Or querying only for pillows:
qry = Product.query(Product.tags=='Pillows')