EdenAITextEmbedder

EdenAITextEmbedder

Eden AI의 OpenAI 호환 API를 사용해 문자열을 벡터로 변환하는 컴포넌트예요. 임베딩 검색에서 쿼리를 임베딩으로 바꾸는 데 사용해요.

출처: 문서

본문

  • 파이프라인에서의 일반적인 위치: 쿼리/RAG 파이프라인에서 임베딩 리트리버 앞에 사용해요.
  • 필수 초기화 변수: api_key(Eden AI API 키. EDENAI_API_KEY 환경 변수로도 설정 가능)
  • 필수 실행 변수: text(문자열)
  • 출력 변수: embedding(float 숫자 리스트, 벡터), meta(메타데이터 문자열 딕셔너리)

간단한 문자열(예: 쿼리)을 벡터로 임베딩할 때 EdenAITextEmbedder를 사용해요. 문서 리스트를 임베딩할 때는 EdenAIDocumentEmbedder를 사용하세요. 이 컴포넌트는 계산된 임베딩(벡터라고도 불러요)으로 문서를 보강해줘요.

개요 (Overview)

EdenAITextEmbedder는 Eden AI 임베딩 모델을 사용해 문자열을 그 의미를 담은 벡터로 변환해요. 모델은 Eden AI의 provider/model 명명 규칙으로 선택하는데, 예를 들어 openai/text-embedding-3-small(기본값) 또는 mistral/mistral-embed를 사용해요. 사용 가능한 전체 모델 목록은 Eden AI 모델 카탈로그를 참고하세요.

이 통합을 Haystack에서 사용하려면 다음과 같이 설치하세요.

pip install edenai-haystack

EdenAITextEmbedder는 동작하려면 Eden AI API 키가 필요해요. 기본적으로 EDENAI_API_KEY 환경 변수를 사용해요. 아니면 초기화 시 api_key로 API 키를 전달할 수도 있어요.

from haystack.utils import Secret
from haystack_integrations.components.embedders.edenai import EdenAITextEmbedder

embedder = EdenAITextEmbedder(
    api_key=Secret.from_token("<your-api-key>"),
    model="openai/text-embedding-3-small",
)

사용법 (Usage)

단독 사용 (On its own)

먼저 EDENAI_API_KEY를 환경 변수로 설정하거나 직접 전달하는 것을 잊지 마세요.

from haystack.utils import Secret
from haystack_integrations.components.embedders.edenai import EdenAITextEmbedder

embedder = EdenAITextEmbedder(
    api_key=Secret.from_token("<your-api-key>"),
    model="openai/text-embedding-3-small",
)

result = embedder.run(text="How can I use the Eden AI embedding models with Haystack?")

print(result["embedding"])
# [-0.0015687942504882812, 0.052154541015625, 0.037109375...]

파이프라인에서 사용 (In a pipeline)

from haystack import Pipeline
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.dataclasses import Document
from haystack_integrations.components.embedders.edenai import (
    EdenAIDocumentEmbedder,
    EdenAITextEmbedder,
)

document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")

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 = EdenAIDocumentEmbedder(model="openai/text-embedding-3-small")
documents_with_embeddings = document_embedder.run(documents)["documents"]
document_store.write_documents(documents_with_embeddings)

query_pipeline = Pipeline()
query_pipeline.add_component(
    "text_embedder", EdenAITextEmbedder(model="openai/text-embedding-3-small")
)
query_pipeline.add_component(
    "retriever", InMemoryEmbeddingRetriever(document_store=document_store)
)
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")

result = query_pipeline.run({"text_embedder": {"text": "Who lives in Berlin?"}})

print(result["retriever"]["documents"][0])

더 알아보기 (Learn more)