Система анализа изображений керна
Поиск похожих слоёв через embeddings
Интегрировал модель получения embeddings с Java backend, реализовал поиск в PostgreSQL/pgvector и обновление векторов после редактирования контура.
Задача
Эксперту нужны ранее размеченные похожие области текущего проекта как подсказка при назначении литотипа.
Моя ответственность
Спроектировал и реализовал Java backend, преобразование геометрии, хранение и поиск векторов, API и тесты. AI-команда отвечала за модель и качество сходства.
Результат
Внедрён поиск похожих слоёв на PostgreSQL/pgvector с обновлением устаревших embeddings после изменения контура.
Рекомендации рядом с разметкой
ML-команда подготовила модель, которая преобразует RGB-изображение и контур слоя в embedding. Моя задача — встроить эту модель в продукт: подготовить данные, сохранить вектор и вернуть похожие слои через API.
Путь от изображения до рекомендации
Сравнил варианты хранения и сопоставления векторов по времени выполнения и выбрал pgvector. Согласовал контракт с AI-командой и предложил изменения API модели.
Геометрия и актуальность данных
Соответствие изображения и контура. Перевёл контур из физических координат в координаты изображения модели, согласовав глубину, панораму, уменьшенную копию и размер входа. Результат ограничивается границами изображения.
Обновление вектора. Изменение контура инвалидирует embedding. Перед следующим поиском устаревший вектор обновляется, актуальный — используется повторно.
Граничные сценарии. При недостаточном количестве слоёв API возвращает пустой список. Вызовы хранилища и ML-сервиса отделены от длительных транзакций БД.
Проверка и результат
Эксперт заказчика проверил рекомендации на ограниченном наборе данных. Автоматические тесты покрывают геометрию, повторное использование векторов, недостаточные и ошибочные данные, интеграцию с PostgreSQL/pgvector.
Первоначальные численные замеры не сохранились. Конкретное ускорение и численная метрика качества рекомендаций не заявляются.
Стек: Java, Spring Boot, PostgreSQL, pgvector, JPA/Hibernate, native SQL, REST/multipart, JUnit, Mockito, Testcontainers.