---
id: "google-vision-product-search"
type: "component"
kind: "search-index"
provider: "gcp"
category: "data"
docs: "https://docs.cloud.google.com/vision/product-search/quotas"
url: "https://localhost:3000/catalogue/components/google-vision-product-search"
---

# Vision API Product Search

Visual similarity search over reference images grouped into product sets.

| | |
|---|---|
| Provider | [gcp](https://localhost:3000/catalogue?provider=gcp) |
| Kind | [Search index](https://localhost:3000/catalogue/kinds/search-index) |
| Category | Data |
| Official docs | [https://docs.cloud.google.com/vision/product-search/quotas](https://docs.cloud.google.com/vision/product-search/quotas) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `geoScheme` (advanced) | enum | `none`, `s2`, `h3`, `geohash`, `quadtree` | no | "none" | **"none"** |
| `indexing` | enum | `sync`, `async`, `batch` | no | "async" | **"batch"** |
| `maintenanceMode` | boolean | — | no | true | inherited |
| `managed` | boolean | — | no | false | **true** |
| `maxReferenceImagesPerProductSet` | integer | — | no | 1000000 | inherited |
| `queryRequestsPerMinute` | integer | — | no | 1800 | inherited |
| `rebuildCadenceHours` (advanced) | integer | — | no | — | **24** |
| `replicas` | integer | — | no | — | inherited |
| `shardingStrategy` (advanced) | enum | `none`, `hash`, `geo`, `time`, `prefix-range` | no | "none" | **"none"** |
| `structure` | enum | `inverted`, `trie`, `vector`, `geo-cell` | no | "inverted" | **"vector"** |

Bold values are the ones this component pins.

## Rules that apply · 1

### Search index without an asynchronous feed `derived-store-without-cdc-or-rebuild` (error)

- Page: https://localhost:3000/catalogue/rules/derived-store-without-cdc-or-rebuild.md
- Why: A search index is derived data and needs an asynchronous feed from a stream, change data capture or an indexing worker. Without one it is written inline on the request path, and it can never be rebuilt after it drifts.
- Applies to: every node of kind search-index
- Message: Search index '{{node.id}}' has no asynchronous feed from a stream, change data capture or worker. It cannot be rebuilt or kept in sync independently of the write path.

It fires when:

- this does not hold:
  - the node has at least one asynchronous incoming edge from a stream, change-data-capture or worker

## Other products of the same kind · 31

- [Alibaba Cloud Elasticsearch](https://localhost:3000/catalogue/components/alibaba-elasticsearch.md) `alibaba-elasticsearch` — alibabacloud
- [OpenSearch](https://localhost:3000/catalogue/components/alibaba-open-search.md) `alibaba-open-search` — alibabacloud
- [Amazon Bedrock Knowledge Bases](https://localhost:3000/catalogue/components/aws-bedrock-knowledge-base.md) `aws-bedrock-knowledge-base` — aws
- [Amazon CloudSearch](https://localhost:3000/catalogue/components/aws-cloudsearch.md) `aws-cloudsearch` — aws
- [Amazon Kendra](https://localhost:3000/catalogue/components/aws-kendra.md) `aws-kendra` — aws
- [Amazon OpenSearch Service](https://localhost:3000/catalogue/components/aws-opensearch.md) `aws-opensearch` — aws
- [Azure AI Search](https://localhost:3000/catalogue/components/azure-ai-search.md) `azure-ai-search` — azure
- [Foundry IQ](https://localhost:3000/catalogue/components/azure-foundry-iq.md) `azure-foundry-iq` — azure
- [AI Search](https://localhost:3000/catalogue/components/cloudflare-ai-search.md) `cloudflare-ai-search` — cloudflare
- [Algolia](https://localhost:3000/catalogue/components/algolia.md) `algolia` — default
- [Coveo](https://localhost:3000/catalogue/components/coveo.md) `coveo` — default
- [Elastic Cloud](https://localhost:3000/catalogue/components/elastic-cloud.md) `elastic-cloud` — default
- [Elasticsearch](https://localhost:3000/catalogue/components/elasticsearch.md) `elasticsearch` — default
- [Geo cell index](https://localhost:3000/catalogue/components/geo-cell-index.md) `geo-cell-index` — default
- [Manticore Search](https://localhost:3000/catalogue/components/manticore.md) `manticore` — default
- [Meilisearch](https://localhost:3000/catalogue/components/meilisearch.md) `meilisearch` — default
- [OpenSearch](https://localhost:3000/catalogue/components/opensearch.md) `opensearch` — default
- [Quickwit](https://localhost:3000/catalogue/components/quickwit.md) `quickwit` — default
- [Generic search index](https://localhost:3000/catalogue/components/search-index.md) `search-index` — default
- [Apache Solr](https://localhost:3000/catalogue/components/solr.md) `solr` — default
- [Sonic](https://localhost:3000/catalogue/components/sonic.md) `sonic` — default
- [Sphinx](https://localhost:3000/catalogue/components/sphinx.md) `sphinx` — default
- [Trie index](https://localhost:3000/catalogue/components/trie-index.md) `trie-index` — default
- [Typesense](https://localhost:3000/catalogue/components/typesense.md) `typesense` — default
- [Vespa](https://localhost:3000/catalogue/components/vespa.md) `vespa` — default
- [Cloud Talent Solution](https://localhost:3000/catalogue/components/google-cloud-talent-solution.md) `google-cloud-talent-solution` — gcp
- [Vertex AI Search](https://localhost:3000/catalogue/components/google-vertex-ai-search.md) `google-vertex-ai-search` — gcp
- [AI Commerce Search](https://localhost:3000/catalogue/components/google-vertex-ai-search-commerce.md) `google-vertex-ai-search-commerce` — gcp
- [IBM Cloud Databases for Elasticsearch](https://localhost:3000/catalogue/components/ibm-databases-for-elasticsearch.md) `ibm-databases-for-elasticsearch` — ibm
- [IBM Watson Discovery](https://localhost:3000/catalogue/components/ibm-watson-discovery.md) `ibm-watson-discovery` — ibm
- [OCI Search with OpenSearch](https://localhost:3000/catalogue/components/oci-opensearch.md) `oci-opensearch` — oci

## Use it in a design

```yaml
nodes:
  - { id: "google-vision-product-search", component: "google-vision-product-search" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Vision API Product Search: visual similarity index over reference images grouped into
# product sets. "Quickstart: Create a product set and search for products": the index is
# updated approximately every day. "Quotas and limits": 1,800 query requests per minute.
# In maintenance mode; Google points new work at Vision Warehouse.
schemaVersion: "1"
type: "component"
id: "google-vision-product-search"
kind: "search-index"
provider: "gcp"
docs: "https://docs.cloud.google.com/vision/product-search/quotas"
defaults:
  structure: "vector"
  indexing: "batch"
  rebuildCadenceHours: 24
  shardingStrategy: "none"
  geoScheme: "none"
  managed: true
properties:
  maxReferenceImagesPerProductSet:
    type: "integer"
    default: 1000000
  queryRequestsPerMinute:
    type: "integer"
    default: 1800
  maintenanceMode:
    type: "boolean"
    default: true
```

Human page: https://localhost:3000/catalogue/components/google-vision-product-search
