SentenceTransformersDiversityRanker
SentenceTransformersDiversityRanker
Sentence Transformers 기반의 다양성(Diversity) Ranker예요. 쿼리와의 유사도를 고려하면서 문서의 전체 다양성을 최대화하도록 순서를 매기죠.
출처: 문서
본문
| 항목 | 내용 |
|---|---|
| 파이프라인에서 가장 흔한 위치 | 쿼리 파이프라인에서 문서 목록을 반환하는 컴포넌트(예: Retriever) 다음 |
| 필수 init 변수 | 없음 |
| 필수 run 변수 | documents: 문서 목록. query: 쿼리 문자열 |
| 출력 변수 | documents: 문서 목록 |
| API reference | Sentence Transformers |
| GitHub 링크 | sentence_transformers 통합 |
| 패키지 이름 | sentence-transformers-haystack |
개요
SentenceTransformersDiversityRanker는 랭킹 알고리즘을 사용해 문서의 전체 다양성을 최대화하도록 순서를 매겨요. 쿼리와의 유사도를 기반으로 문서 목록을 순위 매기죠. 사전 훈련된 Sentence Transformers 모델로 쿼리와 문서를 임베딩해요.
이 Ranker의 기본 모델은 sentence-transformers/all-MiniLM-L6-v2예요.
선택적으로 top_k 파라미터를 설정할 수 있는데, 반환할 최대 문서 수를 지정해요. 기본값은 10이에요.
Hugging Face API 토큰 인증은 비공개 또는 게이트(gated) 모델에만 필요해요. 초기화 시 token으로 토큰을 전달하거나 HF_API_TOKEN 또는 HF_TOKEN 환경 변수를 설정할 수 있어요.
전체 선택적 초기화 파라미터 목록은 API reference에서 찾을 수 있어요.
사용법
SentenceTransformersDiversityRanker를 사용하려면 sentence-transformers-haystack 패키지를 설치하세요:
pip install sentence-transformers-haystack
단독으로 사용하기
from haystack import Document
from haystack_integrations.components.rankers.sentence_transformers import (
SentenceTransformersDiversityRanker,
)
ranker = SentenceTransformersDiversityRanker(
model="sentence-transformers/all-MiniLM-L6-v2",
similarity="cosine",
)
docs = [
Document(content="Regular Exercise"),
Document(content="Balanced Nutrition"),
Document(content="Positive Mindset"),
Document(content="Eating Well"),
Document(content="Doing physical activities"),
Document(content="Thinking positively"),
]
query = "How can I maintain physical fitness?"
output = ranker.run(query=query, documents=docs)
docs = output["documents"]
print(docs)
파이프라인에서 사용하기
from haystack import Document, Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack_integrations.components.rankers.sentence_transformers import (
SentenceTransformersDiversityRanker,
)
docs = [
Document(content="The iconic Eiffel Tower is a symbol of Paris"),
Document(content="Visit Luxembourg Gardens for a haven of tranquility in Paris"),
Document(
content="The Point Alexandre III bridge in Paris is famous for its Beaux-Arts style",
),
]
document_store = InMemoryDocumentStore()
document_store.write_documents(docs)
retriever = InMemoryBM25Retriever(document_store=document_store)
ranker = SentenceTransformersDiversityRanker()
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 = "Most famous iconic sight in Paris"
document_ranker_pipeline.run(
data={
"retriever": {"query": query, "top_k": 3},
"ranker": {"query": query, "top_k": 2},
},
)