由Milvus支持的LLM驱动的文本到图像提示生成
背景故事
自从我第一次接触到开源的图像生成AI系统,我就爱上了它们从文本中创造视觉吸引力图像的潜力。我也发现使用这项技术的人有一个显著的优势——他们有更多的时间进行创造性思考,并生成比我能想到的更好的提示。
我无法摆脱这种感觉。因此,我开始浏览网页寻找酷炫的图像和生成它们的提示。然后,我使用这些提示来制作我自己的图像。这帮助我得到了更好的提示,但这需要很多时间。即便如此,我仍然在挣扎,因为我无法快速独立地想出新的提示。
我并没有完全靠自己弄清楚一切,因为我仍然需要帮助。但猜猜看?我找到了一种加快进程的方法。我下载了数百万条提示并将它们放入Milvus向量数据库中。然后,我创建了一种基于简单提示在用户界面中输入来获取相似结果的方法。
这些提示产生了惊人的图像。一位测试这些提示的用户甚至发现它们比他之前使用常规提示得到的结果更好。然后他将他的负面提示与我创建的系统结合起来,生成了他想要的图像。即使没有负面提示,他发现他也可以利用这个系统来创造高质量的图像。
两幅图像都是相同的种子并使用相同的负面提示。
左侧是Prompt Quill提示
仍然是相同的种子但没有负面提示
两幅图像在质量上都有所下降,但左侧的图像在保持图像构图和姿势方面做得更好,而右侧的图像不仅在质量上而且在姿势和背景上都有所偏离。
所以我们可以看到这里更详细的Prompt Quill提示是如何帮助保持图像接近它应该看起来的样子的。
Milvus如何驱动我的文本到图像提示生成
我创建了脚本从多个来源获取和清理提示。然后,我将清理后的提示加载到向量数据库中。最初,我尝试使用pgvector,但发现它太慢了。经过仔细探索,我出于性能原因选择了Milvus,它比pgvector快五倍,而且几乎使用了相同的代码。
一旦数据在Milvus向量存储中可用,乐趣就可以开始了。我开始只是让LLM生成一些不错的提示。它并没有立即奏效。上下文和输入不匹配。所以,我尝试调整,直到我发现我需要给LLM一些指示,告诉它它是一个提示工程师,并添加了一些示例对话历史。这足以让它开始产生精彩的图像。
更重要的是,我可以在我的本地机器上运行所有这些,部分原因是Milvus能够如此快速地运行向量搜索。大部分延迟来自于运行嵌入模型和LLM。向量搜索如此之快,以至于GPU在创建嵌入向量和开始生成最终输出之间几乎没有真正的停顿。
而且我们还没有完成。还有更多的事情要做,现在这已经可用,人们每天都在添加提示和新图像。
这是到目前为止整个过程的图表:
结论
通过构建Prompt Quill,我发现自己在比以往更短的时间内拥有了大量优秀的提示。我还意识到我的系统生成的提示比人为特殊模型制作的提示更加健壮。那些模型需要仔细处理和特殊的负面提示才能生成好的图像。负面提示也倾向于增强这个系统的输出,但对非负面提示图像的改变量并不像一些手工制作的提示那么大。
路线图
下一步是添加负面提示的相同功能。负面提示对如何使用提示生成图像有积极的影响。将来,我将添加第二步,也提供负面提示。我们将使用当前用于生成提示的相同过程,通过将其与系统中生成的提示进行比较。
我发布了一个简单的用户界面来生成提示,假设向量存储是可用的。我将很快上传向量存储数据,并在我的GitHub上添加链接。我想在线运行这个,以便那些没有GPU资源的人也能得到不错的提示,如果你觉得你可以通过赞助长期托管解决方案来帮助,请与我联系。
以下是系统生成的一些提示示例:
技术干货
使用RAGAs评估基于Milvus的RAG应用
本文将重点介绍如何使用RAGAs评估RAG系统。
2024-08-08技术干货
驾驭机器学习管理的挑战:成功所需的工具与洞察
随着机器学习(ML)以惊人的速度持续进步,管理和版本控制大规模数据集和模型的复杂性呈指数级增长。虽然开发者长期以来依赖于像Git这样的工具来进行软件开发中的版本控制,但机器学习的独特挑战需要更专业的解决方案。与软件不同,软件的代码库可以相对容易地进行版本控制和管理,而ML模型、数据集和工件往往缺乏统一的行业标准来进行版本控制和管理。
2024-11-05技术干货
搜索仍然重要:通过生成型人工智能和向量数据库增强信息检索
尽管像ChatGPT这样的大型语言模型(LLMs)取得了进步,但搜索仍然很重要。将生成型人工智能(GenAI)与搜索和向量数据库结合起来,可以增强搜索的准确性和体验。
2024-11-12