MistralDocumentEmbedder
MistralDocumentEmbedder
Mistral API와 모델로 문서 목록의 임베딩을 계산하는 컴포넌트예요. 인덱싱 파이프라인에서 DocumentWriter 앞에 두면 돼요.
본문
이 컴포넌트는 Document 목록을 임베딩할 때 사용해야 해요. 문자열을 임베딩할 때는 MistralTextEmbedder를 사용하세요.
개요
MistralDocumentEmbedder는 문서 목록의 임베딩을 계산하고, 얻은 벡터를 각 문서의 embedding 필드에 저장해요. Mistral API와 그 임베딩 모델을 사용해요.
컴포넌트는 현재 mistral-embed 임베딩 모델을 지원해요. 지원되는 모든 모델 목록은 Mistral의 임베딩 모델 문서에서 확인할 수 있어요.
이 통합을 Haystack에서 쓰려면 설치해요.
pip install mistral-haystack
MistralDocumentEmbedder는 Mistral API 키가 필요해요. 기본적으로 MISTRAL_API_KEY 환경 변수를 사용해요. 아니면 초기화 때 api_key로 API 키를 넘길 수 있어요.
embedder = MistralDocumentEmbedder(
api_key=Secret.from_token("<your-api-key>"),
model="mistral-embed",
)
사용법
단독 사용:
먼저 MISTRAL_API_KEY를 환경 변수로 설정하거나 직접 전달하는 걸 잊지 마세요.
from haystack import Document
from haystack.utils import Secret
from haystack_integrations.components.embedders.mistral.document_embedder import (
MistralDocumentEmbedder,
)
doc = Document(content="I love pizza!")
embedder = MistralDocumentEmbedder(
api_key=Secret.from_token("<your-api-key>"),
model="mistral-embed",
)
result = embedder.run([doc])
print(result["documents"][0].embedding)
# [-0.453125, 1.2236328, 2.0058594, 0.67871094...]
파이프라인 안에서:
아래는 인덱싱 파이프라인의 MistralDocumentEmbedder 예시예요. 웹페이지 내용을 InMemoryDocumentStore에 인덱싱해요.
from haystack import Pipeline
from haystack.components.converters import HTMLToDocument
from haystack.components.fetchers import LinkContentFetcher
from haystack.components.preprocessors import DocumentSplitter
from haystack.components.writers import DocumentWriter
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.mistral.document_embedder import (
MistralDocumentEmbedder,
)
document_store = InMemoryDocumentStore()
fetcher = LinkContentFetcher()
converter = HTMLToDocument()
chunker = DocumentSplitter()
embedder = MistralDocumentEmbedder()
writer = DocumentWriter(document_store=document_store)
indexing = Pipeline()
indexing.add_component(name="fetcher", instance=fetcher)
indexing.add_component(name="converter", instance=converter)
indexing.add_component(name="chunker", instance=chunker)
indexing.add_component(name="embedder", instance=embedder)
indexing.add_component(name="writer", instance=writer)
indexing.connect("fetcher", "converter")
indexing.connect("converter", "chunker")
indexing.connect("chunker", "embedder")
indexing.connect("embedder", "writer")
indexing.run(data={"fetcher": {"urls": ["https://mistral.ai/news/la-plateforme/"]}})