Milvus를 활용한 LLM 기반 텍스트-이미지 프롬프트 생성
배경 이야기
처음 오픈소스 이미지 생성 AI 시스템을 접한 이후, 저는 텍스트로 시각적으로 매력적인 이미지를 만들어낼 수 있는 그 잠재력에 매료되었습니다. 또한 이 기술을 사용하는 사람들이 상당한 이점을 얻는다는 것도 보았습니다—그들은 저보다 더 창의적으로 생각하고 더 나은 프롬프트를 생성할 시간이 더 많았습니다.
저는 이 느낌을 떨쳐낼 수 없었습니다. 그래서 웹페이지를 뒤져 멋진 이미지와 그것을 만든 프롬프트를 찾기 시작했습니다. 그런 다음 그 프롬프트를 사용해 제 이미지를 만들었습니다. 더 나은 프롬프트를 얻는 데 도움이 되었지만, 시간이 많이 걸렸습니다. 그리고 그럼에도 여전히 새로운 프롬프트를 빠르고 독립적으로 떠올리는 데 어려움을 겪었습니다.
모든 것을 완전히 혼자 알아낸 것은 아니었습니다. 여전히 도움이 필요했기 때문입니다. 그런데 말이죠? 저는 제 과정을 빠르게 만드는 방법을 찾았습니다. 수백만 개의 프롬프트를 다운로드해 Milvus 벡터 데이터베이스에 넣었습니다. 그런 다음 UI에 입력한 간단한 프롬프트를 기반으로 유사한 결과를 가져오는 방법을 만들었습니다.
이 프롬프트들은 놀라운 이미지를 만들어냈습니다. 프롬프트를 테스트한 한 사용자는 그것들이 자신이 평소 프롬프트로 하던 것보다 더 나은 결과를 만든다는 사실까지 발견했습니다. 그는 이후 자신이 원하는 이미지를 생성하기 위해 자신의 네거티브 프롬프트를 제가 만든 시스템과 결합했습니다. 네거티브 프롬프트가 없어도, 그는 이 시스템을 사용해 고품질 이미지를 만들 수 있다는 것을 알게 되었습니다.
두 이미지는 같은 seed이고 같은 네거티브 Prompt를 사용합니다.
왼쪽은 Prompt Quill Prompt입니다
여전히 같은 seed이지만 네거티브 Prompt는 없습니다
두 이미지 모두 품질 면에서 벗어나지만, 왼쪽 Image는 이미지 구도뿐 아니라 포즈도 유지하는 반면 오른쪽 이미지는 품질뿐만 아니라 포즈와 배경에서도 벗어납니다.
따라서 prompt quill의 더 자세한 Prompt가 이미지가 의도한 모습에 가깝게 유지되도록 도왔다는 것을 알 수 있습니다
Milvus가 제 텍스트-이미지 프롬프트 생성을 지원하는 방법
저는 여러 소스에서 프롬프트를 가져오고 정리하는 스크립트를 만들었습니다. 그런 다음 정리된 프롬프트를 vector database에 로드합니다. 처음에는 pgvector를 시도했지만 너무 느리다는 것을 알게 되었습니다. 신중히 살펴본 끝에 성능상의 이유로 Milvus를 선택했으며, 거의 같은 코드로 pgvector보다 다섯 배 빨랐습니다.
데이터가 Milvus Vector Store에서 사용 가능해지면, 재미가 시작됩니다. 처음에는 LLM에게 멋진 프롬프트를 생성해 달라고만 요청했습니다. 처음부터 잘 작동하지는 않았습니다. 컨텍스트와 입력이 맞지 않았습니다. 그래서 여러 가지를 시도하다가 LLM에게 그것이 프롬프트 엔지니어라고 알려주는 지침과 예시 대화 기록을 추가해야 한다는 것을 알아냈습니다. 이것만으로도 멋진 이미지를 만들어내기 시작하기에 충분했습니다.
더욱이 이 모든 것을 제 로컬 머신에서 실행할 수 있습니다. 부분적으로는 Milvus가 벡터 검색을 매우 빠르게 실행할 수 있기 때문입니다. 대부분의 지연 시간은 임베딩 모델과 LLM을 실행하는 데서 발생합니다. 벡터 검색이 매우 빨라서 GPU는 임베딩 벡터 생성과 최종 출력을 생성하기 시작하는 사이에 실질적인 멈춤이 없습니다.
그리고 아직 끝나지 않았습니다. 앞으로 해야 할 일이 많고, 이제 이것이 공개되었기 때문에 사람들이 매일 프롬프트와 새로운 이미지를 추가하고 있습니다.
지금까지의 전체 과정을 나타낸 다이어그램은 다음과 같습니다:
결론
Prompt Quill을 만들면서, 이전보다 훨씬 적은 시간에 훌륭한 프롬프트를 많이 얻을 수 있게 되었습니다. 또한 제 시스템이 만드는 프롬프트가 특수 모델용으로 사람들이 손으로 만드는 프롬프트보다 더 견고하다는 것도 깨달았습니다. 그런 모델들은 좋은 이미지를 만들기 위해 세심한 처리와 특수한 네거티브 프롬프트가 필요합니다. 네거티브 프롬프트도 이 시스템의 출력을 향상시키는 경향이 있지만, 네거티브 프롬프트를 사용하지 않은 이미지에 대한 변화의 정도는 그런 수작업 프롬프트 중 일부에서만큼 크지는 않습니다.
로드맵
다음 단계는 네거티브 프롬프트에도 동일한 기능을 추가하는 것입니다. 네거티브 프롬프트는 프롬프트가 이미지를 생성하는 데 사용되는 방식에 긍정적인 영향을 줍니다. 앞으로는 네거티브 프롬프트도 제공하기 위한 두 번째 단계를 추가할 예정입니다. 현재 프롬프트를 생성하는 데 사용되는 동일한 프로세스를 사용하여, 이를 시스템에서 생성된 프롬프트와 비교할 것입니다.
벡터 스토어를 사용할 수 있다고 가정하고 프롬프트를 생성하는 간단한 UI를 공개했습니다. 곧 벡터 스토어 데이터를 업로드하고 제 GitHub에 링크를 추가하겠습니다. GPU 리소스가 없는 사람들도 좋은 프롬프트를 얻을 수 있도록 이것을 온라인에서 운영하고 싶습니다. 장기 호스팅 솔루션 후원을 통해 도울 수 있다고 생각하신다면 저에게 연락해 주세요.
시스템이 프롬프트를 생성한 몇 가지 예:
계속 읽기

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.

DeepSeek Always Busy? Deploy It Locally with Milvus in Just 10 Minutes—No More Waiting!
Learn how to set up DeepSeek-R1 on your local machine using Ollama, AnythingLLM, and Milvus in just 10 minutes. Bypass busy servers and enhance AI responses with custom data.


