Eine LLM-gestützte Text-zu-Bild-Prompt-Generierung mit Milvus
Die Hintergrundgeschichte
Seit ich den ersten Open-Source-KI-Systemen zur Bilderzeugung begegnet bin, habe ich mich in ihr Potenzial verliebt, aus Text visuell ansprechende Bilder zu erstellen. Ich habe auch gesehen, dass Menschen, die diese Technologie nutzen, einen erheblichen Vorteil haben – sie haben mehr Zeit, kreativ zu sein und bessere Prompts zu generieren, als ich es kann.
Ich konnte dieses Gefühl nicht abschütteln. Also begann ich, Webseiten zu durchsuchen, um coole Bilder und die Prompts zu finden, mit denen sie erstellt wurden. Dann nutzte ich diese Prompts, um meine eigenen Bilder zu erstellen. Es half mir, bessere Prompts zu bekommen, aber es dauerte sehr lange. Und selbst dann hatte ich immer noch Schwierigkeiten, weil ich nicht schnell und unabhängig neue Prompts entwickeln konnte.
Ich habe nicht alles vollständig alleine herausgefunden, weil ich immer noch Hilfe brauchte. Aber wisst ihr was? Ich habe einen Weg gefunden, meinen Prozess zu beschleunigen. Ich habe Millionen von Prompts heruntergeladen und sie in eine Milvus-Vektordatenbank eingefügt. Dann habe ich eine Möglichkeit geschaffen, ähnliche Ergebnisse auf Basis einfacher Prompts abzurufen, die in eine UI eingegeben werden.
Diese Prompts führten zu erstaunlichen Bildern. Ein Nutzer, der die Prompts testete, stellte sogar fest, dass sie bessere Ergebnisse lieferten als das, was er zuvor mit seinen üblichen Prompts gemacht hatte. Danach kombinierte er seine negativen Prompts mit dem von mir erstellten System, um die gewünschten Bilder zu generieren. Selbst ohne die negativen Prompts stellte er fest, dass er das System verwenden konnte, um hochwertige Bilder zu erstellen.
Beide Bilder haben denselben Seed und verwenden denselben negativen Prompt.
Links ist der Prompt-Quill-Prompt
Immer noch derselbe Seed, aber kein negativer Prompt
Beide Bilder verlieren an Qualität, aber das linke Bild behält sowohl die Bildkomposition als auch die Pose bei, während das Bild rechts nicht nur bei der Qualität abweicht, sondern auch bei Pose und Hintergrund.
Wir können also sehen, wie der detailliertere Prompt von Prompt Quill geholfen hat, das Bild nahe an dem zu halten, wie es aussehen sollte
Wie Milvus meine Text-zu-Bild-Prompt-Generierung antreibt
Ich habe Skripte erstellt, um Prompts aus mehreren Quellen abzurufen und zu bereinigen. Dann lade ich die bereinigten Prompts in eine Vektordatenbank. Anfangs habe ich pgvector ausprobiert, stellte aber fest, dass es zu langsam war. Nach sorgfältiger Erkundung entschied ich mich aus Leistungsgründen für Milvus; es war bei nahezu demselben Code fünfmal schneller als pgvector.
Sobald die Daten im Milvus Vector Store verfügbar sind, kann der Spaß beginnen. Ich begann damit, das LLM einfach zu bitten, ein paar schöne Prompts zu generieren. Es funktionierte nicht auf Anhieb. Kontext und Eingabe passten nicht zusammen. Also experimentierte ich herum, bis ich herausfand, dass ich dem LLM einige Anweisungen geben musste, die ihm sagten, dass es ein Prompt Engineer sei, und fügte einige beispielhafte Gesprächsverläufe hinzu. Das reichte aus, damit es begann, wunderbare Bilder zu erzeugen.
Außerdem kann ich all das auf meinem lokalen Rechner ausführen, teilweise weil Milvus die Vektorsuche so schnell ausführen kann. Der größte Teil der Latenz entsteht durch das Ausführen des Embedding-Modells und des LLM. Die Vektorsuche ist so schnell, dass die GPU keine echte Pause zwischen der Erstellung des Embedding-Vektors und dem Beginn der Erzeugung der finalen Ausgabe hat.
Und wir sind noch nicht fertig. Es gibt noch viel zu tun, und jetzt, da dies verfügbar ist, fügen Menschen täglich Prompts und neue Bilder hinzu.
Hier ist ein Diagramm des gesamten bisherigen Prozesses:
Fazit
Durch den Aufbau von Prompt Quill hatte ich in viel kürzerer Zeit als zuvor jede Menge großartiger Prompts. Mir wurde auch klar, dass die Prompts, die mein System erstellt, robuster sind als diejenigen, die Menschen von Hand für spezielle Modelle erstellen. Diese Modelle müssen sorgfältig gehandhabt werden und benötigen spezielle negative Prompts, um gute Bilder zu erzeugen. Negative Prompts verbessern tendenziell auch die Ausgabe dieses Systems, aber das Ausmaß der Veränderung gegenüber den Bildern ohne negative Prompts ist nicht so groß wie bei einigen dieser handgefertigten Prompts.
Roadmap
Der nächste Schritt besteht darin, dieselbe Funktion für negative Prompts hinzuzufügen. Negative Prompts haben einen positiven Einfluss darauf, wie Prompts zur Generierung von Bildern verwendet werden können. In Zukunft werde ich einen zweiten Schritt hinzufügen, um ebenfalls negative Prompts bereitzustellen. Wir werden denselben Prozess verwenden, der derzeit zur Erstellung der Prompts genutzt wird, indem wir sie mit den im System generierten Prompts vergleichen.
Ich habe eine einfache UI veröffentlicht, um die Prompts zu generieren, vorausgesetzt, der Vector Store ist verfügbar. Ich werde sehr bald Vector-Store-Daten hochladen und die Links zu meinem GitHub hinzufügen. Ich würde dies gern online betreiben, damit auch Menschen, die nicht über die GPU-Ressourcen verfügen, schöne Prompts erhalten können. Wenn Sie das Gefühl haben, dass Sie helfen könnten, indem Sie eine langfristige Hosting-Lösung sponsern, kontaktieren Sie mich bitte.
Ein paar Beispiele, für die das System die Prompts erstellt hat:
Weiterlesen

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.


