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 返回)
相关推荐
Hyyy17 分钟前
很多Desktop都在上的Computer Use是什么
前端·llm
慢功夫19 分钟前
开篇:VS Code 为什么不是一个普通 React App
前端·visual studio code
你挚爱的强哥30 分钟前
Vue2 实现 1.5s 十连击监听(连续点击若干次),封装通用可复用点击检测工具,不用 data!Vue 封装通用连击监听方法,支持自定义时长与点击次数
前端·javascript·vue.js
程序员张334 分钟前
SpringBoot集成BCrypt密码加密库
java·spring boot·后端
CaffeinePro41 分钟前
FastAPI数据库集成SQLAlchemy异步ORM全方案
后端·fastapi
小旭Coding44 分钟前
凌晨告警轰炸!Go 服务协程只增不减,内存持续暴涨直至 OOM
后端
半个落月1 小时前
用 LangChain.js 手写一个能读写文件和执行命令的 Mini Cursor
javascript·人工智能·后端
huashengzsj1 小时前
Shopify个人建站如何搭建独立站:从零开始的完整指南
前端·网络·人工智能
程序猿小泓1 小时前
从 Claude Code 学 Agent Harness:一个前端工程师的 AI Agent 学习笔记
前端·人工智能·学习
952362 小时前
RabbitMQ-基础操作
java·spring boot·分布式·后端·spring·rabbitmq