CohereDocumentImageEmbedder

CohereDocumentImageEmbedder

CohereDocumentImageEmbedder는 이미지나 PDF 파일 경로를 메타 필드에 담은 문서 리스트를 기대해요. 메타 필드는 이 컴포넌트의 file_path_meta_field init 파라미터로 지정할 수 있습니다.

출처: 문서

본문

Overview

이 embedder는 이미지를 효율적으로 로드하고, Cohere 모델로 임베딩을 계산해 각각을 문서의 embedding 필드에 저장해요.

CohereDocumentImageEmbedder는 주로 인덱싱 파이프라인에서 사용됩니다. 검색 시점에는 임베딩 Retriever를 쓰기 전에 같은 모델의 CohereTextEmbedder로 쿼리를 임베딩해야 해요.

이 컴포넌트는 Cohere Embed v3 이상 모델과 호환됩니다. 지원되는 전체 모델 목록은 Cohere 문서를 참고하세요.

Installation

Haystack에서 이 통합을 사용하려면 패키지를 설치하세요:

pip install cohere-haystack

Authentication

이 컴포넌트는 기본적으로 COHERE_API_KEY 또는 CO_API_KEY 환경 변수를 사용해요. 또는 Secret과 Secret.from_token 메서드로 API 키를 넘길 수 있습니다:

from haystack.utils import Secret
from haystack_integrations.components.embedders.cohere import (
    CohereDocumentImageEmbedder,
)

embedder = CohereDocumentImageEmbedder(api_key=Secret.from_token("<your-api-key>"))

Cohere API 키를 얻으려면 https://cohere.com/ 을 방문하세요.

Usage

On its own

먼저 COHERE_API_KEY를 환경 변수로 설정해야 해요.

from haystack import Document
from haystack_integrations.components.embedders.cohere import (
    CohereDocumentImageEmbedder,
)

embedder = CohereDocumentImageEmbedder(model="embed-v4.0")

documents = [
    Document(content="A photo of a cat", meta={"file_path": "cat.jpg"}),
    Document(content="A photo of a dog", meta={"file_path": "dog.jpg"}),
]

result = embedder.run(documents=documents)
documents_with_embeddings = result["documents"]
print(documents_with_embeddings)

# [Document(id=...,
# content='A photo of a cat',
# meta={'file_path': 'cat.jpg',
# 'embedding_source': {'type': 'image', 'file_path_meta_field': 'file_path'}},
# embedding=vector of size 1536),
# ...]

In a pipeline

이 예시에서는 세 개의 컴포넌트로 된 인덱싱 파이프라인을 볼 수 있어요:

  • meta.file_path 필드에 이미지를 참조하는 빈 문서를 만드는 ImageFileToDocument 컨버터
  • 이미지를 로드하고, 임베딩을 계산해 문서에 저장하는 CohereDocumentImageEmbedder
  • 문서를 InMemoryDocumentStore에 쓰는 DocumentWriter

또한 CohereTextEmbedder(이전과 같은 모델)와 InMemoryEmbeddingRetriever로 구성된 멀티모달 검색 파이프라인도 있습니다.

from haystack import Pipeline
from haystack.components.converters.image import ImageFileToDocument
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.components.writers import DocumentWriter
from haystack.document_stores.in_memory import InMemoryDocumentStore

from haystack_integrations.components.embedders.cohere import (
    CohereDocumentImageEmbedder,
    CohereTextEmbedder,
)

document_store = InMemoryDocumentStore()

# Indexing pipeline
indexing_pipeline = Pipeline()
indexing_pipeline.add_component("image_converter", ImageFileToDocument())
indexing_pipeline.add_component(
    "embedder",
    CohereDocumentImageEmbedder(model="embed-v4.0"),
)
indexing_pipeline.add_component("writer", DocumentWriter(document_store=document_store))
indexing_pipeline.connect("image_converter", "embedder")
indexing_pipeline.connect("embedder", "writer")

indexing_pipeline.run(data={"image_converter": {"sources": ["dog.jpg", "hyena.jpeg"]}})

# Multimodal retrieval pipeline
retrieval_pipeline = Pipeline()
retrieval_pipeline.add_component("embedder", CohereTextEmbedder(model="embed-v4.0"))
retrieval_pipeline.add_component(
    "retriever",
    InMemoryEmbeddingRetriever(document_store=document_store, top_k=2),
)
retrieval_pipeline.connect("embedder.embedding", "retriever.query_embedding")

result = retrieval_pipeline.run(data={"text": "man's best friend"})
print(result)

# {
# 'retriever': {
# 'documents': [
# Document(
# id=0c96...,

더 알아보기 (Learn more)