Files
2026-07-13 13:30:30 +08:00

118 lines
5.9 KiB
Markdown

# Vertex AI Search Web App Demo
> NOTE: Some of the features in this demo require allowlist access. If you would like early access, apply to become a [Trusted Tester for Google Cloud Generative AI][trustedtester].
This demo illustrates how to search through a corpus of documents using [Vertex AI Search][enterprisesearch] (formerly known as Enterprise Search).
Additional features include how to search the public Cloud Knowledge Graph using the [Enterprise Knowledge Graph][enterpriseknowledgegraph] API.
## Video Walkthrough
[![VAIS Web App Walkthrough](https://storage.googleapis.com/github-repo/search/web-app/vais_web_app_walkthrough.png)](https://storage.googleapis.com/github-repo/search/web-app/vais_web_app_walkthrough.mp4)
## Architecture
### Google Cloud Products Used
- [Vertex AI Search][enterprisesearch]
- [Vertex AI Search: Recommendations][try_recommendations]
- [Cloud Run][cloudrun]
- [Enterprise Knowledge Graph][enterpriseknowledgegraph]
## Setup
- Follow steps in [Get started with Vertex AI Search][try_search] for Unstructured Data.
- Sample Data Sources used in the deployed demo:
- [Contract Understanding Atticus Dataset (CUAD)](https://www.atticusprojectai.org/cuad)
- `gs://cloud-samples-data/gen-app-builder/search/CUAD_v1`
- [Alphabet Earnings Reports](https://abc.xyz/investor/)
- `gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs`
- Follow steps in [Get started with Vertex AI Search][try_search] for Websites
- [Google Cloud site](https://cloud.google.com)
- `https://cloud.google.com`
- Follow steps in [Get started with Recommendations][try_recommendations] for Unstructured Data.
- Sample Data Sources used in the deployed demo:
- [Natural language papers from arXiv](https://arxiv.org)
- `gs://cloud-samples-data/gen-app-builder/search/arxiv`
### Dependencies
1. [Install Python](https://www.python.org/downloads/)
2. Install the [Google Cloud SDK](https://cloud.google.com/sdk/docs/install)
3. Install the prerequisites:
- `pip install -r requirements.txt`
4. Run `gcloud init`, create a new project, and
[enable billing](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
5. Enable the Vertex AI Search API:
- `gcloud services enable discoveryengine.googleapis.com`
6. Enable the Enterprise Knowledge Graph API:
- `gcloud services enable enterpriseknowledgegraph.googleapis.com`
7. Enable Cloud Run:
- `gcloud services enable run.googleapis.com`
8. Setup application default authentication, run:
- `gcloud auth application-default login`
9. Give the Cloud Run service account required permissions:
```sh
gcloud projects add-iam-policy-binding [PROJECT_ID or PROJECT_NUMBER] \
--member='serviceAccount:[PROJECT_NUMBER]-compute@developer.gserviceaccount.com' \
--role='roles/discoveryengine.viewer'
```
10. (Optional) If your Google Cloud organization has polices to [restrict sharing by domain](https://cloud.google.com/resource-manager/docs/organization-policy/restricting-domains), then you'll need to change this to allow all domains for the Cloud Run application to be open to the public Internet.
### Demo Deployment
1. Update the `consts.py` file with your own `PROJECT_ID` and `LOCATION`.
2. Configure Vertex AI Search
- To use the [prebuilt widget](https://cloud.google.com/generative-ai-app-builder/docs/add-widget), copy the `configId` from the `<gen-search-widget>` in the `Integration > Widget` tab in the [Cloud Console](https://console.cloud.google.com/gen-app-builder).
- ![configId](img/configId.png)
- Be sure to set authorization type as `Public Access` and add your web application url to the `Allowed Domains` once it's deployed.
- Add the `configId` for your Search Engines to `WIDGET_CONFIGS` in `consts.py`
- To use the Custom UI, add the engine id for your search engine to `CUSTOM_UI_ENGINE_IDS` in `consts.py`
- This is the string after `/engines/` in the Cloud Console URL.
- `https://console.cloud.google.com/gen-app-builder/engines/website-search-engine_1681248733152/...`
- Engine ID is `website-search-engine_1681248733152`
3. Configure Recommendations
- Add the datastore id and engine id for your recommendations engine to `RECOMMENDATIONS_DATASTORE_IDs` in `consts.py`.
- The datastore id is visible on the `Data > Details` page.
- The engine id is the string after `/engines/` in the Cloud Console URL.
- `https://console.cloud.google.com/gen-app-builder/engines/contracts-personalize_1687884886933/data/records`
- Engine ID is `contracts-personalize_1687884886933`
4. Configure Image Search
- Follow the instructions in the documentation to [enable image search](https://cloud.google.com/generative-ai-app-builder/docs/image-search#enable-advanced) for a website search engine.
- NOTE: You must enable [Advanced Website Indexing](https://cloud.google.com/generative-ai-app-builder/docs/about-advanced-features#advanced-website-indexing) which requires [domain verification](https://cloud.google.com/generative-ai-app-builder/docs/domain-verification).
- Add the engine id for your search engine to `IMAGE_SEARCH_DATASTORE_IDs` in `consts.py`.
5. Deploy the Cloud Run app in your project.
- `gcloud run deploy vertex-ai-search-demo --source .`
- To test locally: `flask --app main run`
6. Visit the deployed web page
- Example: [`https://vertex-ai-search-demo-lnppzg3rxa-uc.a.run.app`](https://vertex-ai-search.web.app/)
---
> Copyright 2023 Google LLC
> Author: Holt Skinner @holtskinner
[cloudrun]: https://cloud.google.com/run
[enterpriseknowledgegraph]: https://cloud.google.com/enterprise-knowledge-graph/docs/overview
[enterprisesearch]: https://cloud.google.com/enterprise-search
[try_recommendations]: https://cloud.google.com/generative-ai-app-builder/docs/try-personalize
[try_search]: https://cloud.google.com/generative-ai-app-builder/docs/try-enterprise-search
[trustedtester]: https://cloud.google.com/ai/earlyaccess/join