Haystack 핵심 개념 개요

Haystack 핵심 개념 개요 (Concepts Overview)

Haystack이 뭘 하는 프레임워크인지 대충은 알겠는데, "컴포넌트? 파이프라인? Document Store?" 용어가 너무 많아서 머리가 아플 때가 있어요. 이 문서는 Haystack이 돌아가는 데 쓰는 가장 중요한 개념들을 한자리에 모아 정리해 주는 개요예요. 커스텀 에이전트와 RAG 파이프라인을 LLM과 함께 만들고, 프로토타입부터 배포까지 해결하는 데 필요한 모든 도구가 Haystack에 있다는 전제에서 출발해요.

출처: Haystack Concepts Overview (공식 문서)

컴포넌트 (Components)

Haystack은 각기 다른 종류의 작업을 수행하는 다양한 컴포넌트를 제공해요. 전체 목록은 왼쪽 내비게이션의 PIPELINE COMPONENTS 섹션에서 볼 수 있어요. 이들은 대부분 최신 LLM과 transformer 모델로 구동돼요. 코드로 보면, 직접 호출할 수 있는 메서드를 가진 파이썬 클래스예요. 보통 필요한 건 컴포넌트를 필수 파라미터로 초기화하고, run() 메서드로 실행하는 것뿐이에요.

이 레벨에서 Haystack 컴포넌트를 다루는 건 손이 많이 가는(hands-on) 방식이에요. 컴포넌트는 모든 입력·출력의 이름과 타입을 정의해요. 컴포넌트 API는 복잡성을 줄이고, 예를 들어 서드파티 API나 데이터베이스를 위한 커스텀 컴포넌트를 만들기 쉽게 해줘요. Haystack은 파이프라인을 실행하기 전에 컴포넌트 간 연결을 검증하고, 필요하면 오류 수정 방법을 안내하는 메시지를 생성해요.

제너레이터 (Generators)

Generators는 프롬프트를 주면 텍스트 응답을 생성하는 역할을 해요. 각 LLM 기술(OpenAI, Cohere, 로컬 모델 등)마다 특화되어 있어요. Haystack 코어는 ChatGenerators를 기본으로 제공하는데, 이들은 채팅 완성을 지원하고 대화형 문맥을 위해 설계되어 사용자와 상호작용할 ChatMessage 목록을 기대해요. 더 단순한 텍스트 생성(예: 번역·요약)에는 일반 문자열 프롬프트도 받아들여요.

다양한 Generators에 대한 자세한 내용은 Choosing the Right Generator 가이드를 읽어 보세요.

리트리버 (Retrievers)

Retrievers는 Document Store 안의 모든 문서를 훑어 사용자 질문에 맞는 문서를 골라 다음 컴포넌트로 넘겨요. 특정 Document Store에 맞게 커스터마이즈된 Retriever가 여러 종류 있어요. 즉 각 데이터베이스의 특정 요구사항을 커스터마이즈된 파라미터로 처리할 수 있죠.

예를 들어 Elasticsearch Document Store라면 Document Store와 Retriever 패키지가 모두 그 GitHub repo에 들어 있어요.

Document Store

Document Store는 Haystack에서 문서를 저장하는 객체로, 스토리지 데이터베이스에 대한 인터페이스 같은 존재예요. write_documents()delete_documents() 같은 특정 함수로 데이터를 다뤄요. 여러 컴포넌트가 Document Store에 접근해서, 예를 들어 문서를 읽거나 쓰며 상호작용할 수 있어요.

Haystack에서 더 복잡한 파이프라인을 다룬다면 DocumentWriter 컴포넌트로 Document Store에 데이터를 쓰게 할 수 있어요.

데이터 클래스 (Data Classes)

Haystack에서는 다양한 데이터 클래스를 사용해 시스템을 통해 데이터를 운반해요. 이들은 대부분 파이프라인의 입력이나 출력으로 나타나요.

Document 클래스는 파이프라인을 통해 운반될 정보를 담아요. 텍스트, 메타데이터, 바이너리 데이터, 벡터 표현이 될 수 있어요. 문서는 Document Store에 쓰일 수 있고, 다른 컴포넌트가 읽고 쓸 수도 있어요.

Answer 클래스는 파이프라인에서 생성된 답변뿐 아니라 그 답변의 기원이 된 질문과 메타데이터까지 담아요.

파이프라인 (Pipelines)

마지막으로, 다양한 컴포넌트와 Document Store, 통합들을 파이프라인으로 결합해 강력하고 커스터마이즈 가능한 시스템을 만들 수 있어요. 동시 흐름, 독립 컴포넌트, 루프, 그리고 다양한 연결 방식을 지원하는 매우 유연한 시스템이에요. 전처리·인덱싱·쿼리 단계를 하나의 파이프라인에 넣을 수도 있고, 필요에 따라 나눌 수도 있어요.

파이프라인을 재사용하고 싶다면 직렬화 과정을 통해 YAML 형식으로 디스크에 저장하거나 공유할 수 있어요.

더 알아보기 (Learn more)