检索增强生成(RAG) (opens new window)系统旨在提高大型语言模型(LLM)的响应质量。当用户提交查询时,RAG系统从向量数据库中提取相关信息,并将其作为上下文传递给LLM。然后,LLM使用这个上下文为用户生成响应。这个过程显著提高了LLM响应的质量,减少了“幻觉” (opens new window)的发生。
由图可见,在上述工作流程中,RAG系统有两个主要组件:
检索器:它使用相似性搜索的能力从向量数据库中识别出最相关的信息。这个阶段是任何RAG系统中最关键的部分,因为它为最终输出的质量奠定了基础。检索器搜索向量数据库以找到与用户查询相关的文档。它涉及将查询和文档编码为向量,并使用相似性度量找到最接近的匹配项。
响应生成器:一旦检索到相关文档,用户查询和检索到的文档将传递给LLM模型,以生成连贯、相关和信息丰富的响应。生成器(LLM)利用检索器提供的上下文和原始查询生成准确的响应。
任何RAG系统的有效性和性能都严重依赖于这两个核心组件:检索器和生成器。检索器必须高效地识别和检索最相关的文档,而生成器应该使用检索到的信息生成连贯、相关和准确的响应。在部署之前,对这些组件进行严格评估对于确保RAG模型的最佳性能和可靠性至关重要。
# 评估RAG
为了评估RAG系统,我们通常使用两种类型的评估:
- 检索评估
- 响应评估
与传统的机器学习技术不同,传统技术有明确定量的度量指标(如Gini系数、R平方、AIC、BIC、混淆矩阵等),评估RAG系统更加复杂。这种复杂性的原因在于RAG系统生成的响应是非结构化文本,需要结合定性和定量指标来准确评估其性能。
# TRIAD框架
为了有效评估RAG系统,我们通常遵循TRIAD框架。该框架由三个主要组成部分组成:
上下文相关性:这个组件评估RAG系统的检索部分。它评估从大型数据集中准确检索到的文档。这里使用的度量指标包括精确度、召回率、MRR和MAP。
忠实度(基于检索):这个组件属于响应评估。它检查生成的响应是否准确无误,并且基于检索到的文档。通过人工评估、自动事实检查工具和一致性检查等方法来评估忠实度。
答案相关性:这也是响应评估的一部分。它衡量生成的响应对用户的查询提供了多少有用的信息。使用的度量指标包括BLEU、ROUGE、METEOR和基于嵌入的评估。
# 检索评估
检索评估适用于RAG系统的检索器组件,该组件通常使用向量数据库。这些评估衡量检索器在响应用户查询时识别和排名相关文档的效果。检索评估的主要目标是评估上下文相关性,即检索到的文档与用户查询的匹配程度。它确保提供给生成组件的上下文是相关和准确的。
每个度量指标都提供了对检索到的文档质量的独特视角,并为全面了解上下文相关性做出了贡献。
# 精确度
精确度衡量了检索到的文档的准确性。它是检索到的相关文档数量与检索到的文档总数之比。定义如下:
这意味着精确度评估了系统检索到的文档中有多少实际与用户查询相关。例如,如果检索器检索到了10个文档,其中7个是相关的,那么精确度将是0.7或70%。
精确度评估的是“系统检索到的所有文档中,有多少实际上是相关的?”
在可能导致负面后果的情况下,精确度尤为重要。例如,在医学信息检索系统中,高精确度至关重要,因为提供不相关的医学文档可能导致错误信息和潜在的有害结果。
# 召回率
召回率衡量了检索到的文档的全面性。它是检索到的相关文档数量与数据库中相关文档的总数之比。定义如下:
这意味着召回率评估了数据库中存在的相关文档有多少被系统成功检索到。
召回率评估的是“数据库中存在的所有相关文档中,系统成功检索到了多少个?”
在可能错过相关信息会产生成本的情况下,召回率至关重要。例如,在法律信息检索系统中,高召回率至关重要,因为未能检索到相关的法律文件可能导致不完整的案例研究,并可能影响法律诉讼的结果。
# 精确度和召回率的平衡
通常需要平衡精确度和召回率,因为改善其中一个指标有时会降低另一个指标。目标是找到适合特定应用需求的最佳平衡。这种平衡有时可以用F1分数来量化,F1分数是精确度和召回率的调和平均值:
# 平均倒数排名(MRR)
平均倒数排名(MRR)是一种评估检索系统效果的度量指标,它考虑了第一个相关文档的排名位置。当只有第一个相关文档是主要关注的情况下,MRR特别有用。倒数排名是第一个相关文档被找到的排名的倒数。MRR是多个查询的这些倒数排名的平均值。MRR的公式如下:
其中Q是查询的数量,
MRR评估的是“平均来说,系统多快能够在响应用户查询时检索到第一个相关文档?”
例如,在基于RAG的问答系统中,MRR至关重要,因为它反映了系统能够多快地向用户呈现正确答案。如果正确答案更频繁地出现在列表的顶部,MRR值将更高,表示检索系统更有效。
# 平均准确率(MAP)
平均准确率(MAP)是一种评估多个查询的检索精确度的度量指标。它同时考虑了检索的精确度和检索文档的顺序。MAP定义为一组查询的平均准确率得分的平均值。为了计算单个查询的平均准确率,需要在检索到的文档的排序列表中的每个位置计算精确度,只考虑前K个检索到的文档,其中每个精确度都根据文档是否相关进行加权。多个查询的MAP公式如下:
其中Q是查询的数量,
MAP评估的是“平均来说,系统在多个查询中排名靠前的文档的精确度如何?”
例如,在基于RAG的搜索引擎中,MAP至关重要,因为它考虑了检索的精确度和不同排名的检索结果,确保相关文档在搜索结果中更高地显示,从而通过首先呈现最相关的信息来提高用户体验。
# 检索评估概述
- 精确度:检索结果的质量。
- 召回率:检索结果的完整性。
- MRR:在响应用户查询时第一个相关文档的检索速度。
- MAP:综合评估结合了检索的精确度和相关文档的排名。
# 响应评估
响应评估适用于系统的生成组件。这些评估衡量系统根据检索到的文档提供的上下文有效地生成响应的能力。我们将响应评估分为两种类型:
- 忠实度(基于检索)
- 答案相关性
# 忠实度(基于检索)
忠实度评估生成的响应是否准确,并且基于检索到的文档。它确保响应不包含幻觉或错误信息。这个度量指标至关重要,因为它将生成的响应追溯到其来源,确保信息基于可验证的真实情况。忠实度有助于防止幻觉,即系统生成听起来合理但事实上不正确的响应。
为了衡量忠实度,通常使用以下方法:
- 人工评估:专家手动评估生成的响应是否事实准确,并且是否正确引用了检索到的文档。这个过程涉及检查每个响应与源文档,以确保所有主张都有证据支持。
- 自动事实检查工具:这些工具将生成的响应与已验证事实的数据库进行比较,以识别不准确之处。它们提供了一种无需人工干预即可检查信息有效性的自动方式。
- 一致性检查:这些评估模型是否在不同查询中始终提供相同的事实信息。这确保模型可靠,不会产生矛盾的信息。
# 答案相关性
答案相关性衡量生成的响应对用户的查询有多好,并提供有用的信息。
# BLEU(双语评估替代)
BLEU衡量生成的响应与一组参考响应之间的重叠程度,重点关注n-gram的精确度。它通过测量生成的响应和参考响应之间的n-gram(连续的n个单词序列)的重叠来计算。BLEU分数的公式如下:
其中BP是惩罚短响应的简洁度惩罚,
# ROUGE(基于回忆的概括评估)
ROUGE衡量生成的响应和参考响应之间的n-gram、词序列和词对的重叠,同时考虑了召回率和精确度。最常见的变体ROUGE-N衡量生成的响应和参考响应之间的n-gram的重叠。ROUGE-N的公式如下:
ROUGE评估了精确度和召回率,提供了一个平衡的度量,衡量了生成的响应中有多少来自参考的相关内容。
# METEOR(用于评估具有明确顺序的翻译的度量)
METEOR考虑了同义词、词干和词序,以评估生成的响应与参考响应之间的相似性。METEOR分数的公式如下:
其中
# 基于嵌入的评估
这种方法使用单词的向量表示(嵌入)来衡量生成的响应与参考响应之间的语义相似性。使用余弦相似度等技术来比较嵌入,提供基于单词的含义而不是精确匹配的评估。
# 优化RAG系统的技巧
行业中有一些基本的技巧用来优化你的RAG系统:
- 使用重新排序技术:重新排序是优化任何RAG系统性能最广泛使用的技术。它接受初始的检索到的文档集合,并根据它们的相似性进一步对最相关的文档进行排序。使用交叉编码器和基于BERT的重新排序器等技术可以更准确地评估文档的相关性。这确保提供给生成器的文档具有上下文丰富和高度相关的特点,从而产生更好的响应。
- 调整超参数:定期调整超参数,如块大小、重叠和检索到的顶部文档数量,可以优化检索组件的性能。尝试不同的设置并评估它们对检索质量的影响,可以提高RAG系统的整体性能。
- 嵌入模型:选择适当的嵌入模型对于优化RAG系统的检索组件至关重要。正确的模型,无论是通用型还是领域特定型,都可以显著提高系统准确表示和检索相关信息的能力。通过选择与特定用例相符的模型,可以提高相似性搜索的精确度和RAG系统的整体性能。在选择时考虑模型的训练数据、维度和性能指标等因素。
- 分块策略:通过自定义块大小和重叠可以大大提高RAG系统的性能,从而捕捉更多与LLM相关的信息。例如,Langchain的语义分块根据语义将文档分割,确保每个块在上下文上是连贯的。根据文档类型(如PDF、表格和图像)变化的自适应分块策略可以帮助保留更多上下文适当的信息。
# 向量数据库在RAG系统中的作用
向量数据库对于RAG系统的性能至关重要。当用户提交查询时,RAG系统的检索器组件利用向量数据库根据向量相似性找到最相关的文档。这个过程对于为语言模型提供正确的上下文以生成准确和相关的响应至关重要。强大的向量数据库确保快速和精确的检索,直接影响RAG系统的整体效果和响应能力。
MyScaleDB (opens new window)是一个基于高性能ClickHouse (opens new window)数据库打造的的SQL向量数据库。ClickHouse提供了先进的数据处理功能,如列式存储和矢量化查询执行。MyScale的多尺度树图(MSTG) (opens new window)算法在LAION 5M数据集上以390个查询/秒(Queries Per Second)的速度超过了其他索引方法,实现了95%的召回率,并保持了平均查询延迟为18ms。这个独特的算法通过将分层树聚类与图遍历技术相结合,提高了索引和搜索的效率,使其更快、更准确。与传统方法(如HNSW(Hierarchical Navigable Small World)和IVF(Inverted File))相比,MSTG减少了资源使用量,加快了搜索操作。此外,MyScaleDB与SQL的兼容性以及强大的向量搜索功能使开发人员可以轻松将其集成到现有的工作流中,使用熟悉的SQL查询进行复杂的向量操作。
# 结论
开发RAG系统本身并不困难,但评估RAG系统对于衡量性能、实现持续改进、与业务目标保持一致、平衡成本、确保可靠性和适应新方法至关重要。这个全面的评估过程有助于构建强大、高效和以用户为中心的RAG系统。
通过解决这些关键问题,向量数据库成为高性能RAG系统的基础,使其能够提供准确、相关和及时的响应,同时有效管理大规模复杂数据。MyScaleDB具有专有的MSTG算法、SQL和向量联合查询功能,可以显著提高RAG系统的性能,使MyScaleDB成为构建RAG系统的优秀选择。