mirror of
https://github.com/supabase/supabase.git
synced 2026-10-08 19:05:06 +03:00
- extends/supersedes: #46665 - towards COM-269 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Standardized Edge Function entrypoints across examples to a consistent `export default` shape, with runtime-provided admin access for storage/database operations. * Updated public endpoint handling to use appropriate auth modes. * **Bug Fixes** * Improved error handling to return structured JSON responses with correct HTTP status codes for invalid requests and failures. * Harmonized local invocation examples to use the right header format. * **Chores** * Updated example `verify_jwt` settings to disable JWT verification for public/demo endpoints. * **Documentation** * Fixed README typo and refreshed invocation curl examples. * **Tests** * None. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Tomas Pozo <tomaspozogarzon@gmail.com>
31 lines
1.9 KiB
Markdown
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 edge 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`
|
|
- Update project config to [enable webhooks](https://supabase.com/docs/guides/local-development/cli/config#experimental.webhooks.enabled): `supabase config push`
|
|
- 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 'apikey: <SUPABASE_SECRET_KEY>' \
|
|
--header 'Content-Type: application/json' \
|
|
--data '{"search":"vehicles"}'
|
|
```
|