mirror of
https://github.com/hwchase17/langchain
synced 2024-11-06 03:20:49 +00:00
f98d7f7494
- **Description:** Support reranking based on cross encoder models available from HuggingFace. - Added `CrossEncoder` schema - Implemented `HuggingFaceCrossEncoder` and `SagemakerEndpointCrossEncoder` - Implemented `CrossEncoderReranker` that performs similar functionality to `CohereRerank` - Added `cross-encoder-reranker.ipynb` to demonstrate how to use it. Please let me know if anything else needs to be done to make it visible on the table-of-contents navigation bar on the left, or on the card list on [retrievers documentation page](https://python.langchain.com/docs/integrations/retrievers). - **Issue:** N/A - **Dependencies:** None other than the existing ones. --------- Co-authored-by: Kenny Choe <kchoe@amazon.com> Co-authored-by: Bagatur <baskaryan@gmail.com>
19 lines
525 B
Python
19 lines
525 B
Python
from difflib import SequenceMatcher
|
|
from typing import List, Tuple
|
|
|
|
from langchain_core.pydantic_v1 import BaseModel
|
|
|
|
from langchain_community.cross_encoders.base import BaseCrossEncoder
|
|
|
|
|
|
class FakeCrossEncoder(BaseCrossEncoder, BaseModel):
|
|
"""Fake cross encoder model."""
|
|
|
|
def score(self, text_pairs: List[Tuple[str, str]]) -> List[float]:
|
|
scores = list(
|
|
map(
|
|
lambda pair: SequenceMatcher(None, pair[0], pair[1]).ratio(), text_pairs
|
|
)
|
|
)
|
|
return scores
|