Files
HKSingleParty/99_references/supabase-examples/ai/edge-functions/README.md
2025-05-28 09:55:51 +08:00

31 lines
1.9 KiB
Markdown

# AI Inference in Supabase Edge Functions
Since Supabase Edge Runtime [v1.36.0](https://github.com/supabase/edge-runtime/releases/tag/v1.36.0) you can run the [`gte-small` model](https://huggingface.co/Supabase/gte-small) natively within Supabase Edge Functions without any external dependencies! This allows you to easily generate text embeddings without calling any external APIs!
## Semantic Search with pgvector and Supabase Edge Functions
This demo consists of three parts:
1. A [`generate-embedding`](./supabase/functions/generate-embedding/index.ts) database webhook edge function which generates embeddings when a content row is added (or updated) in the [`public.embeddings`](./supabase/migrations/20240408072601_embeddings.sql) table.
2. A [`query_embeddings` Postgres function](./supabase/migrations/20240410031515_vector-search.sql) which allows us to perform similarity search from an egde function via [Remote Procedure Call (RPC)](https://supabase.com/docs/guides/database/functions?language=js).
3. A [`search` edge function](./supabase/functions/search/index.ts) which generates the embedding for the search term, performs the similarity search via RPC function call, and returns the result.
## Deploy
- Link your project: `supabase link`
- Deploy Edge Functions: `supabase functions deploy`
- Enable Database Webhooks in your [project dashboard](https://supabase.com/dashboard/project/_/database/hooks)
- Navigate to the [database-webhook](./supabase/migrations/20240410041607_database-webhook.sql) migration file and insert your `generate-embedding` function details.
- Push up the database schema `supabase db push`
## Run
Run a search via curl POST request:
```bash
curl -i --location --request POST 'https://<PROJECT-REF>.supabase.co/functions/v1/search' \
--header 'Authorization: Bearer <SUPABASE_ANON_KEY>' \
--header 'Content-Type: application/json' \
--data '{"search":"vehicles"}'
```