前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >评估与优化RAG指南:提高准确性与质量的最佳实践

评估与优化RAG指南:提高准确性与质量的最佳实践

作者头像
AgenticAI
发布2025-03-18 15:52:43
发布2025-03-18 15:52:43
700
举报
文章被收录于专栏:AgenticAIAgenticAI

本文翻译自 Qdrant 官方博客,原文链接已附。本文首先介绍评估的必要性,然后介绍评估的框架,最后阐述表现不佳的解决方法,值得一读。

1. 介绍

本指南将教你如何评估一个 RAG 系统的准确性质量。你将学会通过测试搜索精度、召回率、上下文相关性和响应准确性来保持 RAG 系统的性能。

构建一个 RAG 应用程序仅仅是开始; 测试其对终端用户的实用性,并对其组件进行长期稳定性校准至关重要。

RAG 系统在三个关键阶段可能会遇到错误:检索相关信息、增强该信息以及生成最终响应。通过系统地评估和微调每个组件,你将能够保持一个可靠且具有上下文相关性的生成 AI 应用程序,满足用户需求。

2. 为什么要评估你的 RAG 应用程序?

避免幻觉和错误答案

在生成阶段,幻觉是一个显著的问题,LLM(大语言模型)可能忽视上下文并编造信息,这会导致不基于现实的响应。

此外,生成有偏见的答案也是一个关注点,因为 LLM 生成的答案有时可能是有害、不恰当的,或者带有不合适的语气,因此在各种应用和交互中可能存在风险。

丰富增强的上下文

增强过程中面临的挑战之一是过时的信息,响应中可能包含不再最新的数据。另一个问题是存在上下文缺口,即检索的文档之间缺乏关联的上下文。

这些缺口可能导致呈现不完整或片段化的信息,从而减少增强响应的整体连贯性和相关性。

最大化搜索和检索过程

在检索过程中,一个显著的问题是缺乏精确性,检索的并非所有文档都与查询相关。这个问题由于召回率差而加剧,意味着并非所有相关的文档都被成功检索。

此外,存在迷失在中间[1] 问题,表明一些 LLM 可能在处理长上下文时存在困难,特别是当关键信息位于文档中部时,这可能导致不完整或不太有用的结果。

3. 推荐框架

为了简化评估过程,有几个强大的框架可以使用。下面我们将探讨三个流行的框架:Ragas、Quotient AI 和 Arize Phoenix

Ragas:通过问题和答案测试 RAG

Ragas[2](即 RAG 评估)使用包含问题、理想答案和相关上下文的数据集,将 RAG 系统生成的答案与真实答案进行比较。它提供诸如忠实度、相关性和语义相似度等指标,以评估检索和答案的质量。

图 1:Ragas 框架的输出,展示了诸如忠实度、答案相关性、上下文召回率、精度、相关性、实体召回率和答案相似度等指标。这些指标用于评估 RAG 系统响应的质量。

Quotient:使用自定义数据集评估 RAG 流程

Quotient AI 是另一个旨在简化 RAG 系统评估的平台。开发者可以上传评估数据集作为基准,测试不同的提示和 LLM。这些测试作为异步任务运行:Quotient AI 自动运行 RAG 流程,生成响应并提供关于忠实度、相关性和语义相似度的详细指标。该平台的全部功能可以通过 Python SDK 访问,使你能够访问、分析和可视化你的 Quotient 评估结果,发现需要改进的地方。

图 2:Quotient 框架的输出,展示了定义数据集是否在 RAG 流程的所有阶段(索引、分块、检索和上下文相关性)中正确处理的统计数据。

Arize Phoenix:视觉化地拆解响应生成

Arize Phoenix[3] 是一个开源工具,通过追踪响应的逐步构建过程,帮助改进 RAG 系统的性能。你可以在 Phoenix 中直观地查看这些步骤,帮助识别性能瓶颈和错误。你可以定义 “评估器[4]” 来使用 LLM 评估输出的质量、检测幻觉和检查答案的准确性。Phoenix 还会计算诸如延迟、令牌使用和错误等关键指标,帮助你了解 RAG 系统的效率。

图 3:Arize Phoenix 工具易于使用,展示了整个过程架构以及检索、上下文和生成过程中发生的步骤。

3. 为什么你的 RAG 系统可能表现不佳

你在向向量数据库中导入数据时不当

不当的数据导入可能导致丢失重要的上下文信息,而这些信息对于生成准确和连贯的响应至关重要。此外,不一致的数据导入可能导致系统生成不可靠和不一致的响应,削弱用户的信任和满意度。

向量数据库支持不同的索引[5] 技术。为了确认你是否正确地导入数据,你应该始终检查与索引技术相关的变量变化如何影响数据导入。

解决方案:关注数据的分块方式

调整文档分块大小: 分块大小决定了数据的粒度,影响精度、召回率和相关性。它应该与嵌入模型的令牌限制对齐。

确保适当的分块重叠: 这有助于通过在不同分块之间共享数据点来保持上下文。可以采用去重和内容规范化等策略来管理这一点。

制定适当的分块/文本拆分策略: 确保你的分块/文本拆分策略适应你的数据类型(例如 HTML、Markdown、代码、PDF)和使用场景。例如,法律文档可能按标题和小节分块,医学文献可能按句子边界或关键概念拆分。

图 4:你可以使用诸如ChunkViz[6] 之类的工具来可视化不同的分块拆分策略、分块大小和分块重叠情况。

你可能没有正确地进行数据嵌入

你需要确保嵌入模型能够准确理解和表示数据。如果生成的嵌入是准确的,相似的数据点将在向量空间中紧密排列。嵌入模型的质量通常通过像 [Massive Text Embedding Benchmark (MTEB)](https://huggingface.co/spaces/mteb/leaderboard "Massive Text Embedding Benchmark (MTEB "Massive Text Embedding Benchmark (MTEB)")") 这样的基准进行衡量,其中模型的输出与真实数据集进行比较。

解决方案:选择合适的嵌入模型

嵌入模型在捕捉数据的语义关系中起着关键作用。

你可以选择多种嵌入模型, [Massive Text Embedding Benchmark (MTEB) Leaderboard](https://huggingface.co/spaces/mteb/leaderboard "Massive Text Embedding Benchmark (MTEB "Massive Text Embedding Benchmark (MTEB) Leaderboard") Leaderboard") 是一个很好的参考资源。轻量级库如FastEmbed[7] 支持使用流行的文本嵌入模型[8] 生成向量嵌入。

在选择嵌入模型时,检索性能领域特定性 非常重要。你需要确保模型能够捕捉语义差异,这会影响检索性能。对于专业领域,你可能需要选择或训练一个自定义的嵌入模型。

你的检索过程没有优化

语义检索评估测试了你的数据检索效果。有几个指标可以选择:

  • Precision@k: 测量前 k 个搜索结果中相关文档的数量。
  • Mean Reciprocal Rank (MRR): 考虑搜索结果中第一个相关文档的位置。
  • Discounted Cumulative Gain (DCG) 和 Normalized DCG (NDCG): 基于文档的相关性得分。

通过使用这些指标评估检索质量,你可以判断检索步骤的效果。对于 ANN 算法的评估,Precision@k 是最合适的指标,因为它直接衡量了算法如何逼近精确的搜索结果。

解决方案:选择最佳检索算法

每一个新的具有更大上下文窗口的 LLM 都声称使 RAG 过时。然而,像迷失在中间[9] 这样的难题表明,依赖于大模型的默认检索方式可能无法提供最优化的解决方案。可以通过进一步优化检索算法(例如进行多轮检索或组合多种搜索技术)来改善性能。

4. 结论

评估和优化 RAG 系统是一个持续的过程。通过使用适当的框架和方法评估检索、增强和生成过程,你可以确保你的系统保持准确和可靠。微调每个阶段并不断验证和优化系统的组件,最终将有助于构建一个具有高质量生成响应的 RAG 应用程序。

为帮助开发者深入学习企业级 RAG 应用,推荐这本专注于RAG 开发与优化的书籍——《基于大模型的 RAG 应用开发与优化 — 构建企业级 LLM 应用》,无论是初学者还是进阶开发者,都能从中获益。

参考资料

[1]

迷失在中间:https://arxiv.org/abs/2307.03172

[2]

Ragas:https://docs.ragas.io/en/v0.0.17/index.html

[3]

Arize Phoenix:https://docs.arize.com/phoenix

[4]

评估器:https://docs.arize.com/phoenix/evaluation/concepts-evals/evaluation

[5]

索引:https://qdrant.tech/documentation/concepts/indexing/

[6]

ChunkViz:https://chunkviz.up.railway.app/

[7]

FastEmbed:https://github.com/qdrant/fastembed

[8]

流行的文本嵌入模型:https://qdrant.github.io/fastembed/examples/Supported_Models/#supported-text-embedding-models

[9]

迷失在中间:https://arxiv.org/abs/2307.03172

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AgenticAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 介绍
  • 2. 为什么要评估你的 RAG 应用程序?
    • 避免幻觉和错误答案
    • 丰富增强的上下文
    • 最大化搜索和检索过程
  • 3. 推荐框架
    • Ragas:通过问题和答案测试 RAG
    • Quotient:使用自定义数据集评估 RAG 流程
    • Arize Phoenix:视觉化地拆解响应生成
  • 3. 为什么你的 RAG 系统可能表现不佳
    • 你在向向量数据库中导入数据时不当
      • 解决方案:关注数据的分块方式
    • 你可能没有正确地进行数据嵌入
      • 解决方案:选择合适的嵌入模型
    • 你的检索过程没有优化
      • 解决方案:选择最佳检索算法
  • 4. 结论
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档