Генерация промптов для преобразования текста в изображение на базе LLM с Milvus
Предыстория
С тех пор как я впервые столкнулся с open-source AI-системами для генерации изображений, я влюбился в их потенциал создавать визуально привлекательные изображения из текста. Я также увидел, что люди, использующие эту технологию, получают значительное преимущество — у них больше времени на творчество и создание более удачных промптов, чем у меня.
Я не мог избавиться от этого ощущения. Поэтому я начал искать на веб-страницах классные изображения и промпты, с помощью которых они были созданы. Затем я использовал эти промпты, чтобы делать собственные изображения. Это помогло мне получать более качественные промпты, но занимало много времени. И даже тогда я всё ещё испытывал трудности, потому что не мог быстро и самостоятельно придумывать новые промпты.
Я не во всём разобрался полностью сам, потому что мне всё ещё нужна была помощь. Но знаете что? Я нашёл способ ускорить свой процесс. Я скачал миллионы промптов и поместил их в векторную базу данных Milvus. Затем я создал способ получать похожие результаты на основе простых промптов, введённых в UI.
Эти промпты давали потрясающие изображения. Один пользователь, который тестировал промпты, даже обнаружил, что они дают лучшие результаты, чем то, что он делал раньше со своими обычными промптами. Затем он объединил свои негативные промпты с созданной мной системой, чтобы генерировать нужные ему изображения. Даже без негативных промптов он обнаружил, что может использовать систему для создания изображений высокого качества.
Оба изображения имеют один и тот же seed и используют один и тот же негативный Prompt.
Слева — Prompt Quill Prompt
Всё ещё тот же seed, но без негативного Prompt
Оба изображения теряют в качестве, но левое изображение сохраняет композицию изображения, а также позу, тогда как изображение справа отличается не только по качеству, но и по позе и фону.
Таким образом, мы видим, как более подробный Prompt от prompt quill помог сохранить изображение близким к тому, как оно должно было выглядеть
Как Milvus обеспечивает мою генерацию промптов text-to-image
Я создал скрипты для сбора и очистки промптов из нескольких источников. Затем я загружаю очищенные промпты в векторную базу данных. Сначала я попробовал pgvector, но обнаружил, что он слишком медленный. После тщательного изучения я выбрал Milvus из соображений производительности: он был в пять раз быстрее pgvector при почти том же коде.
Как только данные становятся доступны в Milvus Vector Store, начинается самое интересное. Я начал с того, что просто попросил LLM сгенерировать несколько хороших промптов. Сразу это не сработало. Контекст и ввод не совпадали. Поэтому я экспериментировал, пока не понял, что нужно дать LLM инструкции, объясняющие, что он является prompt engineer, и добавить несколько примеров истории диалога. Этого оказалось достаточно, чтобы он начал создавать замечательные изображения.
Более того, я могу запускать всё это на своём локальном компьютере, отчасти потому, что Milvus способен выполнять векторный поиск очень быстро. Большая часть задержки связана с запуском embedding model и LLM. Векторный поиск настолько быстрый, что у GPU нет реальной паузы между созданием embedding vector и началом формирования итогового вывода.
И мы ещё не закончили. Ещё многое предстоит сделать, и теперь, когда это доступно, люди ежедневно добавляют промпты и новые изображения.
Вот схема всего процесса на данный момент:
Заключение
Создавая Prompt Quill, я обнаружил, что получаю множество отличных промптов за гораздо меньшее время, чем раньше. Я также понял, что промпты, которые создает моя система, более надежны, чем те, которые люди вручную создают для специальных моделей. Эти модели требуют аккуратного обращения и специальных негативных промптов, чтобы создавать хорошие изображения. Негативные промпты также, как правило, улучшают результат работы этой системы, но степень изменения изображений, созданных без негативных промптов, не так велика, как у некоторых из этих вручную составленных промптов.
Дорожная карта
Следующий шаг — добавить такую же функцию для негативных промптов. Негативные промпты положительно влияют на то, как промпты могут использоваться для генерации изображений. В будущем я добавлю второй этап, чтобы также предоставлять негативные промпты. Мы будем использовать тот же процесс, который сейчас применяется для создания промптов, сравнивая их со сгенерированными промптами в системе.
Я опубликовал простой UI для генерации промптов при условии, что векторное хранилище доступно. Я очень скоро загружу данные векторного хранилища и добавлю ссылки в мой GitHub. Я хотел бы запустить это онлайн, чтобы люди, у которых нет ресурсов GPU, тоже могли получать хорошие промпты; если вы считаете, что могли бы помочь, спонсируя долгосрочное хостинговое решение, пожалуйста, свяжитесь со мной.
Несколько примеров, для которых система создала промпты:
Читать далее

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.


