Prompt 语宙Prompt 语宙
  • 首页
  • 语宙 AI 导航
  • AIGC 资讯
    • AIGC 早报Hot
    • 最新趋势
    • AI 工具
    • 热门资源
  • AI 绘图
    • Prompt 实战
    • AI 绘画教程
    • 模型精选
  • 强化 AI 学习
  • AI 图库
    • 人物
    • 展台场景
    • Banner
    • 游戏
    • 动物
    • 食物
    • 自然
    • 背景
    • 海报
    • 建筑
    • 室内设计
  • 出海数字营销宝典
  • 社区
Search
  • Contact
  • Blog
  • Complaint
  • Advertise
© 2024 Prompt 语宙. HalfPX. All Rights Reserved.
阅读: 提升 RAG 效能:如何挑选最佳的嵌入与重排模型 [译]
Share
登陆
通知 阅读更多
Font Resizer字体
Font Resizer字体
Prompt 语宙Prompt 语宙
Search
  • 首页
  • 语宙 AI 导航
  • AIGC 资讯
    • AIGC 早报Hot
    • 最新趋势
    • AI 工具
    • 热门资源
  • AI 绘图
    • Prompt 实战
    • AI 绘画教程
    • 模型精选
  • 强化 AI 学习
  • AI 图库
    • 人物
    • 展台场景
    • Banner
    • 游戏
    • 动物
    • 食物
    • 自然
    • 背景
    • 海报
    • 建筑
    • 室内设计
  • 出海数字营销宝典
  • 社区
已有帐户? 登陆
  • Contact
  • Blog
  • Complaint
  • Advertise
© 2023 Prompt 语宙. Paooo.com. All Rights Reserved.
Prompt 语宙 > 强化 AI 学习 > 提升 RAG 效能:如何挑选最佳的嵌入与重排模型 [译]
强化 AI 学习

提升 RAG 效能:如何挑选最佳的嵌入与重排模型 [译]

宝玉的分享
最近更新: 2026年5月23日 下午6:32
SHARE

在打造检索增强型生成(RAG)系统时,检索器扮演着至关重要的角色。市场上有丰富的嵌入模型可供选择,诸如 OpenAI、CohereAI 和开源的句子转换器。同时,也有来自 CohereAI 和句子转换器的多种重新排列工具。

阅读目录
  • 理解检索评估的度量标准:
  • 配置实验环境
  • 创建密钥
  • 下载实验数据
  • 载入实验数据
  • 创制问题 – 背景对照组:
  • 定制检索系统:
  • 评价标准:
  • 结果解读:
  • 分析阐述:
    • 嵌入技术的性能表现:
    • 重排技术的影响力:
    • 重排技术的必要性:
    • 综合实力对比:
  • 结语:

但是,在这么多选择面前,我们该如何挑选出最佳组合,以达到最优的检索效能?我们该怎样判断哪种嵌入模型最契合我们的数据?或者哪一种重新排列工具能够最大限度地优化我们的成果?

本篇博客,我们将借助 LlamaIndex 的 Retrieval Evaluation 工具,迅速识别出最合适的嵌入和重排模型组合。现在,让我们开始探索!

首先,我们来认识一下 Retrieval Evaluation 中的度量标准。

理解检索评估的度量标准:

要评定我们检索系统的效果,我们主要使用两个公认的标准:命中率(Hit Rate) 和 平均倒数排名(MRR)。现在,让我们深入了解它们各自的意义和工作原理。

命中率:

命中率衡量的是在最初检索到的文档中找到正确答案的查询所占的比例。通俗来说,就是我们的系统在前几次尝试中得到正确答案的概率。

平均倒数排名(MRR):

MRR 考察每个查询中,系统找到相关文档的准确性,通过排名来评估。具体而言,就是所有查询中正确答案排名的倒数的平均值。例如,如果第一个相关文档就是搜索结果的第一位,那么倒数排名就是 1;如果是第二位,倒数排名就是 1/2,以此类推。

掌握了这些标准和度量方式后,我们可以正式开始实验了。如果你想跟着做,也可以通过我们的 Google Colab 笔记本 实现同步操作。

配置实验环境

!pip install llama-index sentence-transformers cohere anthropic voyageai protobuf pypdf

创建密钥

openai_api_key ='YOUR OPENAI API KEY'
cohere_api_key ='YOUR COHEREAI API KEY'
anthropic_api_key ='YOUR ANTHROPIC API KEY'
openai.api_key = openai_api_key

下载实验数据

本次实验我们将使用 Llama2 论文作为研究对象。接下来,我们来下载这篇论文。

!wget --user-agent "Mozilla" "https://arxiv.org/pdf/2307.09288.pdf" -O "llama2.pdf"

载入实验数据

现在,我们来加载实验所需的数据。实验将使用论文的前 36 页内容,不包括目录、参考资料和附录部分。

接着,我们将这些内容解析并分割成节点,这些节点代表了我们希望能检索到的数据块。这里,我们设置的数据块大小为 512。

documents = SimpleDirectoryReader(input_files=["llama2.pdf"]).load_data()
node_parser = SimpleNodeParser.from_defaults(chunk_size=512)
nodes = node_parser.get_nodes_from_documents(documents)

创制问题 – 背景对照组:

为了进行有效评估,我们构建了一个包含问题与其背景信息的配对数据集。这一数据集基本上是我们数据库中各个问题及其对应背景信息的集合。为了公正地评估嵌入系统(如 OpenAI/ CohereAI)和重排序系统(CohereAI),我们用 Anthropic LLM 来生成这些问题 – 背景对。

下面我们设置一个模板,用以产生问题 – 背景对。

# Prompt to generate questions
qa_generate_prompt_tmpl ="""
Context information is below.
---------------------
{context_str}
---------------------
Given the context information and not prior knowledge.
generate only questions based on the below query.
You are a Professor. Your task is to setup
{num_questions_per_chunk} questions for an upcoming
quiz/examination. The questions should be diverse in nature
across the document. The questions should not contain options, not start with Q1/ Q2.
Restrict the questions to the context information provided.
"""
llm = Anthropic(api_key=anthropic_api_key)
qa_dataset = generate_question_context_pairs(
nodes, llm=llm, num_questions_per_chunk=2
)

这是一个过滤掉类似 Here are 2 questions based on provided context 句型的功能函数

# function to clean the dataset
deffilter_qa_dataset(qa_dataset):
"""
Filters out queries from the qa_dataset that contain certain phrases and the corresponding
entries in the relevant_docs, and creates a new EmbeddingQAFinetuneDataset object with
the filtered data.
:param qa_dataset: An object that has 'queries', 'corpus', and 'relevant_docs' attributes.
:return: An EmbeddingQAFinetuneDataset object with the filtered queries, corpus and relevant_docs.
"""
# Extract keys from queries and relevant_docs that need to be removed
queries_relevant_docs_keys_to_remove ={
k for k, v in qa_dataset.queries.items()
if'Here are 2'in v or'Here are two'in v
}
# Filter queries and relevant_docs using dictionary comprehensions
filtered_queries ={
k: v for k, v in qa_dataset.queries.items()
if k notin queries_relevant_docs_keys_to_remove
}
filtered_relevant_docs ={
k: v for k, v in qa_dataset.relevant_docs.items()
if k notin queries_relevant_docs_keys_to_remove
}
# Create a new instance of EmbeddingQAFinetuneDataset with the filtered data
return EmbeddingQAFinetuneDataset(
queries=filtered_queries,
corpus=qa_dataset.corpus,
relevant_docs=filtered_relevant_docs
)
# filter out pairs with phrases `Here are 2 questions based on provided context`
qa_dataset = filter_qa_dataset(qa_dataset)

定制检索系统:

我们使用嵌入模型与重排序器的结合来确定最优的检索系统。起初,我们建立了一个基础的 VectorIndexRetriever 检索系统。在检索到节点之后,我们又加入了重排序器以便对结果进行进一步的优化。值得一提的是,在这项特定实验中,我们把 similarity_top_k 的设置值定为 10,并且选用重排序器的前 5 名结果。当然,根据您具体实验的需求,这个参数是可以调整的。我们这里显示的是使用 OpenAIEmbedding 的代码,请访问 笔记本 来查阅使用其他嵌入方法的代码。

embed_model = OpenAIEmbedding()
service_context = ServiceContext.from_defaults(llm=None, embed_model = embed_model)
vector_index = VectorStoreIndex(nodes, service_context=service_context)
vector_retriever = VectorIndexRetriever(index=vector_index, similarity_top_k =10)
classCustomRetriever(BaseRetriever):
"""Custom retriever that performs both Vector search and Knowledge Graph search"""
def__init__(
self,
vector_retriever: VectorIndexRetriever,
)->None:
"""Init params."""
self._vector_retriever = vector_retriever
def_retrieve(self, query_bundle: QueryBundle)-> List[NodeWithScore]:
"""Retrieve nodes given query."""
retrieved_nodes = self._vector_retriever.retrieve(query_bundle)
if reranker !='None':
retrieved_nodes = reranker.postprocess_nodes(retrieved_nodes, query_bundle)
else:
retrieved_nodes = retrieved_nodes[:5]
return retrieved_nodes
asyncdef_aretrieve(self, query_bundle: QueryBundle)-> List[NodeWithScore]:
"""Asynchronously retrieve nodes given query.
Implemented by the user.
"""
return self._retrieve(query_bundle)
asyncdefaretrieve(self, str_or_query_bundle: QueryType)-> List[NodeWithScore]:
ifisinstance(str_or_query_bundle,str):
str_or_query_bundle = QueryBundle(str_or_query_bundle)
returnawait self._aretrieve(str_or_query_bundle)
custom_retriever = CustomRetriever(vector_retriever)

评价标准:

我们通过计算平均倒数排名(MRR)和命中率来评价检索系统的性能:

retriever_evaluator = RetrieverEvaluator.from_metric_names(
["mrr","hit_rate"], retriever=custom_retriever
)
eval_results =await retriever_evaluator.aevaluate_dataset(qa_dataset)

结果解读:

我们对一系列嵌入模型和重排序器进行了测试。这里有我们选取考虑的一些模型:

嵌入模型包括:

  • OpenAI 嵌入
  • Voyage 嵌入
  • CohereAI 嵌入(v2.0/ v3.0 版本)
  • Jina 嵌入
  • BAAI/bge-large-en

重排序器方面,我们测试了:

  • CohereAI
  • bge-reranker-base
  • bge-reranker-large

特别说明的是,这些测试结果给我们提供了对特定数据集和任务效能的深刻见解。然而,根据数据的不同特点、数据集的规模大小以及一些其它因素,比如数据块大小、相似度筛选范围等,真实的结果可能会有所差异。

以下表格根据命中率和平均倒数排名(MRR)这两个指标,展示了评估结果:

分析阐述:

嵌入技术的性能表现:

  • OpenAI:展示了顶级性能,特别是在应用了 **CohereRerank**(命中率高达 0.926966,MRR 为 0.865262)和 **bge-reranker-large**(命中率为 0.910112,MRR 为 0.853993)后,显示出与重排工具的极佳兼容性。
  • bge-large:与重排工具搭配使用后,性能得到了显著提升,尤其是 **CohereRerank** 带来的最佳效果(命中率 0.865169,MRR 0.805618)。
  • llm-embedder:重排带来了巨大的好处,特别是 **CohereRerank**(命中率 0.887640,MRR 0.825843)大幅提升了性能。
  • Cohere:最新版 v3.0 嵌入技术在性能上超越了 v2.0 版,集成了原生的 CohereRerank 后,显著提高了性能指标,拥有 0.876404 的命中率和 0.832584 的 MRR。
  • Voyage:初步表现强劲,并且在使用了 **CohereRerank**(命中率 0.915730,MRR 0.847940)后,性能进一步提升,这表明它对重排技术的响应度很高。
  • JinaAI:虽然起始基础较低,但使用了 **bge-reranker-large**(命中率 0.601124,MRR 0.578652)后取得了明显进步,这说明重排技术大幅提高了其性能。其表现不佳可能是因为嵌入技术被优化为了适应 8K 的上下文长度。

重排技术的影响力:

  • WithoutReranker:为每种嵌入技术提供了性能的基准线。
  • bge-reranker-base:在所有嵌入技术中普遍提高了命中率和 MRR。
  • bge-reranker-large:该重排器常常能为嵌入技术提供最高或几乎最高的 MRR。对于某些嵌入技术而言,其表现可与 **CohereRerank** 媲美,甚至有过之而无不及。
  • CohereRerank:一贯地提升所有嵌入技术的表现,往往能提供最好或几乎最好的结果。

重排技术的必要性:

  • 数据清楚地显示出重排器在优化搜索结果中的重要作用。几乎所有的嵌入技术都通过重排获得了提升,命中率和 MRR 均有所提高。
  • 特别是 **CohereRerank**,已经证实了它能够将平庸的嵌入技术变身为竞争力强的亮点,正如 JinaAI 的案例所展现的。

综合实力对比:

  • 考虑到命中率和 MRR 两个指标,**OpenAI + CohereRerank** 和 **Voyage + bge-reranker-large** 的组合表现尤为突出。
  • 然而,无论配合哪种嵌入式系统,**CohereRerank / bge-reranker-large** 的重新排序能力都能带来显著的性能提升,因此它们成为了提高搜索品质的优选方案。

总之,如果想要在命中率和 MRR 上都达到最优性能,将 **OpenAI** 或 **Voyage** 的嵌入式系统与 **CohereRerank / bge-reranker-large** 结合使用将会是最佳选择。

结语:

在本篇博客文章中,我们展示了利用不同的嵌入式系统和重新排序工具来评价和增强信息检索性能的方法。以下是我们的最终结论:

  • 嵌入式系统: **OpenAI** 和 **Voyage** 的嵌入式系统,在配合 **CohereRerank / bge-reranker-large** 时,无论是在命中率还是 MRR 上都设定了高标准。
  • 重新排序工具: 重新排序工具,尤其是 **CohereRerank / bge-reranker-large**,其重要性不言而喻。它们在提升多种嵌入式系统的 MRR 中起到了关键作用,彰显了其在优化搜索结果方面的重要性。
  • 基础至关重要: 选择合适的嵌入式系统作为初始搜索工具极其重要;如果基础搜索结果已然不佳,那么即便最优秀的重新排序工具也难以发挥作用。
  • 合作共赢: 要想充分挖掘检索器的潜能,寻找最匹配的嵌入式系统和重新排序工具组合至关重要。这项研究显示,细致的测试和精准的搭配选择是至关重要的。
生成式不确定性 [译]
从错误中学习:让大语言模型更擅长推理 [译]
AI 操作指南 [译]
AI 像水一般普遍 [译]
针对人类开发者的生产力提升,第 7 部分:软件质量 [译]
分享
Email 复制链接 打印
Share
上一篇 利用 GPT 的视觉能力和 TTS API 来处理视频并添加旁白 [译]
下一篇 EmotionPrompt:运用心理学知识通过情感激发提升大语言模型的能力[译]
发表评价

发表评价 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Please select a rating!

Ad image
- 入群领取知识星球折扣卷, 仅剩99份 -
Ad imageAd image

最近更新

Kimi-Researcher:月之暗面端到端强化学习Agent,深度研究基准测试超Claude 4 Opus
AI 工具 AIGC 资讯
华为盘古大模型5.5震撼发布:7180亿参数Ultra MoE领衔,五大模型重塑产业智能
AI 工具 AIGC 资讯
腾讯清华重磅开源MindOmni:强化学习驱动的多模态推理生成模型,重塑视觉AI边界
AI 工具 AIGC 资讯
联影智能发布‘元智’医疗大模型:多模态融合,一次CT扫描诊断37种疾病
AI 工具 AIGC 资讯

相关推荐

强化 AI 学习

AI 是功能还是产品? [译]

宝玉的分享
强化 AI 学习

你唯一需要精通的事情 [译]

宝玉的分享
强化 AI 学习

少读一些书,享受阅读的乐趣 —— 📚 新年计划,Goodreads 与多巴胺,以及如何避免对自己过度要求的建议 [译]

宝玉的分享
强化 AI 学习

构建搜索引擎,而非向量数据库(Vector DB) [译]

宝玉的分享
/ Prompt 语宙 /

Experience the limitless creative possibilities of generative AI and unlock new levels of innovation.

Quick Link

  • Remaker AI
  • BGRemaker 抠图Hot
  • AIGC 工具
  • Prompt 咒语生成器
  • 去水印工具

Support

  • Contact
  • Blog
  • Complaint
  • Advertise

标签

Agent AI AI Agent AIGC AI大模型 AI安全 AI工具 AI智能体 AI绘画 AI编程 AI编程助手 AI编程工具 AI编程模型 AI视频生成 AI音乐生成 Anthropic chatgpt Claude Claude Code DeepSeek Gemini GPT-5.3 Instant GPT-5.3-Codex-Spark GPT-5.4 MCP协议 meta Midjourney MiniMax MoE架构 MoE模型 openai prompt Qwen3 RAG SWE-Bench xAI 上海人工智能实验室 世界模型 人工智能 人物 代码生成 企业级AI 全模态大模型 具身智能 命令行工具 图像生成 图像生成模型 多智能体 多模态 多模态AI 多模态大模型 多模态模型 大模型 大模型应用 大语言模型 字节跳动 小红书 展台 开源 开源AI 开源AI工具 开源大模型 开源工具 开源平台 开源框架 开源模型 开源项目 强化学习 微软 扩散模型 教程 数字人 文本转语音 早报 昆仑万维 智谱AI 月之暗面 清华大学 知识管理 科大讯飞 端侧AI 美团 腾讯 腾讯混元 自然语言处理 英伟达 蚂蚁集团 视觉语言模型 视频生成 视频生成模型 语音合成 谷歌 谷歌AI 谷歌DeepMind 通义千问 阶跃星辰 阿里巴巴 阿里通义 面壁智能 香港大学
Prompt 语宙Prompt 语宙
Follow US
© 2009-2026 Prompt 语宙. Paooo.com. All Rights Reserved.