火山引擎云搜索服务 ES 支持基于 Serverless 和容器化能力部署,支持 k-NN,提供向量搜索和向量存储能力。在 ES 的集群基础上,k-NN 向量数据库可以提供大规模分布式能力,为用户带来可扩展数量级的向量搜索。
本文介绍在大模型时代下的原生向量搜索和数据库的背景和应用场景。
随着音视频、推荐等新兴领域应用的发展和对大模型场景的需求,引入多模态搜索来满足更加复杂的搜索势在必行。ES 在全文检索的基础上增加向量搜索能力来实现对非结构化数据的分析和检索。
在向量搜索的场景下,使用机器学习模型生成向量来表示数据对象(文本、图像、音视频等),向量距离代表对象间的相似性。常用的向量库使用 ANN 算法,在极短时间内完成海量向量的检索。
k-NN 可以作为向量数据库来使用,通过引入先进的向量算法库来构建向量索引,还会将构建好的向量索引持久化存储到磁盘,索引更加稳定。结合 ES 的倒排索引,可以将向量检索和全文检索的能力融合,实现更加强大的混合搜索(Hybrid Search)能力。
基于 k-NN 的业务场景主要有以下六大类,目前在企业的业务场景中均有所运用:
以文案相似度识别方案为例,实现流程如下:
在用户推送文案的场景中,为保证用户体验,需要确保推送文案不会有重复内容,因此对每个推送的内容都会进行相似度识别并消重。
每个文案通过 BERT 模型生成 Embedding,在云搜索中检索一次。如果相似度低于阈值,判定为新的文案,会写入 k-NN 向量数据库中,逐渐完善成一个文案库;如果相似度高于阈值,则判定为重复文案,减少推送量。