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