Skip to main content
This example walks through a complete Geneva workflow: creating a raw table in S3, adding computed columns via a backfill on a KubeRay cluster, and materializing a view with embeddings for downstream search. The dataset is a product catalog with titles and descriptions. We’ll compute a word_count feature column, then create a materialized view that adds text embeddings.

0. What you need to run this

Before running this example, you’ll need:
  • An S3 bucket (or other cloud object storage) that Geneva can read and write to
  • A Kubernetes cluster with the KubeRay operator installed and Geneva deployed
  • IAM credentials granting your Geneva client access to the bucket and Kubernetes API — see Manual Deployment for the required permissions
Fill in these constants and the rest of the code will run as-is:

1. Connect and create a table

2. Define UDFs

3. Register columns and run a backfill on KubeRay

4. Create a materialized view with embeddings

The materialized view selects a subset of columns from the source table — here we drop price and price_tier, keeping only what’s needed for search. After creating a materialized view, we will add and backfill a new column of embeddings.

5. Query the enriched table

6. Incremental refresh

As new products are added to the source table, refresh the view to compute embeddings for the new rows only: