成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一款好用的開源工具,高效實現Reranker 原創

發布于 2024-9-14 14:25
瀏覽
0收藏

Reranker 是任何檢索架構(RAG、Agent等)的重要組成部分,但它們通常也比PipeLine中其他部分更模糊。有時,甚至很難知道該使用哪一個。每個問題都是不同的,使用 X 的最佳模型不一定與使用 Y 的模型相同;新的重新排名方法不斷涌現,該如何兼容他們呢?今天介紹一款高效擴展工具rerankers:

設計目標

新的重新排名方法不斷涌現:例如,RankGPT 使用 LLM 對文檔進行重新排序,就在去年出現,取得了非常有希望的零樣本基準測試結果。

所有不同的重新排名方法往往都在自己的庫中完成,具有不同級別的文檔。這導致了更高的進入門檻。新用戶需要在多種不熟悉的輸入/輸出格式之間切換,所有這些格式都有自己的怪癖!

rerankers目標是:

  • ??。它僅提供作為依賴項的基本必需品。
  • ?? 易于理解。只需學習少數幾個calls,然后您可以使用提供的所有重新排名模型。
  • ??易于集成。它應該適合幾乎任何現有的管道,只需幾行代碼!
  • ??易于擴展。只需對代碼庫知之甚少,即可添加任何新的重新排名模型。您所需要的只是一個新類,其中包含一個將 (query, [documents]) 輸入映射到output.rank()
  • ??易于調試。這是一個測試版,可能會有問題,但代碼庫的構思方式使大多數問題都應該易于跟蹤并盡快修復。

支持的模型

目前項目庫支持各類rerank模型:

  • ? 任何標準的 SentenceTransformer 或 Transformers 交叉編碼器
  • ? RankGPT (可通過原始 RankGPT 實現和改進的 RankLLM 實現獲得)
  • ? 基于T5 pointwise排名器(InRanker、MonoT5...)
  • ? 基于LLM pointwise排名器(BAAI/bge-reranker-v2.5-gemma2-lightweight 等)
  • ? Cohere、Jina、Voyage 和 MixedBread API 重新排名器
  • ? FlashRank 重新排序器(ONNX 優化模型,在 CPU 上非常快)
  • ? 基于 ColBERT 的 reranker - 不是最初為重新排序而設計的模型,但在某些情況下確實表現得相當強大。實現是輕量級的,僅基于 transformers。
  • ??? RankLLM/RankZephyr:通過包裝 rank-llm 庫庫來支持!對 RankZephyr/RankVicuna 的支持未經測試,但 RankLLM + GPT 模型完全有效!

工具安裝

工具安裝比較簡單,一行即可:

# All transformers-based approaches (cross-encoders, t5, colbert)
pip install "rerankers[transformers]"


# API-based rerankers (Cohere, Jina, soon MixedBread)
pip install "rerankers[api]"


# FlashRank rerankers (ONNX-optimised, very fast on CPU)
pip install "rerankers[flashrank]"


# All of the above
pip install "rerankers[all]"

工具調用

模型加載

無論架構如何,都可以在一行中加載任何受支持的 reranker:

from rerankers import Reranker


# Cross-encoder default. You can specify a 'lang' parameter to load a multilingual version!
ranker = Reranker('cross-encoder')
# RankLLM with specified GPT models
ranker = Reranker('gpt-4-turbo', model_type="rankllm", api_key = API_KEY)


# ColBERTv2 reranker
ranker = Reranker("colbert")


# ... Or a non-default colbert model:
ranker = Reranker(model_name_or_path, model_type = "colbert")

Rerankers 將始終嘗試根據其名稱推斷您嘗試使用的模型,但如果可以,向其傳遞 ??model_type?? 參數總是更安全的!?

模型推理

無論加載了哪個 reranker,都使用加載的模型對 documents 的查詢進行排名,也支持異步調用:

results = ranker.rank(query="I love you", docs=["I hate you", "I really like you"], doc_ids=[0,1])
# 異步用法
results = await ranker.rank_async(query="I love you", docs=["I hate you", "I really like you"], doc_ids=[0,1])
results

result:

RankedResults(results=[
  Result(document=Document(text='I really like you', doc_id=1), score=-2.453125, rank=1), 
  Result(document=Document(text='I hate you', doc_id=0), score=-4.14453125, rank=2)], 
  query='I love you', has_scores=True)

所有 reranker 都將返回一個對象,這是一個 pydantic 對象,其中包含對象列表和一些其他有用信息,例如原始查詢。您可以通過運行 :??RankedResults????Result????k????top_k()??

results.top_k(1)
# [Result(Document(doc_id=1, text='I really like you', metadata={}), score=0.26170814, rank=1)]

langchain中也能用,只需一行就可轉換:

compressor = ranker.as_langchain_compressor(k=3)

好啦,介紹到這里,更多用法等你去探索吧:

https://github.com/answerdotai/rerankers


本文轉載自公眾號哎呀AIYA

原文鏈接:??https://mp.weixin.qq.com/s/NrbqFRkOtOa8z3rt8c0KKw??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 国产一伦一伦一伦 | 成人福利在线视频 | 一区二区三区av | 国产精品久久久久久久久久免费看 | 黄色片网站在线观看 | 激情在线视频 | 91久久精 | 国产伦精品一区二区三区在线 | 偷拍自拍网站 | 国产精品美女久久久久aⅴ国产馆 | 亚洲网站在线观看 | 久久综合一区二区三区 | 久久久久久免费毛片精品 | av久久 | 毛片网站在线观看 | 黄色一级大片在线免费看产 | 免费观看的av | 久久综合久久久 | 一区二区久久精品 | 宅女噜噜66国产精品观看免费 | 久久综合影院 | 久久成人精品视频 | 久久精品一区二区三区四区 | 久久亚洲国产精品日日av夜夜 | 色综合视频 | av中文在线观看 | 中文字幕日韩欧美一区二区三区 | 亚洲第一中文字幕 | www.国产| 91 中文字幕 | 欧美激情精品久久久久久变态 | 国产第一页在线观看 | 国产原创视频 | 午夜精品久久久久久久久久久久久 | 精品视频一区二区三区在线观看 | 99国产精品久久久久老师 | 国产精品一区久久久 | 日韩不卡视频在线 | 欧美激情综合 | 国产高清精品网站 | 欧美日一区二区 |