EdenAIDocumentEmbedder
EdenAIDocumentEmbedder
Eden AI의 OpenAI 호환 API를 사용해 문서 리스트의 임베딩을 계산하는 컴포넌트예요.
출처: 문서
본문
- 파이프라인에서의 일반적인 위치: 인덱싱 파이프라인에서
DocumentWriter앞에 사용해요. - 필수 초기화 변수:
api_key(Eden AI API 키.EDENAI_API_KEY환경 변수로도 설정 가능) - 필수 실행 변수:
documents(임베딩할 문서 리스트) - 출력 변수:
documents(임베딩이 보강된 문서 리스트),meta(메타데이터 문자열 딕셔너리)
이 컴포넌트는 문서 리스트를 임베딩할 때 사용해요. 문자열을 임베딩할 때는 EdenAITextEmbedder를 사용하세요.
개요 (Overview)
EdenAIDocumentEmbedder는 문서 리스트의 임베딩을 계산하고 얻은 벡터를 각 문서의 embedding 필드에 저장해요. Eden AI의 OpenAI 호환 API를 사용하죠. 모델은 Eden AI의 provider/model 명명 규칙으로 선택하는데, 예를 들어 openai/text-embedding-3-small(기본값) 또는 mistral/mistral-embed를 사용해요. 사용 가능한 전체 모델 목록은 Eden AI 모델 카탈로그를 참고하세요.
이 통합을 Haystack에서 사용하려면 다음과 같이 설치하세요.
pip install edenai-haystack
EdenAIDocumentEmbedder는 동작하려면 Eden AI API 키가 필요해요. 기본적으로 EDENAI_API_KEY 환경 변수를 사용해요. 아니면 초기화 시 api_key로 API 키를 전달할 수도 있어요.
from haystack.utils import Secret
from haystack_integrations.components.embedders.edenai import EdenAIDocumentEmbedder
embedder = EdenAIDocumentEmbedder(
api_key=Secret.from_token("<your-api-key>"),
model="openai/text-embedding-3-small",
)
사용법 (Usage)
단독 사용 (On its own)
from haystack.dataclasses import Document
from haystack_integrations.components.embedders.edenai import EdenAIDocumentEmbedder
doc = Document(content="I love pizza!")
document_embedder = EdenAIDocumentEmbedder(model="openai/text-embedding-3-small")
result = document_embedder.run([doc])
print(result["documents"][0].embedding)
# [0.017020374536514282, -0.023255806416273117, ...]
인덱싱 파이프라인에서 사용 (In an indexing pipeline)
from haystack import Pipeline
from haystack.components.converters import TextFileToDocument
from haystack.components.writers import DocumentWriter
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.edenai import EdenAIDocumentEmbedder
document_store = InMemoryDocumentStore()
indexing_pipeline = Pipeline()
indexing_pipeline.add_component("converter", TextFileToDocument())
indexing_pipeline.add_component(
"embedder", EdenAIDocumentEmbedder(model="openai/text-embedding-3-small")
)
indexing_pipeline.add_component("writer", DocumentWriter(document_store=document_store))
indexing_pipeline.connect("converter", "embedder")
indexing_pipeline.connect("embedder", "writer")
indexing_pipeline.run({"converter": {"sources": ["./my_document.txt"]}})