前言
构建一个检索增强生成 (Retrieval-Augmented Generation, RAG) 应用的概念验证过程相对简单,但要将其推广到生产环境中则会面临多方面的挑战。
『RAG 高效应用指南』系列将就如何提高 RAG 系统性能进行深入探讨,提供一系列具体的方法和建议。同时读者也需要记住,提高 RAG 系统性能是一个持续的过程,需要不断地评估、优化和迭代。
在本篇文章中,笔者将讨论以下几个问题:
- 向量模型在 RAG 系统中的作用
- 有哪些性能不错的向量模型(从 RAG 角度)
- 不同向量模型的评测基准 MTEB
- 业务中选择向量模型有哪些考量
- 如何 Finetune 向量模型
Embedding 简介
万物皆可 Embedding。在推荐系统、自然语言处理和计算机视觉等领域,Embedding 是一个非常重要的概念。Embedding 的本质是一种将高维稀疏数据转换为低维稠密向量的技术,通过这种转换,能够捕捉数据中的语义或特征关系。具体来说,Embedding 用一个多维稠密向量来表示事物的多维特征,从而在一个连续的向量空间中刻画事物之间的相似性和差异性。这种表示方式不仅提高了计算效率,还增强了模型对数据内在结构和关系的理解能力。比如,在处理文字时,我们可以把每个单词表示成一个向量(一个有方向和大小的数值列表),这种表示方法就叫做 word embedding。
大多数数据,特别是文本数据,都是高维且稀疏的。高维意味着数据量庞大,稀疏意味着大多数数据的值都是零。这样的数据在计算机中处理起来非常复杂且低效。通过 embedding 技术,我们可以将高维离散数据转换成低维稠密向量,这样可以显著提高计算效率。
此外,Embedding 还能捕捉到数据中的潜在关系。比如,在文本处理中,经过训练的 word embedding 可以让相似的单词(如『猫』和『狗』)在低维空间中靠得更近,而不相似的单词(如『猫』和『汽车』)则会离得更远。这种语义上的相似性对很多 NLP 任务非常重要。
很多文本处理任务可以在文本相似性的基础上进行构建,比如:
- 内容审核:衡量社交媒体消息与已知的滥用案例的相似度有多高
- 意图分析:识别用户的消息与已知意图的例子中哪个最为接近
- 情感分析:衡量文本与已知情感标签的相似度,从而判断情感倾向
- 推荐系统:计算用户和物品的相似度,从而为用户推荐可能感兴趣的物品
使用 bge-m3 模型计算一个句子与其他句子(含英文句子)的相似度,可以看到,bge-m3 模型比较准确地度量了不同句子间的语义相似度。
拓展阅读
向量模型在 RAG 系统中的作用
Embedding 是文本的固定长度数值表示,这使得计算机能够轻松地测量文本之间的语义相关性。它们是一些重要自然语言处理任务的核心,比如文本相似性、语义搜索、信息检索和重新排序、聚类、下游任务的特征提取等。
Embedding 在 RAG 系统中扮演着至关重要的角色:如果 Embedding 模型在对私域知识进行向量化表示的过程中表现不佳,那么即使 RAG 系统在其他方面设计得当,最终效果也难以达到预期水平。
为了让私域知识能在问答中被检索到,我们可以基于倒排和基于向量的方式构建知识库索引。倒排索引是一种基于关键词的精确性检索,但语义理解能力弱,而向量索引是基于文本向量的语义检索,可以捕捉文本的语义信息。一般情况下,我们会同时使用这两种检索方式。
在 RAG 系统中,向量模型主要有以下几个方面的作用:
1. 对 query 和 私域知识 进行向量化表示
在 RAG 系统中,用户的 query 和知识库中的文档需要被表示为向量。向量模型不仅支持文本、也支持图像和视频等多模态数据。通过使用预训练的语言模型(如 BERT、DPR 等),我们可以将 query 和分块文本转换为向量。这些向量捕捉了文本中的语义信息,使得相似的 query 和分块文本在向量空间中彼此接近,从而便于后续的 ANN 检索操作。
2. 动态更新知识库
在 RAG 系统中,随着新数据的不断加入,知识库需要动态更新。向量模型在此过程中也发挥了重要作用。新文档经过处理之后会被实时转换为向量并添加到向量数据库中,这保证了知识库的实时性和扩展性。向量模型的高效性使得这一过程能够迅速完成,不会对系统性能造成显著影响。
3. 数据隐私和安全
向量模型通过将私域知识转换为向量表示,实现了数据的匿名化。原始文本经过向量化处理后,其具体内容难以直接还原,从而保护了敏感信息。即使攻击者获得了向量表示,也难以重建原始信息。比如在金融领域,向量模型将敏感的金融交易记录转化为向量表示,RAG 系统可以在保护客户隐私的同时,进行高效的信息检索和生成,从而支持金融决策和客户服务。


