CohereRanker

CohereRanker

CohereRanker는 지정한 쿼리에 대한 의미적 관련성에 따라 Document들을 순위화해요. 순위화에 Cohere rerank 모델을 사용합니다. 지원되는 전체 모델 목록은 Cohere 문서에서 찾을 수 있어요. 이 Ranker의 기본 모델은 rerank-v3.5입니다.

출처: 문서

본문

Overview

반환할 최대 문서 수를 설정하는 top_k 파라미터도 지정할 수 있습니다.

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

pip install cohere-haystack

이 컴포넌트는 기본적으로 COHERE_API_KEY 또는 CO_API_KEY 환경 변수를 사용해요. 또는 초기화 시 api_key로 Cohere API 키를 넘길 수 있습니다:

ranker = CohereRanker(api_key=Secret.from_token("<your-api-key>"))

Usage

On its own

이 예시는 CohereRanker로 두 개의 단순한 문서를 순위화합니다. Ranker를 실행하려면 query를 넘기고, documents를 제공하며, top_k 파라미터로 반환할 문서 수를 설정하세요.

from haystack import Document
from haystack_integrations.components.rankers.cohere import CohereRanker

docs = [Document(content="Paris"), Document(content="Berlin")]

ranker = CohereRanker()

ranker.run(query="City in France", documents=docs, top_k=1)

In a pipeline

아래는 InMemoryDocumentStore에서 키워드 검색(InMemoryBM25Retriever 사용)으로 문서를 검색하는 파이프라인 예시예요. 그 다음 CohereRanker로 검색된 문서를 쿼리와의 유사도에 따라 순위화합니다. 파이프라인은 Ranker의 기본 설정을 사용해요.

from haystack import Document, Pipeline
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.rankers.cohere import CohereRanker

docs = [
    Document(content="Paris is in France"),
    Document(content="Berlin is in Germany"),
    Document(content="Lyon is in France"),
]
document_store = InMemoryDocumentStore()
document_store.write_documents(docs)

retriever = InMemoryBM25Retriever(document_store=document_store)
ranker = CohereRanker()

document_ranker_pipeline = Pipeline()
document_ranker_pipeline.add_component(instance=retriever, name="retriever")
document_ranker_pipeline.add_component(instance=ranker, name="ranker")

document_ranker_pipeline.connect("retriever.documents", "ranker.documents")

query = "Cities in France"
res = document_ranker_pipeline.run(
    data={
        "retriever": {"query": query, "top_k": 3},
        "ranker": {"query": query, "top_k": 2},
    },
)

top_k 파라미터

위 예시에서 Retriever와 Ranker의 top_k 값은 서로 달라요. Retriever의 top_k는 반환하는 문서 수를 지정하고, Ranker가 이 문서들을 정렬합니다. Ranker에는 같거나 더 작은 top_k 값을 설정할 수 있어요. Ranker의 top_k는 (파이프라인의 마지막 컴포넌트라면) 반환하는 문서 수, 또는 다음 컴포넌트로 전달하는 문서 수입니다. 위 예시에서 Ranker가 마지막 컴포넌트이므로 파이프라인을 실행하면 Ranker의 top_k에 따라 상위 두 문서가 출력돼요.

top_k 값을 조정하면 성능을 최적화할 수 있어요. 이 경우 Retriever의 top_k가 더 작을수록 Ranker가 처리할 문서가 줄어들어 파이프라인이 빨라집니다.

더 알아보기 (Learn more)