I have been working on vertex ai search for retail for large retail services. I really need an expert’ advice. This would be a long story so thank you for your consideration and appreciate it if you can give me an advice as much as possible, as soon as possible.
First goal would be efficient relevance and good faceting search.
I would like to share the only one item of products that has been already indexed data catalog.:
{
“name”: “projects/295037490706/locations/global/catalogs/default_catalog/branches/1/products/10000”,
“id”: “10000”,
“type”: “PRIMARY”,
“primaryProductId”: “10000”,
“categories”: [
“Bearings”,
“Mounted Bearings”,
“Mounted Ball Bearings”,
“Take-Up Bearings”,
“Take-Up Bearing Units”
],
“title”: “AMI UEST207-23NP 1-7/16 Wide Accu-Loc Nickel Wide SL Plated Take-Up Unit”,
“brands”: [
“AMI Bearings”
],
“languageCode”: “en-US”,
“attributes”: {
“count”: {
“numbers”: [
6
]
},
“Locking”: {
“text”: [
“Concentric collar”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“has_image”: {
“text”: [
“True”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“Insert_Material”: {
“text”: [
“Bearing steel”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“has_aux_data”: {
“text”: [
“False”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“Housing”: {
“text”: [
“Nickel Plated Cast Iron”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“Duty”: {
“text”: [
“Standard”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“shipping”: {
“text”: [
“0.0”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“has_alternates”: {
“text”: [
“False”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“mpn”: {
“text”: [
“UEST207-23NP”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“shipping_weight”: {
“text”: [
“3.6”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“I_D_”: {
“text”: [
“1 7/16 in”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“Seal”: {
“text”: [
“Contact Seal with Slinger”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
},
“has_tech_specs”: {
“text”: [
“True”
],
“catalogLevelSearchableSnapshot”: false,
“catalogLevelIndexableSnapshot”: true
}
},
“priceInfo”: {
“price”: 96.83,
“originalPrice”: 96.83,
“priceRange”: {}
},
“availability”: “IN_STOCK”,
“uri”: “uri”,
“images”: [
{
“uri”: “uri”
}
],
“conditions”: [
“new”
],
“publishTime”: “2024-12-16T07:09:29.949806Z”
}
I would like to know if this product structure is good and enough for retail search, what is missing now and what should I update. Thank you.
Secondly - FACET - I am really hard on working this part.
Here as you can see it has several attributes keys like “Seal”, “shipping_weight”, “mpn”, “Duty”, “Housing”,“Insert_Material”
And sometimes ofthen over 100k products have more than 30 different facet keys
I extracted all possible facet keys there and noticed that they are over 4000 which is over 200 (vertex ai default one)
Actually I tried to do with dynamicFacetSpec which seems to help this but not working.
The facet keys I could see from the search results are always from the facet keys I configured when sending a request to service.
I have never seen facet keys appearing newly after running search engine, service. But you said it’s possible.
I hope it would work in this way you mentioned but I haven’t found the correct way yet.
And for example, when I run this service, I needed to fix the facet keys up to 200, then it lacks the main attributes from the products
So I found my own solution which may be bad, but let me share it.
- Each product has their own different numbers of attribute keys so I updated the product attributes contaiing attribute keys count.
- When someone search, then I search with them in order desc of attributes count, then I fetched 10 products which seems to have most of facet keys regarding search query. (sounds okay? I know it’s not perfect)
- Then I build facet keys here (which is programmatic, not semantic search) and re-search the products based on search query and generated facet keys.
- This would be looking good but not sure they are relevant option, actually the result was not perfect, worse than searchspring in terms of relevancy measure.
-----
Please help me find the best solution for this dynamic search especially in case of 4000 attributes keys
Thirdly, We also need to incorporate the facetable attribute data into the searchable description
For ex) if I search 1" pillow block bearing
Thank you for your feedback.
