mirror of
https://github.com/hwchase17/langchain.git
synced 2025-11-20 20:48:16 +00:00
- **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
|