两个简单技巧把 RAG 检索正确率从 50% 提高到 95 % 原创
在实际项目实施过程中,RAG(检索增强生成)系统的关键在于其检索阶段,这一环节直接关系到生成效果的质量。RAG 系统的运作流程主要涉及数据摄取和数据查询两个步骤,而检索环节的重要性不言而喻。本文分享了一个案例,讲述了团队如何运用两大关键策略,将 RAG 系统的检索准确率从50%显著提升至95%。
1、RAG 检索召回率
RAG 系统的检索召回率(Recall)是评估检索系统在用户查询时能否有效检索出所有相关文档的标准。在 RAG 系统中,这一指标至关重要,因为如果检索阶段不能提供充分的上下文信息,那么即便生成模型再先进,也难以产生高质量的输出。因此,高的检索召回率是保障生成内容相关性的关键。
召回率的计算公式如下:
召回率(Recall)=(检索到的相关文档数 / 数据库中的总相关文档数)* 100%
以下是一个示例:
假设用户搜索的是“赫尔辛基的瑞典按摩”。
数据库中共有10篇与查询相关的文档,检索系统找回了9篇相关文档以及1篇不相关文档。
召回率的计算方式为:
图片
召回率 =(9 / 10)* 100% = 90%
这意味着检索系统成功找回了90%的相关文档。
2、案例剖析
第一、案例背景
在这个实例中,我们通过两项关键的优化措施,将系统的检索准确率从原本的50-60%大幅提升至95%以上。项目的初衷是打造一款内部聊天机器人,旨在协助客户服务团队更迅速地获取所需信息。
项目启动阶段涉及以下步骤:
- 从多个系统中提取数据。
- 对数据进行预处理、分块(chunking)以及嵌入(embedding)处理。
- 在 Azure AI Search 上构建搜索索引。
- 将聊天机器人与搜索索引相连接。
数据集包含了关于地点(例如水疗中心和健身房)和专家(例如按摩师和私人教练)的信息。为了准备这些数据,我们通过合并文本字段(如描述、城市、地区)成一个统一的内容字段,并为向量搜索创建了嵌入。
最初,搜索查询是通过向量搜索或全文 BM25 搜索对内容字段进行的。但是,系统只在50-60%的情况下能够正确检索到文档。
我们发现,向量搜索并不适合此应用场景,因为它更倾向于模糊匹配和语义相似性,而我们的需求是精确匹配。同样,BM25 搜索也表现不佳,因为它基于词频统计,导致那些包含更多查询词的文档被优先展示,而不是真正相关的文档。此外,BM25 搜索在处理芬兰语词汇形态变化时也存在问题,微小的形态变化就会阻碍文档的检索。
第二、初始方案的问题
系统结合使用了向量搜索和 BM25 全文搜索,但存在以下两个问题:
- 向量搜索:虽然基于语义相似性,却不能精确对应特定的服务或地点。
- BM25 搜索:依赖于关键词的出现频率,往往导致含有高频关键词但实际相关性较低的文档被优先展示。特别是在处理像芬兰语这样具有丰富词形变化的语言时,BM25 搜索的效果更是大打折扣。
这些问题导致了检索结果的相关性不足,从而极大地影响了用户的体验。
第三、检索准确率从 50-60% 提升至 95% 的两个技巧
通过实施以下两项重要改进措施,系统的检索准确率得到了显著提高:
1.应用 LLM 优化用户查询
改进方案:在查询阶段,利用 LLM 将用户的原始输入转换成结构化查询。例如,将“赫尔辛基的瑞典按摩”重写为服务字段包含“瑞典按摩”且城市字段为“赫尔辛基”的查询格式。
实际成效:这种精确的查询重写显著增强了检索的相关性,减轻了 BM25 对关键词频率的依赖。
成本与挑战:
性能负担:查询重写需要实时进行,可能会在高流量情况下导致响应时间延长。
维护难度:需要不断优化查询重写逻辑,以跟上用户需求的变化。
2.应用LLM优化索引构建
改进方案:在索引阶段,利用大语言模型(LLM)从非结构化文本中提取服务信息,创建结构化的服务列表作为索引字段。例如,从句子“这家水疗中心提供瑞典按摩和芳香疗法”中提取出“瑞典按摩”和“芳香疗法”。
处理非标准化数据:通过预处理步骤清理拼写错误、语言差异等干扰因素,提高模型的一致性。
实际成效:索引信息的精确度提升,解决了向量搜索中由于模糊匹配导致的相关性问题。
成本与挑战:
计算资源:构建索引需要大量的计算资源,尤其是在处理大规模数据时。
维护难度:需要不断更新动态服务信息,以保持索引的准确性和有效性。
通过这两项技巧,成功地将 RAG 检索准确率从50%提升至95%。
3、案例总结
本案例的核心启示如下:
关键在于检索阶段的提升:生成质量的提高依赖于精准的检索输出。
简洁而有效的优化:利用 LLM 对索引和查询进行改进,大幅增强了系统表现。
成本与回报的平衡:尽管计算和维护成本有所上升,但由此带来的用户体验增进是划算的。
高效的检索不仅为生成阶段打下了坚实的基础,同时也说明了技术改进应当围绕用户需求进行,避免无谓的复杂化。
本文转载自公众号玄姐聊AGI 作者:玄姐