echo "SUPABASE_URL=$SUPABASE_URL" echo "SUPABASE_PROJECT_REF=$SUPABASE_PROJECT_REF" echo "SUPABASE_ANON_KEY=$SUPABASE_ANON_KEY" echo "SUPABASE_SERVICE_ROLE_KEY=$SUPABASE_SERVICE_ROLE_KEY" echo "SUPABASE_DB_URL=$SUPABASE_DB_URL" echo "SUPABASE_DB_PASSWORD=$SUPABASE_DB_PASSWORD"
SUPABASE_URL=https://<ref>.supabase.co SUPABASE_PROJECT_REF=<ref> SUPABASE_ANON_KEY=<redacted:SUPABASE_ANON_KEY> SUPABASE_SERVICE_ROLE_KEY=<redacted:SUPABASE_SERVICE_ROLE_KEY> SUPABASE_DB_URL=<redacted:SUPABASE_DB_URL> SUPABASE_DB_PASSWORD=<redacted:SUPABASE_DB_PASSWORD>
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "SELECT * FROM public.documents;"
id | title | embedding_json ----+---------+------------------ 1 | alpha | [10, 0.5, 0, 0] 2 | bravo | [0.9, 0.3, 0, 0] 3 | delta | [20, 60, 0, 0] 4 | echo | [0, 1, 0, 0] 5 | foxtrot | [-5, 0.1, 0, 0] 6 | golf | [0.1, 0.1, 3, 4] (6 rows)
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "CREATE EXTENSION IF NOT EXISTS vector SCHEMA extensions;"
CREATE EXTENSION
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c " ALTER TABLE public.documents ADD COLUMN embedding vector(4); UPDATE public.documents SET embedding = embedding_json::vector(4); "
ALTER TABLE
ERROR: cannot cast type jsonb to vector
LINE 3: ...TE public.documents SET embedding = embedding_json::vector(4...
^
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c " UPDATE public.documents SET embedding = embedding_json::text::vector(4); "
ERROR: column "embedding" of relation "documents" does not exist
LINE 2: UPDATE public.documents SET embedding = embedding_json::text...
^
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "ALTER TABLE public.documents ADD COLUMN embedding vector(4);"
ALTER TABLE
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "UPDATE public.documents SET embedding = embedding_json::text::vector(4);"
UPDATE 6
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "SELECT id, title, embedding_json, embedding FROM public.documents;"
id | title | embedding_json | embedding ----+---------+------------------+--------------- 1 | alpha | [10, 0.5, 0, 0] | [10,0.5,0,0] 2 | bravo | [0.9, 0.3, 0, 0] | [0.9,0.3,0,0] 3 | delta | [20, 60, 0, 0] | [20,60,0,0] 4 | echo | [0, 1, 0, 0] | [0,1,0,0] 5 | foxtrot | [-5, 0.1, 0, 0] | [-5,0.1,0,0] 6 | golf | [0.1, 0.1, 3, 4] | [0.1,0.1,3,4] (6 rows)
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c " CREATE INDEX documents_embedding_idx ON public.documents USING hnsw (embedding vector_cosine_ops); "
CREATE INDEX
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "
CREATE OR REPLACE FUNCTION public.match_documents(
query_embedding vector(4),
match_count int
)
RETURNS TABLE (
id int,
title text,
distance float8
)
LANGUAGE sql STABLE
AS \$\$
SELECT
d.id,
d.title,
d.embedding <=> query_embedding AS distance
FROM public.documents d
ORDER BY d.embedding <=> query_embedding
LIMIT match_count;
\$\$;
"CREATE FUNCTION
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c " GRANT EXECUTE ON FUNCTION public.match_documents(vector(4), int) TO anon; "
GRANT
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "
SELECT * FROM public.match_documents('[10, 0.5, 0, 0]'::vector(4), 3);
"id | title | distance ----+-------+-------------------- 1 | alpha | 0 2 | bravo | 0.0367087035723488 3 | delta | 0.636791795933452 (3 rows)
curl -s -X POST \
"$SUPABASE_URL/rest/v1/rpc/match_documents" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"query_embedding": [10, 0.5, 0, 0], "match_count": 3}' | python3 -m json.tool[
{
"id": 1,
"title": "alpha",
"distance": 0
},
{
"id": 2,
"title": "bravo",
"distance": 0.0367087035723488
},
{
"id": 3,
"title": "delta",
"distance": 0.636791795933452
}
]
curl -s -X POST \
"$SUPABASE_URL/rest/v1/rpc/match_documents" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"query_embedding": [0, 0, 3, 4], "match_count": 3}' | python3 -m json.tool[
{
"id": 6,
"title": "golf",
"distance": 0.000399769304185948
},
{
"id": 1,
"title": "alpha",
"distance": 1
},
{
"id": 2,
"title": "bravo",
"distance": 1
}
]
11 earlier narration turn(s) are in the raw transcript.
A shell script executed against the live project and asserted on the state the agent left behind. No model judged another model.
Raw transcript · Task definition and verifier · Every attempt