针对上述挑战,星火科技进行了深入研究,并取得了突破性进展,应用到实际场景中。星火科技在向量方面,融合了稠密向量、低维向量和稀疏向量三种向量表示,分别从不同角度优化信息检索和生成的效果。
1.稠密向量
定义:稠密向量是通过深度学习模型训练得到的,能够捕捉文本的深层语义信息。
局限性:现有的向量模型一般都是在通用语料库上训练得到,会有以下局限性:
①缺少区分度:两个语义相同的句子由稠密向量计算相似度可能是0.95,而语义相似但不相同的句子也可能大于0.9。这就给检索结果的筛选带来了很大困扰。
②缺少相关性:现有向量模型的训练目的是找句子相似性,而现实中需求却是相关性。如用户提到“考试挂科了怎么办”时,真正希望AI给出的建议是“补考的申请方法”,而不是找到相似的“考试没有通过怎么办”。
星火实践:在我们的实践中,提升向量区分度和检索的精准度是同步进行的。
①利用多年积累的行业数据进行场景化训练,提升向量区分度。
②通过大量语料分析,理解用户检索意图,对数据进行再加工,提升检索精准度。
③选定区分度更高、更符合用户需求的向量模型,为后续的二次检索和兜底处理提供依据。
2.稀疏向量
定义:稀疏向量是高维向量(30K+),其中大多数元素都是零,只有少数元素为非零。通常用于高维数据的处理,常用的算法有TF-IDF/BM25等。
局限性:
①缺乏泛化能力,稀疏嵌入方法主要基于词频统计,缺乏对词语之间语义关系的理解。这样一来,语义相近的词(如“留学”和“出国”)在稀疏嵌入中会有不同的表示,限制了模型的泛化能力。
②缺乏上下文能力,稀疏嵌入方法无法捕捉词语在不同上下文中的不同含义。比如,"苹果" 在不同的上下文中可能指代“苹果手机”或“吃的苹果”,但稀疏嵌入无法区分这些不同的指代。
星火实践:和稠密向量不同的是,稀疏向量不依赖模型,必须通过搜索语料,从0开始建设,上述问题体现了语料的大小和质量对稀疏向量至关重要,因此星火的主要工作在语料库建设上。
①平行语料库建设,在不同场景下建立场景同义词库,提升泛化能力。
②垂直语料库建设,通过NLP工具,对文档做POS/NER处理,建立针对词性和实体的权重分布,加强对上下文的理解。
③结合①和②建立分场景、分词性的稀疏向量,在应用上,利用稀疏向量进行兜底处理,有效解决长尾问题。
3.低维向量
定义:低维向量通过降维技术(如PCA/t-SNE/UMAP等)从高维向量中提取数据的主要特征,将高维稠密向量(如768维)降低到低维(如3维),降低计算复杂度,方便可视化,剔除离群点。
星火实践:在向量训练过程中,总会遇到一些数据存在于模糊区间中,就算人工也无法识别应该所属的分类。
①利用低维向量进行可视化,快速识别和修正错误数据,持续提升语料库质量,用于训练向量模型。
②对高维分布集中的数据进行降维后,保留关键特征,进一步增加区分度,进行二次检索。