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"]}})

더 알아보기 (Learn more)