Использование связки Python и OpenAI API для очистки базы данных от дублей

Как использовать связку Python и OpenAI API для очистки базы данных от дублей

Используйте Python с OpenAI API для автоматической идентификации и удаления дублей из базы данных. Этот метод применяет нейросетевой анализ семантического сходства текстовых данных, позволяя находить не только точные копии, но и логические дубли с опечатками и перефразировками.

Причины возникновения дублей в БД

  • Импорт данных из нескольких источников без дедупликации
  • Ошибки пользователей при ручном вводе информации
  • Сбои в системе синхронизации между приложениями
  • Отсутствие уникальных ограничений (UNIQUE constraints) на уровне БД
  • Миграция данных без проверки целостности
  • Использование устаревших скриптов без функций проверки

Пошаговая инструкция по очистке дублей

  1. Установите необходимые библиотеки Python: откройте терминал и выполните команду pip install openai psycopg2-binary pandas numpy
  2. Получите API ключ OpenAI: авторизуйтесь на сайте https://platform.openai.com/account/api-keys, создайте новый ключ и скопируйте его в переменную окружения OPENAI_API_KEY
  3. Подключитесь к вашей базе данных PostgreSQL: создайте файл config.py с учетными данными подключения (host, user, password, database)
  4. Загрузите все записи из таблицы в оперативную память: используйте SQL запрос SELECT id, name, email FROM users и поместите результаты в DataFrame
  5. Создайте функцию для вычисления эмбеддингов OpenAI: напишите функцию, которая отправляет текст записи в API с моделью text-embedding-3-small и получает векторное представление
  6. Вычислите эмбеддинги для всех записей: примените функцию ко всем строкам в DataFrame и сохраните векторы в новый столбец
  7. Найдите близкие по семантике записи: используйте функцию cosine_similarity из scikit-learn для сравнения всех пар векторов
  8. Установите порог сходства (например, 0.95): отметьте как дубли все пары записей с коэффициентом выше порога
  9. Удалите дубли из базы: выполните DELETE запрос по идентификаторам помеченных дублей или перенесите их в архивную таблицу
  10. Добавьте уникальный индекс на критические поля: выполните команду CREATE UNIQUE INDEX idx_email_unique ON users(LOWER(email)) для предотвращения новых дублей

Часто задаваемые вопросы

Сколько стоит обработка данных через OpenAI API? Модель text-embedding-3-small стоит $0.02 за миллион токенов; для 10 000 записей с текстом среднего размера расходы составят примерно $0.20-0.50.

Можно ли обрабатывать базы с миллионами записей? Да, но разделите обработку на батчи по 1000-5000 записей, используйте асинхронные запросы и пакетную загрузку эмбеддингов через метод batch_process().

Что делать, если порог сходства 0.95 удаляет нужные записи? Понизьте порог до 0.90 или 0.85, или вручную проверьте случаи с высоким сходством перед удалением, используя параметр manual_review=True.

Похожие материалы

ИИ для распознавания чеков и накладных в бизнес-процессах
Создание отчетов по эффективности сотрудников через нейросети
ИИ-ассистент в Notion для автоматического ведения базы проектов