VertexAIDocumentEmbedder

VertexAIDocumentEmbedder

VertexAI Embeddings API를 통해 문서의 임베딩을 계산해 주는 컴포넌트예요.

Deprecation 공지

google-vertex-haystack 통합은 아카이브 처리되어 더 이상 유지보수되지 않아요. 이 통합은 deprecated된 Google SDK를 기반으로 해요.

google-genai-haystack 패키지의 GoogleGenAIDocumentEmbedder로 전환할 것을 권장해요.

파이프라인에서 가장 흔한 위치: 인덱싱 파이프라인의 DocumentWriter 앞 필수 init 변수: model — VertexAI Embeddings API를 통해 사용할 모델 필수 run 변수: documents — 임베딩할 문서 리스트 출력 변수: documents — 임베딩으로 보강된 문서 리스트 API 레퍼런스: Google Vertex GitHub 링크: https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/google_vertex 패키지 이름: google-vertex-haystack

출처: 문서

본문

VertexAIDocumentEmbedder는 문서 내용의 임베딩으로 문서 메타데이터를 보강해요. 문자열 하나를 임베딩하려면 VertexAITextEmbedder를 사용해요.

VertexAIDocumentEmbedder를 사용하려면 이렇게 초기화해요:

model: 지원되는 모델은 다음과 같아요:

  • "text-embedding-004"
  • "text-embedding-005"
  • "textembedding-gecko-multilingual@001"
  • "text-multilingual-embedding-002"
  • "text-embedding-large-exp-03-07"

task_type: "RETRIEVAL_DOCUMENT"이 기본값이에요. 모든 작업 유형은 공식 Google 문서에서 확인할 수 있어요.

인증 (Authentication)

VertexAIDocumentEmbedder는 인증에 Google Cloud Application Default Credentials (ADC)를 사용해요. ADC 설정 방법은 공식 문서를 참고하세요.

Google Vertex AI 엔드포인트를 사용하도록 승인된 프로젝트에 접근 권한이 있는 계정을 쓰는 게 중요하다는 점을 기억하세요.

프로젝트 ID는 GCP 리소스 매니저에서 찾거나, 터미널에서 gcloud projects list를 실행해 찾을 수 있어요. gcloud CLI에 대한 자세한 내용은 공식 문서를 참고하세요.

사용법 (Usage)

이 Embedder를 쓰려면 google-vertex-haystack 패키지를 설치해요:

pip install google-vertex-haystack

단독으로 사용하기 (On its own)

from haystack import Document
from haystack_integrations.components.embedders.google_vertex import (
    VertexAIDocumentEmbedder,
)

doc = Document(content="I love pizza!")
document_embedder = VertexAIDocumentEmbedder(model="text-embedding-005")
result = document_embedder.run([doc])
print(result["documents"][0].embedding)
# [-0.044606007635593414, 0.02857724390923977, -0.03549133986234665,

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

from haystack import Document
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.google_vertex import (
    VertexAITextEmbedder,
)
from haystack_integrations.components.embedders.google_vertex import (
    VertexAIDocumentEmbedder,
)
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever

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 = VertexAIDocumentEmbedder(model="text-embedding-005")
documents_with_embeddings = document_embedder.run(documents)["documents"]
document_store.write_documents(documents_with_embeddings)

query_pipeline = Pipeline()
query_pipeline.add_component(
    "text_embedder",
    VertexAITextEmbedder(model="text-embedding-005"),
)
query_pipeline.add_component(
    "retriever",
    InMemoryEmbeddingRetriever(document_store=document_store),
)
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")

query = "Who lives in Berlin?"
result = query_pipeline.run({"text_embedder": {"text": query}})
print(result["retriever"]["documents"][0])
# Document(id=..., content: 'My name is Wolfgang and I live in Berlin')

더 알아보기 (Learn more)