ReRank重排序提升RAG系统效果

ReRank重排序提升RAG系统效果


Rerank (重排序)

这是什么

Rerank (重排序) 是 RAG 系统中的重要优化技术。它先使用向量检索获取候选文档, 然后使用专门的重排序模型对这些文档进行重新排序,以提高检索结果的相关性和准确性。

核心优势:

  • 提升检索精度:重排序模型能更准确地判断文档与查询的相关性
  • 优化用户体验:返回更相关的结果,减少无关信息
  • 成本效益:只需对少量候选文档重排序,平衡了效果和成本
  • 多语言支持:支持多语言重排序模型(如 rerank-multilingual-v3.0)

有什么用

主要用途:

  • 提升 RAG 系统的检索质量
  • 优化向量检索的结果排序
  • 提高问答系统的准确率
  • 减少幻觉问题(通过提供更相关的上下文)
  • 企业级知识库检索优化
  • 多语言文档检索优化

示例代码

python 复制代码
import dotenv
import weaviate
from langchain_classic.retrievers import ContextualCompressionRetriever
from langchain_cohere import CohereRerank
from langchain_weaviate import WeaviateVectorStore
from weaviate.auth import AuthApiKey
from langchain_community.embeddings import QianfanEmbeddingsEndpoint

dotenv.load_dotenv()

# 1. 创建向量数据库与重排组件
embedding = QianfanEmbeddingsEndpoint()
db = WeaviateVectorStore(
    client=weaviate.connect_to_wcs(
        cluster_url="your-cluster-url",
        auth_credentials=AuthApiKey("your-api-key"),
        skip_init_checks=True,
    ),
    index_name="ParentDocument",
    text_key="text",
    embedding=QianfanEmbeddingsEndpoint(),
)

# 创建重排序模型
rerank = CohereRerank(model="rerank-multilingual-v3.0")

# 2. 构建压缩检索器
retriever = ContextualCompressionRetriever(
    base_retriever=db.as_retriever(search_type="mmr"),
    base_compressor=rerank,
)

# 3. 执行搜索并排序
search_docs = retriever.invoke("关于LLMOps应用配置的信息有哪些呢?")
print(f"找到 {len(search_docs)} 个相关文档")
for doc in search_docs:
    print(f"- {doc.page_content}\n")

流程图

text 复制代码
    User Query
        │
        ▼
 ┌──────────────────┐
 │  Base Retriever  │
 │  (向量检索)       │
 └────────┬─────────┘
          │
          ▼
  ┌────────────────┐
  │  候选文档列表   │
  │  (Top K)       │
  └────────┬───────┘
           │
           ▼
 ┌──────────────────┐
 │   Rerank Model   │
 │  (重排序模型)     │
 │  - Cohere Rerank │
 │  - BGE Reranker  │
 └────────┬─────────┘
          │
          ▼
  ┌────────────────┐
  │  重新排序结果   │
  │  (按相关性)     │
  └────────┬───────┘
           │
           ▼
      Final Docs
     (Top N 返回)
相关推荐
考虑考虑4 小时前
docker compose V2版本新属性
运维·后端·自动化运维
尾善爱看海6 小时前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
GreenTea7 小时前
7000 万 QPS、500 PB:OpenAI 如何用一个 Python 存储平台撑住 10 亿用户
后端·架构
Flynt7 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet7 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
驳是7 小时前
一个组件,提升 react-router 开发的幸福感
前端·preact
GreenTea7 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持7 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
京东云开发者8 小时前
81.8 秒的视频,我们改了 15 个版本:一次纯 Codex 驱动的 AI-native 视频实践
前端·aigc
Csvn8 小时前
TypeScript 大型项目架构:从单体 tsconfig 到分层可扩展的工程
前端