算法波动应对与向量检索模型的质量信号优化

向量检索算法

向量检索算法向量检索是指通过计算向量间的距离来寻找最相近的K个向量的过程。在向量检索中,特征向量用于描述实体,并通过向量空间中的距离来表示实体间的相似程度。以下是对向量检索算法的详细解析:一、基本概念特征向量:通过多维度数值(特征)高效准确地描述实体。特征向量将实体间的关系抽象成向量空间中的距离,距离的远近代表着相似程度。例如,身高、年龄、性别、地域等都可以作为特征向量的一部分。向量检索:向量从形式上就是一个一维数组,需要使用公式度量来寻找最相近的K个向量。常用的距离度量方式包括欧式距离、余弦距离(内积)、汉明距离和杰卡德相似系数等。欧式距离:越小,表示向量越相近。余弦距离(内积):值越大,表示向量越相近(在向量归一化之后,内积与余弦相似度等价)。汉明距离:一般用于二值化向量(每一列只取0或1),计算向量每列的异或和,值越小越相似,常用于图片识别。杰卡德相似系数(Jaccard):数据集交集的个数和并集个数的比值。把向量作为一个集合,不仅可以是数字代表,也可以是其他编码(如词),值越大越相似,常用于相似语句识别。召回率(精度):用于评估向量检索的效果。对于给定的向量q,其在数据集上的K个近邻为N,通过检索召回的K个近邻集合为M,则召回率recall = |N ∩ M| / K。二、向量检索算法向量检索算法主要分为精准检索(最近邻,NN)和近似检索(近似最近邻,ANN)两大类。精准检索本质:线性查找(Brute Force),即逐一遍历所有已存向量,计算其与检索向量的距离,结果最为精确。缺点:向量检索场景的向量通常维度很高(如256、512等),计算量会很大;时间复杂度为O(Nd),当向量集规模N或向量维度d增大时,代价较大。适用场景:中小规模的向量集相似性检索。改进:KD-Tree等数据结构可用于优化精准检索的效率。近似检索定义:在可接受的精度条件下,通过聚类、降维或编码等方式将原来需要在整个高维空间内的搜索转换成小范围空间或相对低维的向量空间内搜索,大幅度提高搜索效率。实现方式:需要用一个向量分布类似的一个训练集来训练,获得一个产生合理数据划分或编码的模型;再利用这个模型,使用额外的存储空间,建立对整个高维向量的索引。常用算法:基于树的搜索、基于哈希的空间划分、矢量量化的编码(分段和聚类)、基于图的搜索等。三、向量索引向量索引是指通过某种数学模型,对向量构建的一种时间和空间上比较高效的数据结构。借助向量索引,能够高效地查询与目标向量相似的若干个向量。根据实现方式,ANNS(Approximate Nearest Neighbors Search,近似最近邻搜索)向量索引可分为四大类:基于树的索引:如KD-Tree等。基于图的索引:如HNSW(Hierarchical Navigable Small World Graphs)等。基于哈希的索引:通过哈希函数将高维向量映射到低维空间,实现快速检索。基于量化的索引:将向量空间划分为多个子空间,每个子空间用一个代表向量来表示,从而实现快速检索。四、常见向量检索工具FAISS:Facebook AI基于C++语言编写的一款开源、针对多媒体文件相似性搜索的算法库。支持对检索速度、内存使用和检索精度等的优化设置,但对开发人员有较高的使用要求。SPTAG:由Microsoft发布的向量检索算法库,使用基于图的最近邻搜索算法。优点是搜索速度快,毫秒内智能搜索数十亿条向量,并且在查询精确度和内存占用上表现佳。但建图时间长,且每次添加新向量进数据库必须重新建图。Hnswlib:使用基于图的最近邻搜索算法HNSW,可以同时达到极快的搜索速度和较高的搜索精度,但内存占用量也很大,不适合十亿级或以上的数据量。ANNOY:Spotify发布的向量检索算法库,使用基于树的最近邻搜索算法。搜索速度快,支持多进程读取数据,但由于搜索时会将原数据加载到内存,导致内存占用量很大,不适合十亿级或以上的数据量。Proxima:阿里巴巴达摩院系统AI实验室自研的向量检索引擎,支持多种索引类型和检索算法,具有高性能、可扩展性和易用性等特点。五、实例:教育搜题在教育搜题场景中,给定千万级问题库,需要对用户输入的问题进行匹配召回。这通常涉及以下步骤:训练向量生成模型:基于Dual Encoder的孪生结构训练大规模query-doc对数据(其中BERT可以基于题库语料进行预训练),训练目标包括cosine similarity loss、in-batch negatives loss和circle loss等。Proxima向量检索:基于训练好的向量生成模型将docs转换成特征向量并保存到文件;读取特征向量,然后根据这些特征向量构建索引并dump到(二进制)索引文件中;向量检索时加载这些索引数据,并执行相应的向量检索操作;向量检索结果返回相应的doc ids和距离score(越小越相似)。负例获取与hard negatives构造:为了提升检索效果,需要获取负例并构造hard negatives。常用的方案包括基于整个训练集数据训练dual-encoder模型后选择top-k个docs进行筛选,或使用cross-encoder模型进行精排等。综上所述,向量检索算法在多个领域具有广泛的应用价值。通过选择合适的向量检索算法和工具,并结合具体应用场景进行优化,可以实现高效、准确的向量检索。


nginx