由Milvus支持的LLM驱动的文本到图像提示生成

2024-07-24

By Werner Oswald

由Milvus支持的LLM驱动的文本到图像提示生成

背景故事

自从我第一次接触到开源的图像生成AI系统,我就爱上了它们从文本中创造视觉吸引力图像的潜力。我也发现使用这项技术的人有一个显著的优势——他们有更多的时间进行创造性思考,并生成比我能想到的更好的提示。

我无法摆脱这种感觉。因此,我开始浏览网页寻找酷炫的图像和生成它们的提示。然后,我使用这些提示来制作我自己的图像。这帮助我得到了更好的提示,但这需要很多时间。即便如此,我仍然在挣扎,因为我无法快速独立地想出新的提示。

我并没有完全靠自己弄清楚一切,因为我仍然需要帮助。但猜猜看?我找到了一种加快进程的方法。我下载了数百万条提示并将它们放入Milvus向量数据库中。然后,我创建了一种基于简单提示在用户界面中输入来获取相似结果的方法。

这些提示产生了惊人的图像。一位测试这些提示的用户甚至发现它们比他之前使用常规提示得到的结果更好。然后他将他的负面提示与我创建的系统结合起来,生成了他想要的图像。即使没有负面提示,他发现他也可以利用这个系统来创造高质量的图像。

两幅图像都是相同的种子并使用相同的负面提示。

左侧是Prompt Quill提示

仍然是相同的种子但没有负面提示

两幅图像在质量上都有所下降,但左侧的图像在保持图像构图和姿势方面做得更好,而右侧的图像不仅在质量上而且在姿势和背景上都有所偏离。

所以我们可以看到这里更详细的Prompt Quill提示是如何帮助保持图像接近它应该看起来的样子的。

Milvus如何驱动我的文本到图像提示生成

我创建了脚本从多个来源获取和清理提示。然后,我将清理后的提示加载到向量数据库中。最初,我尝试使用pgvector,但发现它太慢了。经过仔细探索,我出于性能原因选择了Milvus,它比pgvector快五倍,而且几乎使用了相同的代码。

一旦数据在Milvus向量存储中可用,乐趣就可以开始了。我开始只是让LLM生成一些不错的提示。它并没有立即奏效。上下文和输入不匹配。所以,我尝试调整,直到我发现我需要给LLM一些指示,告诉它它是一个提示工程师,并添加了一些示例对话历史。这足以让它开始产生精彩的图像。

更重要的是,我可以在我的本地机器上运行所有这些,部分原因是Milvus能够如此快速地运行向量搜索。大部分延迟来自于运行嵌入模型和LLM。向量搜索如此之快,以至于GPU在创建嵌入向量和开始生成最终输出之间几乎没有真正的停顿。

而且我们还没有完成。还有更多的事情要做,现在这已经可用,人们每天都在添加提示和新图像。

这是到目前为止整个过程的图表:

结论

通过构建Prompt Quill,我发现自己在比以往更短的时间内拥有了大量优秀的提示。我还意识到我的系统生成的提示比人为特殊模型制作的提示更加健壮。那些模型需要仔细处理和特殊的负面提示才能生成好的图像。负面提示也倾向于增强这个系统的输出,但对非负面提示图像的改变量并不像一些手工制作的提示那么大。

路线图

下一步是添加负面提示的相同功能。负面提示对如何使用提示生成图像有积极的影响。将来,我将添加第二步,也提供负面提示。我们将使用当前用于生成提示的相同过程,通过将其与系统中生成的提示进行比较。

我发布了一个简单的用户界面来生成提示,假设向量存储是可用的。我将很快上传向量存储数据,并在我的GitHub上添加链接。我想在线运行这个,以便那些没有GPU资源的人也能得到不错的提示,如果你觉得你可以通过赞助长期托管解决方案来帮助,请与我联系。

以下是系统生成的一些提示示例:

  • Werner Oswald

    Werner Oswald

    Milvus Community Member

    准备好开始了吗?

    立刻创建 Zilliz Cloud 集群,存储和检索您的向量。

    免费试用 Zilliz Cloud