Haystack — vLLM 배포

Haystack — vLLM 배포

Haystack는 LLM, 트랜스포머 모델, 벡터 검색 등을 활용한 애플리케이션을 구축할 수 있는 엔드투엔드 LLM 프레임워크입니다. RAG(검색 증강 생성), 문서 검색, 질의응답, 답변 생성 등 어떤 작업이든 최신 임베딩 모델과 LLM을 파이프라인으로 오케스트레이션해 NLP 애플리케이션을 만들 수 있습니다. vLLM을 백엔드로 하는 LLM 서버를 배포하면 OpenAI 호환 엔드포인트가 노출됩니다.

출처: 문서

본문

사전 준비 (Prerequisites)

vLLM과 Haystack 환경을 설정합니다.

pip install vllm haystack-ai

배포 (Deploy)

  1. 지원되는 채팅 완성 모델로 vLLM 서버를 시작합니다.
vllm serve mistralai/Mistral-7B-Instruct-v0.1
  1. Haystack의 OpenAIGeneratorOpenAIChatGenerator 컴포넌트로 vLLM 서버를 질의합니다.
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
from haystack.utils import Secret

generator = OpenAIChatGenerator(
    # OpenAI API와의 호환을 위해 placeholder api_key 가 필요
    api_key=Secret.from_token("VLLM-PLACEHOLDER-API-KEY"),
    model="mistralai/Mistral-7B-Instruct-v0.1",
    api_base_url="http://{your-vLLM-host-ip}:{your-vLLM-host-port}/v1",
    generation_kwargs={"max_tokens": 512},
)

response = generator.run(
  messages=[ChatMessage.from_user("Hi. Can you help me plan my next trip to Italy?")]
)

print("-"*30)
print(response)
print("-"*30)

출력 예시:

------------------------------
{'replies': [ChatMessage(_role=<ChatRole.ASSISTANT: 'assistant'>, _content=[TextContent(text=' Of course! Where in Italy would you like to go and what type of trip are you looking to plan?')], _name=None, _meta={'model': 'mistralai/Mistral-7B-Instruct-v0.1', 'index': 0, 'finish_reason': 'stop', 'usage': {'completion_tokens': 23, 'prompt_tokens': 21, 'total_tokens': 44, 'completion_tokens_details': None, 'prompt_tokens_details': None}})]}
------------------------------

자세한 내용은 "Using vLLM in Haystack" 튜토리얼을 참고하세요. Haystack은 vLLM의 /v1 OpenAI 호환 API에 표준 컴포넌트로 연결되므로, RAG 파이프라인에 임베딩과 생성 모델을 함께 배치하기 쉽습니다.

더 알아보기 (Learn more)