Зачем нам Supabase
Supabase — это база данных с поддержкой векторного поиска. На уроке 6 мы загрузим в неё прайс или документы, а потом бот будет находить нужную информацию по смыслу — не по ключевым словам. Это и есть RAG.
Бесплатный план Supabase полностью покрывает наши нужды для обучения.
Бесплатный план Supabase полностью покрывает наши нужды для обучения.
ШАГ 1
Регистрация
Создаём аккаунт на supabase.com
1
Зайдите на supabase.com
Нажмите Start your project → войдите через GitHub или зарегистрируйтесь через email. GitHub — быстрее всего.
2
Подтвердите email если регистрировались через него
Придёт письмо со ссылкой — перейдите по ней. Если через GitHub — этот шаг пропускаете.
ШАГ 2
Создание проекта
Проект — это отдельная база данных. Для курса создаём один проект.
1
Нажмите "New Project"
На главной странице Supabase нажмите New Project.
2
Заполните данные проекта
Name: придумайте любое название — например pragma-rag
Database Password: придумайте надёжный пароль и сохраните его — понадобится позже
Region: выберите ближайший регион — например Frankfurt (EU)
Нажмите Create new project.
Database Password: придумайте надёжный пароль и сохраните его — понадобится позже
Region: выберите ближайший регион — например Frankfurt (EU)
Нажмите Create new project.
3
Дождитесь инициализации
Supabase создаёт базу данных — это занимает около 1–2 минуты. Просто подождите пока статус изменится на зелёный.
ШАГ 3
Запускаем SQL — одна команда
Этот код включает векторный поиск и создаёт таблицу для наших документов. Ничего писать не нужно — просто скопируйте и запустите.
1
Откройте SQL Editor
В левом меню Supabase найдите SQL Editor → нажмите New Query.
2
Скопируйте и вставьте этот код
Нажмите кнопку "Скопировать" справа → вставьте в SQL Editor (Ctrl+V или Cmd+V).
SQL · SUPABASE EDITOR
-- Шаг 1: включаем расширение pgvector для векторного поиска
CREATE EXTENSION IF NOT EXISTS vector;
-- Шаг 2: создаём таблицу для документов
CREATE TABLE documents (
id bigserial PRIMARY KEY,
content text,
metadata jsonb,
embedding vector(768)
);
-- Шаг 3: создаём функцию для поиска по смыслу
CREATE OR REPLACE FUNCTION match_documents (
query_embedding vector(768),
match_count int DEFAULT 5,
filter jsonb DEFAULT '{}'
)
RETURNS TABLE (
id bigint,
content text,
metadata jsonb,
similarity float
)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT
documents.id,
documents.content,
documents.metadata,
1 - (documents.embedding <-> query_embedding) AS similarity
FROM documents
WHERE documents.metadata @> filter
ORDER BY documents.embedding <-> query_embedding
LIMIT match_count;
END;
$$;
3
Нажмите Run
Кнопка Run внизу редактора (или Ctrl+Enter). Увидите сообщение Success — всё готово.
⚠️ Важно про vector(768)
В коде указано vector(768) — это размерность для Gemini Embeddings который мы используем на курсе. Если вы в будущем будете использовать другую модель эмбеддингов — размерность может отличаться. Для нашего курса оставляйте 768.
ШАГ 4
Сохраняем данные для n8n
Два значения которые нужны для подключения Supabase к n8n
Project URL
Settings → API → Project URL
Выглядит так:
Скопируйте и сохраните.
Выглядит так:
https://xxxxxxxxxxxx.supabase.coСкопируйте и сохраните.
Service Role Key
Settings → API → service_role (не anon!)
Длинная строка — скопируйте полностью.
Важно: используем именно service_role, не anon key. Anon key не даёт права на запись данных.
Длинная строка — скопируйте полностью.
Важно: используем именно service_role, не anon key. Anon key не даёт права на запись данных.
✓ Готово — приходите на урок 6
На уроке вставим Project URL и Service Role Key в Supabase Vector Store ноду в n8n — и бот начнёт отвечать по вашим документам.
Если что-то пошло не так: самая частая ошибка — скопировали anon key вместо service_role. Проверьте что в Settings → API берёте именно строку под заголовком service_role. Вторая частая ошибка — размерность вектора не совпадает с моделью эмбеддингов. На нашем курсе используем Gemini — там 768. Если используете OpenAI — там 1536, нужно изменить число в SQL.