Supabase pgvector match function: operator does not exist (extensions schema)
Shows how to fix supabase pgvector match function: operator does not exist (extensions schema). Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
First, pgvector requires Supabase Postgres 15.1.0.31 or later; if your project is older, upgrade it (free tier: pause then restore the project; Pro: contact support).
Steps
- Replicating the Clippy (Supabase docs) search on a personal Supabase project failed when calling the
match_page_sectionsPostgres function with "operator does not exist". Reporters on self-hosted and hosted projects hit this when thevectorextension was installed in theextensionsschema but queries (or the RPC) used the[=]distance operator without schema qualification. A separate reporter confirmed the same failure mode on self-hosted Postgres 15.1.0.84. - Two things to check. First, pgvector requires Supabase Postgres 15.1.0.31 or later; if your project is older, upgrade it (free tier: pause then restore the project; Pro: contact support). Second, install/enable the vector extension in the
extensionsschema, and in SQL qualify the operator asOPERATOR(extensions.[=])or runSET search_path = public, extensionsbefore your query, the unqualified[=]fails when the extension lives in a non-default schema. Both fixes were confirmed in the thread.
When to use
You are seeing this: Replicating the Clippy (Supabase docs) search on a personal Supabase project failed when calling the match\page\sections Postgres function with "operator does not exist". Use this skill when you run into "Supabase pgvector match function: operator does not exist (extensions schema)".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
Versions mentioned in the source: Postgres 15.1.0.84, Postgres 15.1.0.31. If you are on something much newer or older, the details may have shifted.
Why this happens
The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.