ИИ-мастерская

Работа с PostgreSQL

Обновлено 30.10.2026

Инструкция по PostgreSQL workflow

Эта инструкция описывает тестовые примеры работы с PostgreSQL в n8n:

  • Пример. PostgreSQL. Создать таблицу и загрузить данные.json

  • Пример. PostgreSQL. Загрузка vector embeddings.json

1. Что нужно перед запуском

Доступы

Для всех PostgreSQL-нод используйте credentials "Postgre n8n".

Это общие credentials для подключения к PostgreSQL в n8n. Если workflow после импорта показывает ошибку credentials, откройте каждую PostgreSQL-ноду и выберите Postgres n8n.

Для embedding-нод используется credential "BaseGeotechModelCreds".

Он нужен для модели embeddings geotech/openai/text-embedding-3-small.
На момент написания инструкции также доступна модель-эмбеддер geotech/openai/text-embedding-3-large.

2. Пример PostgreSQL. Создать таблицу и загрузить данные

Ссылка на workflow https://n8n.geotech.user.events/workflow/mfFVSJ2CSQFRrE52

Файл "Пример. PostgreSQL. Создать таблицу и загрузить данные.json" в https://cloud.ide-spb.com/apps/files/files/108031766?dir=/n8n/test/workflow_examples.

Workflow создает таблицу n8n_demo_dragons и загружает в нее 5 строк с данными.

Основные поля таблицы:

  • dragon_id — идентификатор дракона, например DRG-AX-001;

  • dragon_name — имя;

  • epithet — эпитет;

  • habitat — место обитания;

  • favorite_food — любимая пища;

  • age_years — возраст;

  • abilities — описание способностей;

  • key_facts — ключевые факты в jsonb;

  • relations — связи с другими сущностями;

  • full_text — текст для embeddings и поиска;

  • embedding — поле типа vector, изначально пустое.

Как запустить

  1. Перейдите по ссылке к соответствующему workflow или импортируйте workflow в n8n в виде json.

  2. Проверьте, что во всех PostgreSQL-нодах выбран credential Postgres n8n.

  3. Запустите последнюю ноду Проверить поле embedding. Наведите на неё и нажмите на знак ▶

  4. Дальше workflow выполнит цепочку: создание таблицы, загрузка строк, проверка данных и проверка поля embedding.

  5. Откройте output ноды Проверить данные в таблице.

Ожидаемый результат: в таблице n8n_demo_dragons появятся 5 строк, а поле embedding пока будет пустым.

Workflow можно запускать повторно. Записи обновляются по dragon_id, а не дублируются.

3. Пример PostgreSQL. Загрузка vector embeddings

Ссылка на workflow https://n8n.geotech.user.events/workflow/mj5QYpdDY9rP98fP

Файл "Пример. PostgreSQL. Загрузка vector embeddings.json" в https://cloud.ide-spb.com/apps/files/files/108031766?dir=/n8n/test/workflow_examples.

Workflow создаёт векторное представление из текста, embeddings из данных поля n8n_demo_dragons.full_text и записывает его в поле n8n_demo_dragons.embedding.

Embeddings можно загружать 2 способами:

  • в отдельную таблицу n8n_demo_dragons; которая была создана предварительно в "Пример. PostgreSQL. Создать таблицу и загрузить данные.json" https://n8n.geotech.user.events/workflow/mfFVSJ2CSQFRrE52

  • в общую таблицу n8n_vectors.

Эти варианты нужны для разных сценариев.

Вариант 1. Запись embedding в отдельную таблицу

Целевая таблица n8n_demo_dragons, целевое поле embedding.

Этот вариант удобен, если данные должны оставаться в своей предметной таблице. Например, у вас есть каталог объектов, справочник, карточки товаров или любая отдельная бизнес-таблица.

Логика работы:

  1. Workflow выбирает строки n8n_demo_dragons, где embedding IS NULL.

  2. Берет текст из full_text.

  3. Временно записывает embeddings в n8n_vectors, потому что PGVector-нода n8n умеет считать embeddings именно через vector store.

  4. SQL переносит полученный vector в n8n_demo_dragons.embedding.

  5. Временные строки staging удаляются из n8n_vectors.

Запуск с нажатием на знак ▶ на последней ноде "Результат n8n_demo_dragons":

Вариант 2. Запись embedding в общую таблицу n8n_vectors

Этот вариант удобен для общего векторного хранилища. В таблицу сохраняются:

  • text — текст строки или фрагмента;

  • metadata — описание источника, dragon_id, имя, путь, collection и другие поля;

  • embedding — vector embedding;

  • collection_id — ссылка на collection.

В этом примере используется collection dragon_demo.

Логика работы:

  1. Workflow удаляет старые demo-строки из n8n_vectors по metadata. Это сделано в рамках тестового примера, чтобы при повторном запуске workflow не появлялись дубли.

  2. Берет все строки из n8n_demo_dragons.

  3. Готовит по одному документу на каждого дракона.

  4. Через PGVector-ноду считает embeddings и записывает строки в n8n_vectors.

  5. Проверяет, сколько строк записано и сколько из них имеют embedding.

Запуск с нажатием на знак ▶ на последней ноде "Результат n8n_vectors":

4. Порядок запуска

  1. Сначала запустите workflow Пример. PostgreSQL. Создать таблицу и загрузить данные.

  2. Убедитесь, что Проверить данные в таблице показывает 5 драконов.

  3. Затем запустите нужную ветку workflow Пример. PostgreSQL. Загрузка vector embeddings.

  4. Для отдельной таблицы запускайте ветку от Настройки для n8n_demo_dragons.

  5. Для общей таблицы запускайте ветку от Настройки для n8n_vectors.

5. Что проверять после запуска

Проверку загруженных строк можно осуществить с помощью workflow "Пример. PostgreSQL. Проверка insert.json" в https://cloud.ide-spb.com/apps/files/files/108031766?dir=/n8n/test/workflow_examples, ссылка

Он выполняет SQL-запрос к upload_docs_n8n_vectors или n8n_demo_dragons и проверяет, что ранее загруженная тестовая строка находится по ожидаемому marker/document_id. Это отдельная проверка insert-сценария.

Для таблицы n8n_demo_dragons:

SELECT
COUNT(*) AS total_rows,
COUNT(embedding) AS rows_with_embedding
FROM n8n_demo_dragons;

Для общей таблицы upload_docs_n8n_vectors:

SELECT
COUNT(*) AS vector_rows,
COUNT(embedding) AS vector_rows_with_embedding
FROM n8n_vectors
WHERE metadata->>'source_type' = 'dragon_catalog_row'
AND metadata->>'source_path' = '/n8n/rag_input/unique_info.md';

Ожидаемый результат для demo-набора: 5 строк с непустым embedding.

6. Сложные примеры

Если используете другую embedding-модель, проверьте размерность вектора. Для n8n_vectors.embedding размерность не зафиксирована в DDL. Для отдельной таблицы можно оставить embedding vector или указать фиксированную размерность: embedding vector(1536) для geotech/openai/text-embedding-3-small или embedding vector(3072) для geotech/openai/text-embedding-3-large.

Более сложный пример загрузки данных из Excel-файла в Nextcloud и последующей дозагрузки embeddings находится здесь:

"НСИ. Загрузка данных.json", https://n8n.geotech.user.events/workflow/YKeWG7t9yeBBO1DU

"НСИ. Дозагрузка embedding.json", https://n8n.geotech.user.events/workflow/fN513xOpUMkfpuLP

Этот пример сложнее текущих тестовыйх workflow, потому что в нем есть чтение excel файла из файлового хранилища Nextcloud, подготовка строк и дополнительные Code-ноды для преобразования данных.

Работа с Nextcloud описана в инструкции n8n старт,

а подходы к Code-нодам описаны в инструкции n8n сode нода.

Дата обновления: 29 июня 2026

Не нашли ответ? Гена поищет по всей базе знаний или заведёт обращение на консультанта