【走近AI:向量检索系列】之一: 向量检索为何受到工业界和开发者青睐?

大家好,我是Vita。我计划写一些文章,介绍搜索引擎架构,基于我过去十几年在大厂和创业中开发搜索引擎架构的经验。

首先,我计划分享关于向量检索架构的内容。这是向量检索系列的第一篇文章,将概述以下五个主题:第一,为何向量检索火起来了?第二,向量检索的技术框架与大型参与者。第三,向量检索链路演示。第四,向量检索的应用场景。第五,GenAI时代的搜索架构挑战与预测。

一. 为何向量检索火起来了

在数据的世界里,并不是所有信息都能整齐地放入行和列中。这在人工智能AI时代,处理图像、视频和自然语言这样复杂的非结构化数据时尤其如此。这就是向量技术发挥作用的地方。机器模型可以将文本、图像、音视频等非结构化输入转换为嵌入向量,对人类来说,向量只是一串数字,但对机器来说,向量承载了知识。

向量检索技术是如何解决实际问题的呢?

假设我们需要搜索一个包含大量文学作品的数据集,如果是精确搜索标题、作者等信息,传统关键字搜索即可完美应对。然而,当处理更抽象、模糊的查询时,关键字搜索就不再适用。例如,对于"武侠小说"这个查询词,使用关键字搜索时,结果可能包含"武侠研究",其文本部分匹配但语义不相关;而使用向量搜索时,结果可能包含"江湖传奇",其文本不匹配但语义相关。处理抽象和多模态查询时,向量检索能更好地理解语义,从而提供更相关的结果和提升用户满意度。机器学习模型将海量文本等输入转换为嵌入向量,通过训练,使语义相似的输入在向量空间中更加接近。对于给定的查询,系统可以计算其嵌入向量,并找到与之最接近的项目。这样,将一个难以明确定义的抽象任务转变为一个严格的数学问题。

下面的一个简明图示让我们更好地理解向量检索的工作流程:

  1. Insert插入:使用嵌入模型embedding为文本、图像或视频等数据内容创建向量表征。
  2. Index索引:使用PQ或HNSW等算法对向量进行索引。这一步将向量映射到一个数据结构,这将使搜索更快。
  3. Query查询:当用户使用应用程序发出Query查询时,使用嵌入模型为查询语句创建向量表征,并从数据库查询相似的向量。

二. 向量检索的技术框架与大型参与者

向量检索技术框架包括一系列关键技术组件,形成了一个多层次的结构。以下是向量检索技术框架的整体概览。

向量检索技术框架全景图:

这些技术组件由行业内的主要参与者开发和使用。以下是涉及此领域的一些大型参与者的简要梳理。

向量检索领域的大型参与者:

  • 微软Microsoft: ANN算法DiskANN, ANN库SPTAG, 模型DSSM, 产品Azure Cognitive Search
  • 谷歌Google: ANN算法ScaNN
  • 脸书Facebook: 引擎FAISS, 量化算法PQ (CPU & GPU)
  • 雅虎Yahoo! Japan: ANN算法NGT
  • Spotify: ANN库Annoy
  • 亚马逊Amazon: 产品Amazon OpenSearch Service
  • 阿里Alibaba: 引擎Havenask, 引擎Proxima, 产品阿里云OpenSearch

三. 向量检索链路演示:使用DSSM双塔模型实现图片检索

接下来以向量检索如何实现从数亿张图片中检索出用户感兴趣的内容为示例,来演示这一技术如何在业务链路中发挥作用。

设想拥有一个包含数亿张图片的庞大数据库,目标是实现一种高效的搜索机制,使用户能够通过上传一张图片(例如,一张英短蓝猫的照片)或者输入一句描述(例如,"英短蓝猫")来进行查询。为了更好地理解向量检索的工作方式,我们可以借助以下业务链路静图和动图来直观展示。

静图展示:

动图演示(离线训练环节 & 在线查询环节):

1. 离线训练环节

首先,在用户发出任何查询(Query)之前,需要进行一项基础但至关重要的工作------离线训练神经网络。这一步骤涉及使用大规模的用户(User)和物品(Item,本例中为图片)数据来训练模型,目的是将非结构化数据转换成向量形式并存入向量数据库中。

谈到如何离线训练,在工业界绕不开的一个重要方法便是DSSM双塔模型。DSSM双塔模型可以说是搜广推系统最重要的训练和召回方法。

DSSM双塔模型是由微软公司于2013年提出的一种语义匹配框架。如下图所示,该模型的核心思想是利用深度神经网络将用户查询(User)和数据库中的物品(Item)映射到一个共同的向量空间中。模型通过最大化两者之间的余弦相似度来进行训练。这样,就得到了两个独立的神经网络:一个用于处理查询(User网络),另一个用于处理物品(Item网络)。

在图片搜索的场景中,DSSM方法的离线训练主要包括:

  1. User侧和Item侧的神经网络训练:
    • 利用用户数据和图片数据训练深度神经网络,该网络能够将原始图片转换成高维空间中的向量。
  2. 向量存储与索引建立:
    • 训练完成后,利用神经网络为每张图片生成特征向量,并将这些向量存入向量数据库中。
    • 为了加速后续的在线搜索过程,对存储的向量建立索引,使用诸如HNSWLib等高效的索引结构。
python 复制代码
# 假设已经通过DSSM或其他深度学习模型,提取并向量化了上亿张图片的特征表示
# 这里简化为一个示例数据库,存储了几张图片的特征向量
image_database = {
    'image1': np.array([0.2, 0.5, 0.8, 0.3, 0.6]),  # 图片1的特征向量
    'image2': np.array([0.1, 0.6, 0.7, 0.4, 0.9]),  # 图片2的特征向量
    'image3': np.array([0.3, 0.4, 0.6, 0.2, 0.7]),  # 图片3的特征向量
    # 添加更多图片特征向量...
}

# 使用向量引擎(如HNSWLib)建立索引
index = Index(space='cosine', dim=5)  # 这里简化为5维特征向量
index.init_index(max_elements=len(image_database), ef_construction=100, M=16)
index.add_items(np.array(list(image_database.values())))  

2. 用户在线查询环节

当用户上传一张图片或输入一句描述点击搜索时,系统将通过以下步骤处理这一查询请求:

  1. 用户Query处理:
    • 用户上传图片或输入描述后,系统首先通过神经网络将用户Query转换为向量形式。
  2. 向量召回:
    • 使用用户Query向量,系统在向量数据库中执行近似最近邻(ANN)搜索,迅速从数据库中召回与用户Query向量相似的上千个图片向量。
  3. 排序阶段:
    • 随后,在粗排和精排阶段,利用神经网络对这些项目进行评分,筛选出得分最高的几百个或几十个项目。最终,在特殊需求重排阶段,根据多样性、打散排序以及异质内容混排(例如插入广告)等特殊需求,对结果进行进一步的优化。
python 复制代码
# 假设有一个查询图片的特征向量表示
query_image_embedding = np.array([0.25, 0.55, 0.78, 0.35, 0.65])  # 查询图片的特征向量

# 进行向量检索,找到与查询图片最相似的前1000张图片
k = 1000  # 召回前1000张图片
labels, distances = index.approx_knn_query(query_image_embedding, k=k)  # 使用ANN搜索近似最近邻

通过这样的向量搜索过程,可以迅速从数亿张图片中召回上千个候选项,随后通过一系列的排序策略(粗排、精排、重排),最终得出几十张图片作为搜索结果。

四. 向量检索的应用场景

检索相似向量的能力为人工智能和机器学习应用开辟了无限可能性。在前文的图片检索示例中,我们初步了解了向量检索技术的应用。在实际生产环境中,这项技术应用更为广泛,也更为复杂多样。以下是一些常见的应用场景:

  • 大模型企业应用:SaaS领域,通过向量数据库处理和检索企业专有知识库,构建私域知识库和智能客服系统等。
  • 推荐系统:通过将用户偏好和项目特征表示为向量,驱动高度个性化且精准的向量推荐引擎,为用户提供定制化的推荐内容。
  • 多模态搜索:实现搜索视觉上相似的图像或视频,丰富用户的搜索体验。
  • 自然语言处理:通过将文本编码为向量,使机器更好地理解人类自然语言,实现语义搜索、主题建模和文档聚类等。
  • AI生物:通过向量化的生物标记和化合物特性来预测药物效果,加速新药研发。
  • AI金融:通过分析交易数据的向量表示,帮助金融机构检测异常行为,优化投资策略。

五. GenAI时代的搜索挑战:仅向量检索还远远不够

在GenAI时代,向量成为连接用户和AI应用的桥梁。2024年5月,随着国内大模型产品价格的下调,向量应用预计将更加普及。然而,虽然向量搜索在语义搜索领域表现强大,仅依靠向量搜索仍有其局限性和挑战:高延迟、高成本,以及在某些短文本NLP任务中不如传统的基于词项匹配的搜索方法。同时,选择维度和稠密程度等向量技术选型的门槛也较高。技术需要在不同的数据源、场景和需求中进行检验,以选择最适合的搜索解决方案。

在GenAI+Data时代,用户场景将如何发展?用户场景对搜索技术有哪些核心需求?对搜索技术的评价标准将转向何方?本文尝试对这些问题做以下回答和预测:

预测1:搜索入口多元化、垂直化

随着大型模型成本的降低和AI垂直应用的增加,搜索入口将变得多元化,并呈现多模态化趋势。这意味着企业需要简单易用的搜索解决方案,同时要求降低技术门槛和成本。我们需要一种"轻量化"的搜索系统,这种系统采用模块化设计、高效索引、简化部署以及其他低成本支持技术,打通端到端的全链路。

预测2:高价值数据要求实时交互和灵活性

在垂直多元场景下,内容更新频率显著加快,使得实时更新和利用数据以产生更准确的决策尤为重要。因此,系统需要灵活应对数据增长的挑战,并对系统的实时交互能力提出更高要求。数据库不仅要能够实时更新数据,还需要能够实时捕捉每一次交互和查询,实现快速建库、毫秒级响应和索引原地更新,实现在事务处理(OLTP)和分析处理(OLAP)之间实现无缝同步,以确保每一个决策都基于最新、最准确的信息。

预测3:搜索质量与迭代效率双聚焦

不同用户群体和应用场景对搜索的需求更加多样化且变化迅速。这使得业务需求不断提出且频繁变化,包括数据结构修改、模型变更、向量维度调整、索引切换等。在保障搜索质量的同时,快速响应这些多变的需求并进行快速上线和迭代,将对企业的生存和成功变得更加重要。这意味着在工程实现上,需要自动化工具、CI/CD工具、模块化设计和实时反馈机制,以快速验证和优化算法,及时响应业务需求,使迭代周期从月/周缩短为天级别。

六. 小结

本篇文章探讨了向量检索的兴起、技术框架与大型行业参与者、通过DSSM双塔模型实现的图片检索示例、应用场景以及GenAI时代的搜索挑战与预测。

本文是向量检索系列的第一篇,后续将继续探讨向量检索的其他方面,包括向量数据库选型、经典算法源码分析、生产部署、工程优化等。欢迎大家关注。

此外,我们发布了 kumo-search 端到端搜索服务框架,旨在助力企业快速搭建自定义搜索引擎。欢迎访问 GitHub 项目页面了解更多:github.com/gottingen/k...

参考文献

  1. www.pinecone.io/learn/vecto...
  2. zackproser.com/blog/vector...
  3. cn.pingcap.com/blog/though...
  4. dmitry-kan.medium.com/
  5. github.com/wangshusen/...
  6. blog.csdn.net/u012328159/...
  7. blog.csdn.net/hero_myself...
  8. www.microsoft.com/en-us/resea...
  9. github.com/yahoojapan/...
  10. cloud.tencent.com/developer/a...
相关推荐
wclass-zhengge37 分钟前
架构篇(04理解架构的演进)
架构
?crying6 小时前
蓝队基础1 -- 企业信息架构与安全基础
安全·架构
mit6.8246 小时前
[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
linux·运维·docker·容器·架构
徐小夕8 小时前
Flowmix/Docx 多模态文档编辑器:V1.3.5版本,全面升级
前端·javascript·架构
Smile丶凉轩9 小时前
微服务即时通讯系统的实现(客户端)----(1)
微服务·云原生·架构
转转技术团队9 小时前
空间换时间-将查询数据性能提升100倍的计数系统实践
java·后端·架构
白总Server1 天前
JVM解说
网络·jvm·物联网·安全·web安全·架构·数据库架构
CodingBrother1 天前
软考之面向服务架构SOA
微服务·架构
随遇而安622&5081 天前
分布式微服务项目,同一个controller方法间的转发导致cookie丢失,报错null pointer异常
分布式·微服务·架构·bug
未命名冀1 天前
微服务day07
微服务·架构·jenkins