STACKITDocumentEmbedder

STACKITDocumentEmbedder

STACKITDocumentEmbedder 는 STACKIT API를 통해 문서를 임베딩하는 컴포넌트예요. STACKIT이 서빙하는 문서 임베딩 모델을 문서 목록에 적용해 임베딩을 채워 넣어요.

출처: 문서

본문

개요 (Overview)

STACKITDocumentEmbedder 는 STACKIT이 API를 통해 서빙하는 문서 임베딩 모델을 사용할 수 있게 해 줘요.

파라미터 (Parameters)

STACKITDocumentEmbedder 를 쓰려면 STACKIT_API_KEY 를 환경 변수로 설정했는지 확인하세요. 또는 api_key 를 설정해 다른 이름의 환경 변수나 토큰으로 API 키를 제공할 수도 있어요 — 이때 Haystack의 시크릿 관리를 이용해요.

컴포넌트 초기화 시 model 파라미터로 원하는 지원 모델을 설정하세요. 지원 모델 전체 목록은 STACKIT 웹사이트에서 확인할 수 있어요.

선택적으로 기본 api_base_url("https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1")을 바꿀 수 있어요.

그 외 선택 파라미터로는 각 텍스트에 임베딩 전에 붙이는 prefix 와 suffix, batch_size, meta_fields_to_embed, embedding_separator, 그리고 dimensions 가 있어요.

컴포넌트가 동작하려면 문서 목록을 입력으로 받아요.

사용법 (Usage)

STACKITDocumentEmbedder 를 쓰려면 stackit-haystack 패키지를 설치하고, STACKIT_API_KEY 환경 변수에 API 키를 설정하세요:

pip install stackit-haystack

단독으로 쓰기

from haystack import Document
from haystack_integrations.components.embedders.stackit import STACKITDocumentEmbedder

doc = Document(content="I love pizza!")
document_embedder = STACKITDocumentEmbedder(model="intfloat/e5-mistral-7b-instruct")
result = document_embedder.run([doc])
print(result["documents"][0].embedding)
# [0.0215301513671875, 0.01499176025390625, ...]

파이프라인에서 쓰기

STACKITDocumentEmbedder 를 파이프라인에서도 이렇게 쓸 수 있어요:

from haystack import Document
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.stackit import (
    STACKITTextEmbedder,
    STACKITDocumentEmbedder,
)
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever

document_store = InMemoryDocumentStore()
documents = [
    Document(content="My name is Wolfgang and I live in Berlin"),
    Document(content="I saw a black horse running"),
    Document(content="Germany has many big cities"),
]
document_embedder = STACKITDocumentEmbedder(model="intfloat/e5-mistral-7b-instruct")
documents_with_embeddings = document_embedder.run(documents)["documents"]
document_store.write_documents(documents_with_embeddings)

text_embedder = STACKITTextEmbedder(model="intfloat/e5-mistral-7b-instruct")
query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", text_embedder)
query_pipeline.add_component(
    "retriever",
    InMemoryEmbeddingRetriever(document_store=document_store),
)
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
query = "Where does Wolfgang live?"
result = query_pipeline.run({"text_embedder": {"text": query}})
print(result["retriever"]["documents"][0])
# Document(id=..., content: 'My name is Wolfgang and I live in Berlin', score: ...)

더 많은 사용 예시는 STACKIT 통합 저장소와 통합 페이지에서 확인할 수 있어요.

더 알아보기 (Learn more)