올바른 Embedder 고르기
올바른 Embedder 고르기
Haystack과 함께 작업할 때 올바른 Embedder를 고르는 데 도움이 되는 페이지예요. Text Embedder와 Document Embedder의 차이를 설명하고, API 기반 Embedder와 온프레미스(on-premise)에서 모델을 실행하는 Embedder를 다룹니다.
출처: 문서
본문
Haystack의 Embedder는 사전 학습된 모델을 이용해 텍스트나 문서를 벡터 표현으로 변환해요. Haystack Embedder가 만드는 임베딩은 고정 길이 벡터이며, 텍스트 안의 문맥 정보와 의미적 관계를 포착합니다.
임베딩은 단독으로는 정보 검색 목적(의미 검색/벡터 검색)에만 사용됩니다. 파이프라인에서 임베딩을 질문 답변 같은 작업에 쓸 수 있는데, 임베딩 검색을 이용한 QA 파이프라인은 다음 단계를 거쳐요:
- 쿼리를 벡터/임베딩으로 변환합니다.
- 임베딩 유사도에 기반해 유사한 문서를 찾습니다.
- 쿼리와 검색된 문서를 언어 모델(추출형 또는 생성형)에 전달합니다.
Text Embedder와 Document Embedder
Embedder에는 텍스트용과 문서용 두 종류가 있어요.
Text Embedder는 텍스트 문자열을 다루며, 주로 쿼리 파이프라인의 시작 부분에서 사용됩니다. 쿼리 텍스트를 벡터 임베딩으로 변환해 Retriever에 보냅니다.
Document Embedder는 Document 객체를 임베딩하며, 주로 인덱싱 파이프라인에서 Converters 이후, DocumentWriter 이전에 사용됩니다. Document 객체 형식을 유지하면서 float 숫자 리스트로 된 임베딩 필드를 추가합니다.
텍스트와 문서에 같은 임베딩 모델을 사용해야 해요. 즉, 인덱싱 파이프라인에서 CohereDocumentEmbedder를 썼다면 쿼리 파이프라인에서도 같은 모델의 CohereTextEmbedder를 써야 합니다.
API 기반 Embedder
이 Embedder들은 외부 API를 사용해 임베딩을 생성합니다. 컴퓨팅을 직접 관리할 필요 없이 강력한 모델에 접근할 수 있게 해줘요.
비용은 선택에 따라 달라질 수 있습니다. 보낸 토큰과 생성된 토큰 기준으로 과금되거나, 모델 호스팅 기준(보통 시간당)으로 과금됩니다. 자세한 내용은 각 제공 업체 웹사이트를 참고하세요.
Haystack은 다양한 제공 업체의 모델을 지원해요: OpenAI, Cohere, Jina, Azure, Mistral, Amazon Bedrock 등이며 계속 추가되고 있습니다.
또한 프로토타이핑을 위해 Haystack의 Hugging Face API Embedder(HF Serverless Inference API 또는 유료 HF Inference Endpoints 사용)를 쓸 수도 있습니다.
온프레미스 Embedder
온프레미스 Embedder는 공개 모델을 자신의 머신/인프라에서 호스팅하게 해줍니다. 로컬 실험에 이상적인 선택이에요.
셀프 호스팅 시 다양한 오픈 모델 옵션 중에서 고를 수 있습니다. MTEB(Massive Text Embedding Benchmark) 리더보드가 검색 성능과 모델 크기를 이해하는 좋은 기준이 될 수 있어요.
데이터 프라이버시 때문에 데이터를 외부 제공 업체에 보내지 않기로 했고, 충분한 컴퓨팅 자원(CPU 또는 GPU)이 있는 프로덕션 시나리오에 적합합니다.
Haystack에서 쓸 수 있는 몇 가지 옵션:
- Sentence Transformers: 주로 PyTorch를 사용하므로 GPU를 쓰면 빠르게 실행되는 옵션이에요. 한편 GPU가 필요 없는 더 효율적인 백엔드 지원도 점점 늘고 있습니다.
- Hugging Face Text Embedding Inference: CPU와 GPU 모두에서 오픈 임베딩 모델을 효율적으로 서빙하는 라이브러리예요. Haystack에서는 HuggingFace API Embedder를 통해 사용할 수 있습니다.
- Hugging Face Optimum: 특정 하드웨어에서 모델을 더 빠르게 실행하도록 설계된 Embedder예요. Intel IPEX처럼 특정 하드웨어 전용 최적화를 구현합니다.
- Fastembed: 저사양 표준 머신에서도 돌아가도록 최적화되어 있어요. BM25, SPLADE 같은 희소(sparse) 기법과 전통적인 밀집(dense) 임베딩 등 여러 종류의 임베딩을 지원합니다.
- Ollama: 양자화된 모델을 CPU(+GPU)에서 실행합니다. 일반 모델의 양자화 때문에 임베딩 품질은 다소 낮을 수 있지만, 표준 머신에서 효율적으로 실행됩니다.
- Nvidia: Nvidia의 NIM 위에 구축되어 최적화된 클라우드 플랫폼에서 호스팅됩니다. API로 모델을 쓰거나 Nvidia NIM으로 로컬 배포하는 두 가지 옵션을 모두 제공합니다.
참고: Haystack에서 쓸 수 있는 전체 Embedder 목록은 메인 Embedders 페이지에서 확인하세요.
더 알아보기 (Learn more)
- Choosing the Right Embedder — Haystack 공식 문서