← 开源
PrithivirajDamodaran

FlashRank

Lite & Super-fast re-ranking for your search & retrieval pipelines. Supports SoTA Listwise and Pairwise reranking based on LLMs and cross-encoders and more. Created by Prithivi Da, open for PRs & Collaborations.

AI EngineeringGive agent knowledgePython
在 GitHub 打开
增长势头
+124 小时新增 Star+0.1%
1.01k
Star
72
Fork
+1
本周
6
贡献者
创建于 2023-12-04 · 更新于 2026-10-16 · 今日第 5937 名
主要开发者
PrithivirajDamodaranqinyuanpeijnash10

PrithivirajDamodaran/FlashRank 排名第 5,937,有 1,009 个星标。

同类别比较

PrithivirajDamodaran/FlashRank 排名第 5,937,此处有 8 个同类条目;jarrodwatts/claude-delegator 排名第 5,939。

同类别比较
名称排名指标
rivet-dev/dynamic-apps5,921
语言:
TypeScript
星标数:
1,021
分叉数:
54
简介:
Deploy an AI-generated backend for every user.
Tiger3807861189/GLM-5.3-Flash-J-Space-Capability-Realization-Report5,922
星标数:
1,020
分叉数:
64
FalkorDB/GraphRAG-SDK5,925
语言:
Python
星标数:
1,018
分叉数:
143
简介:
Build fast and accurate GenAI apps with GraphRAG SDK at scale 🌟
zahidkhawaja/langchain-chat-nextjs5,929
语言:
JavaScript
星标数:
1,015
分叉数:
251
简介:
Next.js frontend for LangChain Chat.
jarrodwatts/claude-delegator5,939
语言:
JavaScript
星标数:
1,006
分叉数:
49
简介:
Delegate tasks to Codex and Gemini directly from within Claude Code.
langwatch/scenario5,954
语言:
TypeScript
星标数:
993
分叉数:
87
简介:
Agentic testing for agentic codebases
Kappaemme-git/codex-startup-pressure-test-skill5,956
语言:
JavaScript
星标数:
991
分叉数:
89
GaoQ1/rasa_chatbot_cn5,965
语言:
Python
星标数:
984
分叉数:
282
简介:
building a chinese dialogue system based on the newest version of rasa(基于最新版本rasa搭建的对话系统)
关键参数与规格
关键参数与规格
参数值
语言Python
类别AI Engineering
子类别Give agent knowledge
关键词RAG
星标数1,009
分叉数72
贡献者6
创建日期2023-12-04
更新日期2026-10-16
1 天星标数1
7 天星标数1
排名5,937
上次排名12,029
排名变化6,092
7 天星标排名10,314
上次 7 天星标排名13,280
7 天星标排名变化2,966
总星标排名11,081
上次总星标排名11,068
总星标排名变化-13
国家Thailand
README 摘录

Ultra-lite & Super-fast Python library to add re-ranking to your existing search & retrieval pipelines. It is based on SoTA LLMs and cross-encoders, with gratitude to all the model owners. Supports: Pairwise / Pointwise rerankers. ) See below for full list of supported models. Reranking is the final leg of larger retrieval pipelines, idea is to avoid any extra overhead especially for user-facing scenarios. To that end models with really small footprint that doesn't need any specialised hardware and

yet offer competitive performance are chosen. Feel free to raise issues to add support for a new models as you see fit. Installation: If you need lightweight pairwise rerankers [default] If you need LLM based listwise rerankers Making ranking faster: value should be large able to accomodate your longest passage. In other words if your longest passage (100 tokens) + query (16 tokens) pair by token estimate is 116 then say setting is good enough inclhuding room for reserved tokens like

[CLS] and [SEP]. Use Openai tiktoken like libraries to estimate token density, if performance per token is critical for you. Non-chalantly giving a longer like 512 for smaller passage sizes will negatively affect response time. Getting started: You can use it with any search & retrieval pipeline: 1. **Lexical Search (RegularDBs that supports full-text search or Inverted Index)** 2. **Semantic Search / RAG usecases (VectorDBs)** 3. **Hybrid Search** Deployment patterns How to use it in a AWS Lambda function ? In

AWS or other serverless environments the entire VM is read-only you might have to create your own custom dir. You can do so in your Dockerfile and use it for loading the models (and eventually as a cache between warm calls). You can do it during init with cache_dir parameter. **In-domain and Zeroshot performance of Cross Encoders fine-tuned on MS-MARCO** 2. **In-domain and Zeroshot performance of RankT5 fine-tuned on MS-MARCO** How to

Cite? To cite this repository in your work please click the "cite this repository" link on the right side (bewlow repo descriptions and tags) Papers citing flashrank COS-Mix: Cosine Similarity and Distance Fusion for Improved Information Retrieval Bryndza at ClimateActivism 2024: Stance, Target and Hate Event Detection via Retrieval-Augmented GPT-4 and LLaMA Stance and Hate Event Detection in Tweets Related to Climate Activism - Shared Task at CASE 2024 [IMPORTANT UPDATE] ~~*A clone library called **SwiftRank is pointing

to our model buckets, we are working on a interim solution to avoid this stealing**. Thank you for patience and understanding. *~~ This issue is resolved, the models are in HF now. **please upgrade to continue** pip install -U flashrank. Thank you for patience and understanding

常见问题

记录了多少星标和分叉?

PrithivirajDamodaran/FlashRank 有 1,009 个星标和 72 个分叉。

仓库排名是多少?

PrithivirajDamodaran/FlashRank 排名第 5,937。

记录的语言和类别是什么?

PrithivirajDamodaran/FlashRank 有 1,009 个星标,语言为 Python,类别为 AI Engineering。

哪个仓库排名最接近?

PrithivirajDamodaran/FlashRank 与 jarrodwatts/claude-delegator 比较,后者排名第 5,939,有 1,006 个星标。

README

Re-rank your search results with SoTA Pairwise or Listwise rerankers before feeding into your LLMs

Ultra-lite & Super-fast Python library to add re-ranking to your existing search & retrieval pipelines. It is based on SoTA LLMs and cross-encoders, with gratitude to all the model owners.

Supports:

  • Pairwise / Pointwise rerankers. (Cross encoder based, i.e. Max tokens = 512)
  • Listwise LLM based rerankers. (LLM based, i.e. Max tokens = 8192)
  • See below for full list of supported models.

Table of Contents

  1. Features
  2. Installation
  3. Making ranking faster
  4. Getting started
  5. Deployment patterns
  6. How to Cite?
  7. Papers citing flashrank

Features

  1. ⚡ Ultra-lite:

    • No Torch or Transformers needed. Runs on CPU.
    • Boasts the tiniest reranking model in the world, ~4MB.
  2. ⏱️ Super-fast:

    • Rerank speed is a function of # of tokens in passages, query + model depth (layers)
    • To give an idea, Time taken by the example (in code) using the default model is below.

- Detailed benchmarking, TBD
  1. 💸 $ concious:

    • Lowest $ per invocation: Serverless deployments like Lambda are charged by memory & time per invocation*
    • Smaller package size = shorter cold start times, quicker re-deployments for Serverless.
  2. 🎯 Based on SoTA Cross-encoders and other models:

    • "How good are Zero-shot rerankers?" - look at the reference section.
Model Name Description Size Notes
ms-marco-TinyBERT-L-2-v2 Default model ~4MB Model card
ms-marco-MiniLM-L-12-v2 Best Cross-encoder reranker ~34MB Model card
rank-T5-flan Best non cross-encoder reranker ~110MB Model card
ms-marco-MultiBERT-L-12 Multi-lingual, supports 100+ languages ~150MB Supported languages
ce-esci-MiniLM-L12-v2 Fine-tuned on Amazon ESCI dataset - Model card
rank_zephyr_7b_v1_full 4-bit-quantised GGUF ~4GB Model card
miniReranker_arabic_v1 Only dedicated Arabic Reranker - Model card
  • Models in roadmap:
    • InRanker
  • Why sleeker models are preferred ? Reranking is the final leg of larger retrieval pipelines, idea is to avoid any extra overhead especially for user-facing scenarios. To that end models with really small footprint that doesn't need any specialised hardware and yet offer competitive performance are chosen. Feel free to raise issues to add support for a new models as you see fit.

Installation:

If you need lightweight pairwise rerankers [default]

pip install flashrank

If you need LLM based listwise rerankers

pip install flashrank[listwise]

Making ranking faster:

max_length value should be large able to accomodate your longest passage. In other words if your longest passage (100 tokens) + query (16 tokens) pair by token estimate is 116 then say setting max_length = 128 is good enough inclhuding room for reserved tokens like [CLS] and [SEP]. Use Openai tiktoken like libraries to estimate token density, if performance per token is critical for you. Non-chalantly giving a longer max_length like 512 for smaller passage sizes will negatively affect response time.

Getting started:

from flashrank import Ranker, RerankRequest

# Nano (~4MB), blazing fast model & competitive performance (ranking precision).

ranker = Ranker(max_length=128)

or 

# Small (~34MB), slightly slower & best performance (ranking precision).
ranker = Ranker(model_name="ms-marco-MiniLM-L-12-v2", cache_dir="/opt")

or 

# Medium (~110MB), slower model with best zeroshot performance (ranking precision) on out of domain data.
ranker = Ranker(model_name="rank-T5-flan", cache_dir="/opt")

or 

# Medium (~150MB), slower model with competitive performance (ranking precision) for 100+ languages  (don't use for english)
ranker = Ranker(model_name="ms-marco-MultiBERT-L-12", cache_dir="/opt")

or 

ranker = Ranker(model_name="rank_zephyr_7b_v1_full", max_length=1024) # adjust max_length based on your passage length
# Metadata is optional, Id can be your DB ids from your retrieval stage or simple numeric indices.
query = "How to speedup LLMs?"
passages = [
   {
      "id":1,
      "text":"Introduce *lookahead decoding*: - a parallel decoding algo to accelerate LLM inference - w/o the need for a draft model or a data store - linearly decreases # decoding steps relative to log(FLOPs) used per decoding step.",
      "meta": {"additional": "info1"}
   },
   {
      "id":2,
      "text":"LLM inference efficiency will be one of the most crucial topics for both industry and academia, simply because the more efficient you are, the more $$$ you will save. vllm project is a must-read for this direction, and now they have just released the paper",
      "meta": {"additional": "info2"}
   },
   {
      "id":3,
      "text":"There are many ways to increase LLM inference throughput (tokens/second) and decrease memory footprint, sometimes at the same time. Here are a few methods I’ve found effective when working with Llama 2. These methods are all well-integrated with Hugging Face. This list is far from exhaustive; some of these techniques can be used in combination with each other and there are plenty of others to try. - Bettertransformer (Optimum Library): Simply call `model.to_bettertransformer()` on your Hugging Face model for a modest improvement in tokens per second. - Fp4 Mixed-Precision (Bitsandbytes): Requires minimal configuration and dramatically reduces the model's memory footprint. - AutoGPTQ: Time-consuming but leads to a much smaller model and faster inference. The quantization is a one-time cost that pays off in the long run.",
      "meta": {"additional": "info3"}

   },
   {
      "id":4,
      "text":"Ever want to make your LLM inference go brrrrr but got stuck at implementing speculative decoding and finding the suitable draft model? No more pain! Thrilled to unveil Medusa, a simple framework that removes the annoying draft model while getting 2x speedup.",
      "meta": {"additional": "info4"}
   },
   {
      "id":5,
      "text":"vLLM is a fast and easy-to-use library for LLM inference and serving. vLLM is fast with: State-of-the-art serving throughput Efficient management of attention key and value memory with PagedAttention Continuous batching of incoming requests Optimized CUDA kernels",
      "meta": {"additional": "info5"}
   }
]

rerankrequest = RerankRequest(query=query, passages=passages)
results = ranker.rerank(rerankrequest)
print(results)
# Reranked output from default reranker
[
   {
      "id":4,
      "text":"Ever want to make your LLM inference go brrrrr but got stuck at implementing speculative decoding and finding the suitable draft model? No more pain! Thrilled to unveil Medusa, a simple framework that removes the annoying draft model while getting 2x speedup.",
      "meta":{
         "additional":"info4"
      },
      "score":0.016847236
   },
   {
      "id":5,
      "text":"vLLM is a fast and easy-to-use library for LLM inference and serving. vLLM is fast with: State-of-the-art serving throughput Efficient management of attention key and value memory with PagedAttention Continuous batching of incoming requests Optimized CUDA kernels",
      "meta":{
         "additional":"info5"
      },
      "score":0.011563735
   },
   {
      "id":3,
      "text":"There are many ways to increase LLM inference throughput (tokens/second) and decrease memory footprint, sometimes at the same time. Here are a few methods I’ve found effective when working with Llama 2. These methods are all well-integrated with Hugging Face. This list is far from exhaustive; some of these techniques can be used in combination with each other and there are plenty of others to try. - Bettertransformer (Optimum Library): Simply call `model.to_bettertransformer()` on your Hugging Face model for a modest improvement in tokens per second. - Fp4 Mixed-Precision (Bitsandbytes): Requires minimal configuration and dramatically reduces the model's memory footprint. - AutoGPTQ: Time-consuming but leads to a much smaller model and faster inference. The quantization is a one-time cost that pays off in the long run.",
      "meta":{
         "additional":"info3"
      },
      "score":0.00081340264
   },
   {
      "id":1,
      "text":"Introduce *lookahead decoding*: - a parallel decoding algo to accelerate LLM inference - w/o the need for a draft model or a data store - linearly decreases # decoding steps relative to log(FLOPs) used per decoding step.",
      "meta":{
         "additional":"info1"
      },
      "score":0.00063596206
   },
   {
      "id":2,
      "text":"LLM inference efficiency will be one of the most crucial topics for both industry and academia, simply because the more efficient you are, the more $$$ you will save. vllm project is a must-read for this direction, and now they have just released the paper",
      "meta":{
         "additional":"info2"
      },
      "score":0.00024851
   }
]

You can use it with any search & retrieval pipeline:

  1. Lexical Search (RegularDBs that supports full-text search or Inverted Index)

  1. Semantic Search / RAG usecases (VectorDBs)

  1. Hybrid Search

Deployment patterns

How to use it in a AWS Lambda function ?

In AWS or other serverless environments the entire VM is read-only you might have to create your own custom dir. You can do so in your Dockerfile and use it for loading the models (and eventually as a cache between warm calls). You can do it during init with cache_dir parameter.

ranker = Ranker(model_name="ms-marco-MiniLM-L-12-v2", cache_dir="/opt")

References:

  1. In-domain and Zeroshot performance of Cross Encoders fine-tuned on MS-MARCO

  1. In-domain and Zeroshot performance of RankT5 fine-tuned on MS-MARCO

How to Cite?

To cite this repository in your work please click the "cite this repository" link on the right side (bewlow repo descriptions and tags)

Papers citing flashrank

[IMPORTANT UPDATE]

A clone library called SwiftRank is pointing to our model buckets, we are working on a interim solution to avoid this stealing. Thank you for patience and understanding.

This issue is resolved, the models are in HF now. please upgrade to continue pip install -U flashrank. Thank you for patience and understanding

排名相邻
同类项目