向量搜索(Vector Search)是一种强大的信息检索技术,它使用称为向量的数据数学表示法。向量搜索基于语义含义而非精确匹配来查找相似项。
信息检索领域与计算机的历史一样悠久,而向量搜索已被应用了20多年。然而,最近它的使用率急剧上升。 在
生成式人工智能和大数据时代,向量搜索已成为多种应用的关键。 其中包括(但不限于):
- 推荐系统
- 机器学习模型
- 图像识别
- 自然语言处理 (NLP)
- 异常检测
- 生成式人工智能
向量搜索之所以如此有效,是因为它能够 捕捉上下文和含义,并能找到近似匹配而不仅仅是精确匹配。这样,即使用户的查询与存储数据不完全精确 匹配,也能找到相关信息。 另一个巨大优势是,向量搜索可用于多种数据,包括文本、图像、音频、结构化数据,甚至基因组。
如果您对向量搜索的工作原理以及它如何帮助您的业务感到好奇,那您就来对地方了。
主要收获
- 向量搜索引擎能够在大型、多样化的数据集中进行直观的、上下文感知的信息检索。
- 向量搜索之所以重要,是因为它为各行各业的高级人工智能和 机器学习应用奠定了基础。
- 向量搜索适用于多种不同类型的内容,这就是所谓的多模式搜索。
- InterSystems IRIS 提供与传统数据管理相结合的高性能向量搜索功能,可提高准确性和实时处理能力。
了解向量搜索
向量搜索引擎是如何工作的?了解其内在机制将有助于你从向量空间中获得最大价值。
什么是向量?
你可能还记得高中代数课上的向量。在计算机科学中,向量是简单的数字列表,其中每个数字代表不同的特征或维度。
虽然你在学校学习的向量可能只有两维或三维,但基于向量的现代系统通常使用数百或数千维。这听起来可能很复杂,但你可以把它看作是我们熟悉的三维世界的延伸。 想象一下,添加越来越多的特征来描述某个事物,其中的每一个特征都会成为你的向量中的一个新维度。
例如,表示 "猫 "这个词的向量可能是这样的:
[0.2, -0.5, 0.8, 0.1, -0.3, ...]
虽然这些数字看起来很抽象,但它们捕捉到了 "猫 "这个概念的各种语义方面,可以与其他向量进行数学比较。 feline"(猫科动物)一词的向量与 "cat"(猫)一词的向量非常相似,因为在它们附近使用的单词也非常相似。
什么是向量搜索?
向量搜索的核心是通过比较向量表示,在大型数据集中找到相似项目的方法。与传统的基于关键词的搜索(寻找词语或短语的精确匹配)不同,向量搜索旨在理解潜在的含义或上下文。
事实证明,在将文本转换为向量时,向量包含的意义比其他表示方式更多,因为与其他词语组合使用的词语提供了能够发现词语背后含义的上下文。
将数据转换为向量是向量搜索的第一步。通常在向系统添加新数据时会出现这种情况。当用户进行查询时,该查询也会被转换成一个向量。然后,搜索过程涉及在数据集中查找其向量与查询向量最相似的项。
这种方法可以进行更细致的搜索。例如,在基于文本的向量搜索中:
- 搜索 "汽车"可能也会返回有关 "汽车"或 "车辆"的结果,即使没有使用这些确切的词语。
- 有关 "数据分析技术"的查询可能会返回有关 "大数据统计方法"的相关结果。
向量搜索是实现 智能数据编织(smart data fabric)架构的一项关键技术。
向量搜索与传统语义搜索
传统的关键词搜索和向量搜索在方法和功能上有所不同:
- 匹配方法:关键词搜索查找完全匹配的单词或短语。向量搜索通过比较不同向量的方向和大小来寻找相似的含义或概念,它总是近似的而不是精确的。
- 了解上下文:关键词搜索通常会在上下文和同义词方面遇到困难。向量搜索可以理解上下文,并找到语义相关的内容。
- 处理模糊性:当词语有多种含义时,关键词搜索可能会返回不相关的结果。向量搜索通常可以根据查询的整体上下文进行消歧。
- 多语言功能:关键词搜索通常需要为不同语言分别建立索引。如果在多语言数据上进行训练,向量搜索通常可以找到跨语言的相关结果。
- 处理拼写错误和变体:关键字搜索可能会因为轻微的拼写错误而错过结果。向量搜索对各种变化的适应能力更强,尽管会出现一些小错误,但往往能找到相关结果。
如何生成向量
向量生成,也称为嵌入,是向量搜索的关键步骤。根据数据类型的不同,会使用不同的技术:
- 文本数据:单词嵌入(如 Word2Vec、GloVe)可将单个单词转换为向量,而句子或文档嵌入(如 BERT、Universal Sentence Encoder)可为较大的文本片段创建向量。这些模型通常在大量文本基础上进行预训练,并可针对特定领域进行微调。
- 图像数据:卷积神经网络(CNN)通常用于生成图像的向量表示。在训练过程中,这些网络学会从图像中提取相关特征。
- 音频数据:Mel-frequency cepstral coefficients (MFCC) 或深度学习模型等技术可以将音频转换为向量表示。
- 多模态数据:一些先进的模型可以创建代表不同数据类型组合的向量,例如带有说明的图像。
还有一些更高级、更专业的数据类型可以用向量来表示。这包括生物学中的基因组和蛋白质组信息、化学结构和图形关系。
向量的维数代表什么?
在搜索中,向量的维数代表数据的不同特征:
- 语义特征:每个维度都可能对应数据的一个特定语义概念或属性。
- 学习表征:在很多情况下,尤其是深度学习模型,每个维度的确切含义并没有明确定义,而是由模型在训练过程中学会的。 “潜在语义模型(latent semantic model)”这个术语曾经很流行,它本质上是一种学习表征。
- 上下文信息:对于文本数据,维度通常会捕捉单词或短语的上下文使用模式。
- 抽象概念:有些维度可能代表人类不易解读的抽象概念,但却有助于模型对数据的理解。例如,不同图像的共同底层结构就是机器能看到而人类看不到的概念。
虽然维度越多,通常能捕捉到的信息就越多,区分也就越细致,但同时也会增加计算需求。
因此,维度数量与搜索速度或存储需求等实际考虑因素之间往往需要取得平衡。
向量搜索算法和方法
什么是向量搜索引擎?
向量搜索引擎将数据(如文本、图像或音频)转换为数字向量,并通过测量这些向量之间在高维空间中的距离来查找相似的项目。
与依赖关键字匹配和统计技术的传统语义搜索不同,向量搜索可以捕捉项目之间更细微的关系和相似性,从而获得更准确、与上下文更相关的结果,尤其是对于复杂的查询或多媒体内容。
向量搜索中使用了哪些算法或方法?
向量搜索依靠各种算法在高维空间中寻找相似向量。最常见的方法包括:
- 精确近邻(NN)搜索:这种方法能找到与查询向量最接近的向量。这种方法虽然准确,但对于大型数据集来说计算成本较高。
近似近邻(ANN)搜索:ANN 算法在一定程度上牺牲了准确性,但速度却显著提高。流行的 ANN 算法包括:
- 位置敏感散列(Locality-Sensitive Hashing,LSH)
- 分层导航小世界(Hierarchical Navigable Small World,HNSW)图
- 产品量化(Product Quantization,PQ)
- 树状方法(Tree-based methods):KD树或 Ball 树等算法将向量组织成树状结构,以加快搜索速度。 这些方法对低维数据很有效,但在处理高维向量时可能会遇到困难。
- 基于图形的方法:这些算法构建了一个图形,其中节点是向量,边 连接相似的项目。 这方面的例子包括 HNSW(如上所述)和 Navigable Small World(NSW)图。
向量搜索中的余弦相似度
余弦相似度(Cosine similarity)在向量搜索中至关重要,因为它可以根据向量的方向而不是大小有效地测量向量之间的相似性,从而可以在高维空间中进行准确的比较。
这使得它在语义搜索、推荐系统和文档聚类等任务中特别有效,因为在这些任务中,项目之间的关系比它们的绝对值更重要。
关于余弦相似度的要点:
范围:余弦相似度的取值范围为-1 到 1,其中
- 1 表示向量指向相同的方向(最相似)
- 0 表示正交(不相关)向量
- -1 表示向量指向相反的方向(最不相似)
- 幅值无关性:余弦相似度关注的是向量的方向,而不是向量的幅值,因此它适用于比较不同长度的文档。
- 计算:余弦相似度的计算公式为:cos(θ) = (A - B) / (||A||*|B|||)其中,A - B 是向量 A 和 B 的点积,||A||和||B||是它们的大小。
- 效率:余弦相似度的计算效率很高,尤其是当向量经过归一化处理时。
余弦相似度尤为重要,因为:
- 它能很好地捕捉语义相似性,尤其是对文本数据而言。
- 它的计算效率很高,可以在高维空间中快速计算相似性。
- 它可以直观地理解和解释。
余弦相似度:实例解析
想象一下,你是熙熙攘攘的厨房里的一名厨师,每一份食谱都是广阔 "风味空间 "中的一个向量。 这个空间的维度包括甜味、咸味、辣味、鲜味等。你的招牌菜就像这个风味空间中的一个特定点,你想要找到类似的食谱或创造出与你风格相得益彰的融合菜肴。
余弦相似度就像一个特殊的 "风味指南针",可以测量其他食谱与您的招牌菜风味的匹配程度。与您的菜谱非常相似的菜肴在风味罗盘上会指向几乎相同的方向(高余弦相似度,接近 1)。
有点相似的菜肴可能会指向相关但不完全相同的方向(中等余弦相似度,约 0.7)。完全不同类型的菜肴会指向风味罗盘上的垂直方向(余弦相似度为 0,表示没有风味关系)。 重要的是,味道的浓淡(向量大小)并不重要——味道清淡的咖喱和味道浓郁的咖喱在味道方向上可能非常相似。
在这个烹饪类比中,向量搜索引擎就像一个效率极高的主厨。无论菜肴的原产地或浓淡,它都能在庞大的全球烹饪书中为每道菜肴提供风味指南,迅速找到与您的特色风味相协调的菜肴。
向量搜索中使用的其他距离指标
虽然余弦相似度被广泛使用,但在向量搜索中还可以使用其他几种距离度量:
- 欧氏距离(Euclidean Distance):测量欧氏空间中两点之间的直线距离。当向量的大小非常重要时,这种方法非常有用。
- 曼哈顿距离(Manhattan Distance):又称 L1 距离或城市街区距离。 这种方法计算的是坐标的绝对差值之和,在某些类似网格的问题或处理稀疏数据时非常有用。
- 点积(Dot Product):两个向量中相应元素的简单相乘,常用于向量的归一化。
- 雅卡德相似性(Jaccard Similarity):测量有限样本集之间的相似性,适用于二进制或分类数据。
- 汉明距离(Hamming Distance):测量两个向量中对应符号不同的位置数,常用于二进制数据或错误检测。
向量搜索的应用
向量搜索能够理解上下文,并在简单的关键字匹配之外找到相关信息,因此在各行各业变得越来越重要。
医疗保健与生命科学
- 医学文献检索:即使术语不同,研究人员也能找到相关研究。
- 病历比对:识别相似病例,制定个性化治疗方案。
- 药物发现:寻找具有相似性质或作用的化合物。
电子商务与零售
- 产品推荐:根据语义相似性而不仅仅是类别匹配来推荐商品。
- 视觉搜索:允许客户查找与上传图片相似的产品。
- 欺诈检测:识别交易数据中的异常模式。
金融服务
- 风险评估:分析财务文件以识别潜在风险。
- 市场趋势分析:寻找各种经济指标之间的相关性。
- 客户细分:根据复杂的行为模式对客户进行分组。
媒体和娱乐
- 内容推荐:根据用户喜好推荐电影、音乐或文章。
- 剽窃检测:在大型数据库中识别相似内容。
- 音频和视频搜索:根据文字记录或视觉特征查找媒体中的特定时刻。
制造与供应链
- 质量控制:检测生产数据中的异常情况。
- 库存管理:根据复杂的需求模式优化库存水平。
- 预测性维护:根据传感器数据模式识别可能出现故障的设备。
信息技术与网络安全
- 日志分析:检测系统日志中的异常模式,发现安全威胁。
- 代码相似性搜索:查找相似的代码片段,用于调试或优化。
- 网络流量分析:根据流量模式识别潜在的安全漏洞。
支持向量搜索的技术和平台
随着向量搜索在各行各业的日益普及,一系列支持其实施的技术和平台应运而生。
向量数据库(Vector Database):向量数据库专为高效存储和查询向量数据而设计。例如 Faiss(Facebook AI Similarity Search)和 Annoy(Approximate Nearest Neighbors Oh Yeah)。
机器学习框架:TensorFlow 和 PyTorch 提供了创建和操作 向量嵌入的库。这些框架可用于为特定领域训练自定义嵌入模型。
自然语言处理(NLP)库:像spaCy和Hugging Face的Transformers这样的库提供了文本嵌入的预训练模型。这些库可用于为搜索应用生成文本数据的向量表示。
基于云的向量搜索服务:主要云服务提供商提供可集成到应用程序中的托管向量搜索服务。这些服务通常为大规模向量搜索操作提供可扩展的基础设施。
开源搜索引擎:一些传统搜索引擎现在提供向量搜索功能。对于希望在现有搜索基础架构中添加向量搜索功能的组织来说,这些功能非常有用。
主要搜索引擎和数据库如何采用向量搜索?
网络搜索引擎:谷歌等主要搜索引擎已采用向量搜索技术,以提高对查询语义的理解。它们使用神经网络模型来生成查询和网页的向量表示。
电子商务搜索:在线零售平台使用向量搜索来加强产品发现,通常将其与传统的关键字搜索相结合,以获得最佳结果。
企业搜索解决方案:许多企业搜索平台现在都提供向量搜索功能。这些解决方案通常采用混合方法,将向量搜索与传统搜索方法相结合。
数据库管理系统:一些 关系型数据库系统已开始采用向量搜索功能,允许在进行传统 SQL 查询的同时进行相似性搜索。这种集成使得能够在同一系统内对结构化和非结构化数据进行灵活查询。
云数据平台:云服务提供商越来越多地将向量搜索作为其服务的一部分提供。这样就可以将向量搜索功能无缝集成到基于云的应用程序和数据工作流中。
利用 InterSystems IRIS 的向量搜索功能
在信息检索和数据分析领域,向量搜索和向量表示已成为改变游戏规则的技术。通过将数据表示为高维向量,向量搜索实现了更直观、上下文感知和语义丰富的搜索体验。
在这篇文章中,我们揭示了向量搜索背后的基本概念及其在各行各业的应用。我们已经看到,向量搜索在理解上下文、处理多语言查询以及在关键字不完全匹配的情况下也能找到相关结果方面表现出色 。
不过,我们也认识到大规模管理高维数据的计算需求和复杂性。这正是 InterSystems IRIS作为强大解决方案的优势所在。InterSystems IRIS 提供全面、统一的平台,将向量搜索功能与传统数据管理功能无缝集成。
主要优势包括:
- 无缝集成:向量搜索功能已完全集成到 InterSystems IRIS 平台中,可轻松与 SQL 查询和其他数据处理任务相结合。
- 可扩展性:InterSystems IRIS 设计用于处理大规模向量搜索操作,支持分布式计算以提高性能。
- 灵活性:InterSystems IRIS 支持各种嵌入技术和距离度量,可用于不同的向量搜索应用。
- 先进的 NLP 集成:InterSystems IRIS 可与先进的自然语言处理技术相结合,以提高查询理解能力和结果相关性。
- 特定领域的定制:该平台支持定制嵌入模型,可为医疗保健或金融等专业领域提供量身定制的解决方案。
- 统一数据管理:InterSystems IRIS 消除了对多个独立系统的需求,降低了复杂性和潜在的数据不一致性。