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 返回)
相关推荐
Surmon38 分钟前
彻底搞懂大模型 Temperature、Top-p、Top-k 的区别!
前端·人工智能
木斯佳3 小时前
前端八股文面经大全:bilibili生态技术方向二面 (2026-03-25)·面经深度解析
前端·ai·ssd·sse·rag
不会写DN3 小时前
Gin 日志体系详解
前端·javascript·gin
冬夜戏雪3 小时前
实习面经记录(十)
java·前端·javascript
zb200641204 小时前
CVE-2024-38819:Spring 框架路径遍历 PoC 漏洞复现
java·后端·spring
uzong4 小时前
AI Agent 是什么,如何理解它,未来挑战和思考
人工智能·后端·架构
追逐时光者4 小时前
DotNetGuide突破了10K + Star,一份全面且免费的C#/.NET/.NET Core学习、工作、面试指南知识库!
后端·.net
yuweiade4 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
ywf12154 小时前
springboot设置多环境配置文件
java·spring boot·后端
爱学习的程序媛5 小时前
【Web前端】JavaScript设计模式全解析
前端·javascript·设计模式·web