目錄
1.引言
2. 初步嘗試:簡單向量檢索的引入
5.深度学习集成与未来展望
5.1 向量化是前提
5.2 模型是核心
5.3 ESRE 是 Elastic 的未来
6.小结
7.参考
首頁 科技週邊 人工智慧 從基礎到實踐,回顧Elasticsearch 向量檢索發展史

從基礎到實踐,回顧Elasticsearch 向量檢索發展史

Oct 23, 2023 pm 05:17 PM
深度學習 elasticsea

从基础到实践,回顾Elasticsearch 向量检索发展史

1.引言

向量檢索已經成為現代搜尋和推薦系統的核心元件。

透過將複雜的物件(例如文字、圖像或聲音)轉換為數值向量,並在多維空間中進行相似性搜索,它能夠實現高效的查詢匹配和推薦。

从基础到实践,回顾Elasticsearch 向量检索发展史從基礎到實踐,回顧Elasticsearch 向量檢索發展史_elasticsearch

Elasticsearch 作為一款流行的開源搜尋引擎,其在向量檢索方面的發展也一直備受關注。本文將回顧 Elasticsearch 向量檢索的發展歷史,重點介紹各階段的特性和進展。以史為鑑,方便大家建立起 Elasticsearch 向量檢索的全量認知。

2. 初步嘗試:簡單向量檢索的引入

Elasticsearch 最初並未專門針對向量檢索進行設計。然而,隨著機器學習和人工智慧的興起,對於高維度向量空間的查詢需求逐漸增加。

在 Elasticsearch 的 5.x 版本中,Elastic 愛好者們開始嘗試透過外掛程式和基本的數學運算實現簡單的向量檢索功能。如:一些早期的插件如 elasticsearch-vector-scoring、fast-elasticsearch-vector-scoring 就是為了滿足這樣的需求。

https://www.php.cn/link/7a677bb4477ae2dd371add568dd19e23

https://www.php.cn/link/7684e5225ab986f6b#https://www.php.cn/link/7684e5225ab986f6b32ed950eec56

此階段的向量檢索主要用於基本的相似度查詢,例如文字相似度計算。雖然功能相對有限,但為後續的發展奠定了基礎。

擴充說明:關於機器學習功能,如果大家對 Elasticsearch 版本更迭感興趣,印像中當時 6.X 版本推出,非常振奮人心。不過受限於非開源功能,國內的真實受眾還相對較少。

3. 官方支援:進一步發展

到 Elasticsearch 7.0 版本,正式開始增加對向量欄位的支持,例如透過 dense_vector 類型。這標誌著 Elasticsearch 正式進入向量檢索領域,不再只依賴插件。

dense_vector 最早的啟動時間:2018 年 12 月 13 日,7.6 版本標記為 GA。

https://www.php.cn/link/648f4baa45889f9c5f4f7add35862841

#https://www.php.cn/link/ac10ff1941c540cd#https://www.php.cn/link/ac10ff1941c540cd87c107330f

關於dense_vector 類型的使用,推薦閱讀:高維度向量搜尋:在Elasticsearch 8.X 中利用dense_vector 的實戰探索。

這一階段的主要挑戰是如何有效地在傳統的倒排索引結構中支援向量檢索。透過與現有的全文搜尋功能結合,Elasticsearch 能夠提供一個靈活且強大的解決方案。

從最初的插件和基本運算,到後來的官方支援和集成,這一階段為 Elasticsearch 在向量檢索方面的進一步創新和優化奠定了堅實的基礎。

4.專門最佳化:增強的相似度計算

隨著需求的成長,Elasticsearch 團隊開始深入研究並最佳化向量檢索效能。這涉及了引入更複雜的相似度計算方法,例如餘弦相似度、歐幾里德距離等,以及對查詢執行的最佳化。

從 Elasticsearch 7.3 版本開始,官方引入了更複雜的相似度計算方法。特別是 script_score 查詢的增強,使用戶可以透過 Painless 腳本自訂更豐富的相似度計算。

/guide/en/elasticsearch/reference/7.3/query-dsl-script-score-query.html#vector-functions

核心功能在於允許透過向量之間的夾角計算相似度,以k 最近鄰(k-NN) 的餘弦相似度距離指標,從而為相似度搜尋引擎提供支援。廣泛用於文字分析和推薦系統。

主要用於解決:複雜相似度需求,提供了更靈活和強大的相似度運算選項,能夠滿足更多的業務需求。

應用程式場景體現在:

(1)个性化推荐:通过余弦相似度分析用户的行为和兴趣,提供更个性化的推荐内容;(2)图像识别和搜索:使用欧几里得距离快速检索与给定图像相似的图像;(3)声音分析:在声音文件之间寻找相似模式,用于语音识别和分析。
登入後複製
值得一提的是:初始的時候,向量檢索支援的維度為:1024,直到Elasticsearch 8.8 版本,支援維度變更為:2048(這是呼聲很高的一個需求)。

https://www.php.cn/link/1bda7493c968ded9800b3a754fc07e5c

/t/vector-knn-search-with-more-than-1024-dimensions/ 332819

Elasticsearch 7.x 版本的增强相似度计算功能标志着向量检索能力的显著进展。通过引入更复杂的相似度计算方法和查询优化,Elasticsearch 不仅增强了其在传统搜索场景中的功能,还为新兴的机器学习和 AI 应用打开了新的可能性。

但,这个时候你会发现,如果要实现复杂的向量搜索功能,自己实现的还很多。如果把后面马上提到的深度学习的集成和大模型的出现比作:飞行的汽车,当前的阶段还是 “拉驴车”,功能是有的,但用起来很费劲。


从基础到实践,回顾Elasticsearch 向量检索发展史从基础到实践,回顾Elasticsearch 向量检索发展史_Elastic_02

5.深度学习集成与未来展望

大模型时代,向量检索和多模态搜索成为 “兵家” 必争之地。

多模态检索是一种综合各种数据模态(如文本、图像、音频、视频等)的检索技术。换句话说,它不仅仅是根据文字进行搜索,还可以根据图像、声音或其他模态的输入来搜索相关内容。

为了更通俗地理解多模态检索,我们可以通过以下比喻和示例来加深认识:想象你走进一个巨大的图书馆,这里不仅有书籍,还有各种图片、录音和视频。你可以向图书馆员展示一张照片,她会为你找到与这张照片相关的所有书籍、音频和视频。或者,你可以哼一段旋律,图书馆员能找到相关的资料,或者提供类似的歌曲或视频。这就是多模态检索的魔力!

随着深度学习技术的不断发展和应用,Elasticsearch 已开始探索将深度学习模型直接集成到向量检索过程中。这不仅允许更复杂、更准确的相似度计算,还开辟了新的应用领域,例如基于图像或声音的搜索。尤其在 Elasticsearch 的 8.x 版本,这一方向得到了显著的推进。

5.1 向量化是前提

如下图所示,先从左往右看是写入,图像、文档、音频转化为向量特征表示,在 Elasticsearch 中通过 dense_vector 类型存储。

从右往左看是检索,先将检索语句转化为向量特征表示,然后借助 K 近邻检索算法(在 Elasticsearch 中借助 Knn search 实现),获取相似的结果。

看中间,Results 部分就是向量检索的结果。

综上,向量检索打破了传统倒排索引仅支持文本检索的缺陷,可以扩展支持文本、语音、图像、视频多种模态。

从基础到实践,回顾Elasticsearch 向量检索发展史图片来自:Elasticsearch 官方文档


相信你到这里,应该理解了向量检索和多模态。没有向量化的这个过程,多模态检索无从谈起。

5.2 模型是核心

深度学习模型集成总共可分为三步:

第一步:模型导入和管理:Elasticsearch 8.x 支持导入预训练的深度学习模型,并提供相应的模型管理工具,方便模型的部署和更新。第二步:向量表示与转换:通过深度学习模型,可以将非结构化数据如图像和声音转换为向量表示,从而进行有效的检索。第三步:自定义相似度计算:8.x 版本提供了基于深度学习模型的自定义相似度计算接口,允许用户根据实际需求开发和部署专门的相似度计算方法。
登入後複製

关于深度学习,可以是自训练模型,也可以是第三方模型库中的模型,举例:咱们图搜图案例中就是用的 HuggingFace 里的:clip-ViT-B-32-multilingual-v1 模型。

从基础到实践,回顾Elasticsearch 向量检索发展史从基础到实践,回顾Elasticsearch 向量检索发展史_Elastic_04

Elasticsearch 支持的第三方模型列表:

从基础到实践,回顾Elasticsearch 向量检索发展史

包括如下的 Hugging Face 模型库也都是支持的。

从基础到实践,回顾Elasticsearch 向量检索发展史从基础到实践,回顾Elasticsearch 向量检索发展史_elasticsearch_05

模型是 Elasticsearch 与深度学习集成的核心,它能将复杂的数据转化为 “指纹” 向量,使搜索更高效和智能。借助模型,Elasticsearch 可以理解和匹配各种非结构化数据,如图像和声音,提供更为准确和个性化的搜索结果,同时适应不断变化的数据和需求。“没有了模型,我们还需要黑暗中摸索很久”。

第三方模型官网介绍:/guide/en/machine-learning/8.9/ml-nlp-model-ref.html#ml-nlp-model-ref-text-embedding

值得一提的是:Elasticsearch 导入大模型需要专属 Python 客户端工具 Eland。

Eland 是一个 Python Elasticsearch 客户端,让用户能用类似 Pandas 的 API 来探索和分析 Elasticsearch 中的数据,还支持从常见机器学习库上传训练好的模型到 Elasticsearch。

Eland 是为了与 Elasticsearch 协同工作而开发的库。它不是 Elasticsearch 的一个特定版本产物,而是作为一个独立的项目来帮助 Python 开发者更方便地在 Elasticsearch 中进行数据探索和机器学习任务。

Eland 更多参见:

/guide/en/elasticsearch/client/eland/current/index.html

https://www.php.cn/link/47e57c4836ae0c44f774f9d8497e0b4f

5.3 ESRE 是 Elastic 的未来

前一段时间在分别给两位阿里云、腾讯云大佬聊天的时候,都提到了 Elasticsearch Relevance Engine (ESRE) 才是 Elastic 未来。

ESRE 官方介绍如下:——Elasticsearch Relevance Engine 将 AI 的最佳实践与 Elastic 的文本搜索进行了结合。ESRE 为开发人员提供了一整套成熟的检索算法,并能够与大型语言模型 (LLM) 集成。借助 ESRE,我们可以应用具有卓越相关性的开箱即用型语义搜索,与外部大型语言模型集成,实现混合搜索,并使用第三方或我们自己的模型。

ESRE 集成了高级相关性排序如 BM25f、强大的矢量数据库、自然语言处理技术、与第三方模型如 GPT-3 和 GPT-4 的集成,并支持开发者自定义模型与应用。其特点在于提供深度的语义搜索,与专业领域的数据整合,以及无缝的生成式 AI 整合,让开发者能够构建更吸引人、更准确的搜索体验。

在 Elasticsearch 8.9 版本上新了:Semantic search 语义检索功能,对官方文档熟悉的同学,你会发现如下截图内容,早期版本是没有的。

语义搜索不是根据搜索词进行字面匹配,而是根据搜索查询的意图和上下文含义来检索结果。

更进一步讲:语义搜索不仅仅是匹配你输入的关键字,而是试图理解你的真正意图,给你带来更准确、更有上下文的搜索结果。简单来说,如果你在英国搜索 “football”,系统知道你可能想要搜橄榄球,而不是足球(在美国 football 是足球)。

这种智能搜索方式,得益于强大的文本向量化等技术背景,使我们的在线搜索体验更加直观、方便和满意。

在文本里检索 connection speed requirement, 这点属于早期的倒排索引检索方式,或者叫全文检索中的短语 match_phrase 检索匹配 或者分词 match 检索匹配。这种可以得到结果。但是,中后半段视频显示,要是咱们要检索:“How fast should my internet be” 怎么办?
登入後複製

其实这里转换为向量检索,fast 和 speed 语义相近,should be 和 required、needs 语义相近,internet 和 connection、wifi 语义相近。所以依然能召回结果。

这突破了传统同义词的限制,体现了语义检索的妙处!

更进一步,我们给出语义检索和传统分词检索的区别,以期望大家更好的理解语义搜索。

从基础到实践,回顾Elasticsearch 向量检索发展史

总体而言,深度学习集成已经成为 Elasticsearch 向量检索能力的有力补充,促使它在搜索和分析领域的地位更加牢固,同时也为未来的发展提供了广阔的空间。

6.小结

Elasticsearch 的向量检索从最初的简单实现发展到现在的高效、多功能解决方案,反映了现代搜索和推荐系统的需求和挑战。随着技术的不断演进,我们可以期待 Elasticsearch 在向量检索方面将继续推动创新和卓越。

说一下最近的感触,向量检索、大模型等新技术的出现有种感觉 “学不完,根本学不完”,并且很容易限于 “皮毛论”(我自创的词)——所有技术都了解一点点,但经不起提问;浅了说,貌似啥都懂,深了说,一问三不知。

这种情况怎么办?我目前的方法是:以实践为目的去深入理解理论,必要时理解算法,然后不定期将所看、所思、所想梳理成文,以备忘和知识体系化。这个过程很慢、很累,但我相信时间越长、价值越大。

欢迎大家就向量检索等问题进行留言讨论交流,你的问题很可能就是下一次文章的主题哦!

7.参考

1、/cn/blog/text-similarity-search-with-vectors-in-elasticsearch

2、/guide/en/elasticsearch/reference/7.3/query-dsl-script-score-query.html#vector-functions-cosine

3、https://www.php.cn/link/8b0bb3eff8c1e5bf7f206125959921d7

以上是從基礎到實踐,回顧Elasticsearch 向量檢索發展史的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1668
14
CakePHP 教程
1427
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
常用的AI激活函數解析:Sigmoid、Tanh、ReLU和Softmax的深度學習實踐 常用的AI激活函數解析:Sigmoid、Tanh、ReLU和Softmax的深度學習實踐 Dec 28, 2023 pm 11:35 PM

激活函數在深度學習中扮演著至關重要的角色,它們能夠為神經網路引入非線性特性,使得網路能夠更好地學習並模擬複雜的輸入輸出關係。正確選擇和使用激活函數對於神經網路的性能和訓練效果有著重要的影響本文將介紹四種常用的激活函數:Sigmoid、Tanh、ReLU和Softmax,從簡介、使用場景、優點、缺點和優化方案五個維度進行探討,為您提供關於激活函數的全面理解。 1.Sigmoid函數SIgmoid函數公式簡介:Sigmoid函數是常用的非線性函數,可以將任何實數映射到0到1之間。它通常用於將不歸一

Python中使用BERT進行情感分析的方法及步驟 Python中使用BERT進行情感分析的方法及步驟 Jan 22, 2024 pm 04:24 PM

BERT是由Google在2018年提出的一種預先訓練的深度學習語言模式。全稱為BidirectionalEncoderRepresentationsfromTransformers,它基於Transformer架構,具有雙向編碼的特性。相較於傳統的單向編碼模型,BERT在處理文字時能夠同時考慮上下文的訊息,因此在自然語言處理任務中表現出色。它的雙向性使得BERT能夠更好地理解句子中的語義關係,從而提高了模型的表達能力。透過預訓練和微調的方法,BERT可以用於各種自然語言處理任務,如情緒分析、命名

潛藏空間嵌入:解釋與示範 潛藏空間嵌入:解釋與示範 Jan 22, 2024 pm 05:30 PM

潛在空間嵌入(LatentSpaceEmbedding)是將高維度資料對應到低維度空間的過程。在機器學習和深度學習領域中,潛在空間嵌入通常是透過神經網路模型將高維輸入資料映射為一組低維向量表示,這組向量通常被稱為「潛在向量」或「潛在編碼」。潛在空間嵌入的目的是捕捉資料中的重要特徵,並將其表示為更簡潔和可理解的形式。透過潛在空間嵌入,我們可以在低維空間中對資料進行視覺化、分類、聚類等操作,從而更好地理解和利用資料。潛在空間嵌入在許多領域中都有廣泛的應用,如影像生成、特徵提取、降維等。潛在空間嵌入的主要

超越ORB-SLAM3! SL-SLAM:低光、嚴重抖動和弱紋理場景全搞定 超越ORB-SLAM3! SL-SLAM:低光、嚴重抖動和弱紋理場景全搞定 May 30, 2024 am 09:35 AM

寫在前面今天我們探討下深度學習技術如何改善在複雜環境中基於視覺的SLAM(同時定位與地圖建構)表現。透過將深度特徵提取和深度匹配方法相結合,這裡介紹了一種多功能的混合視覺SLAM系統,旨在提高在諸如低光條件、動態光照、弱紋理區域和嚴重抖動等挑戰性場景中的適應性。我們的系統支援多種模式,包括拓展單目、立體、單目-慣性以及立體-慣性配置。除此之外,也分析如何將視覺SLAM與深度學習方法結合,以啟發其他研究。透過在公共資料集和自採樣資料上的廣泛實驗,展示了SL-SLAM在定位精度和追蹤魯棒性方面優

超強!深度學習Top10演算法! 超強!深度學習Top10演算法! Mar 15, 2024 pm 03:46 PM

自2006年深度學習概念被提出以來,20年快過去了,深度學習作為人工智慧領域的一場革命,已經催生了許多具有影響力的演算法。那麼,你所認為深度學習的top10演算法有哪些呢?以下是我心目中深度學習的頂尖演算法,它們在創新、應用價值和影響力方面都佔有重要地位。 1.深度神經網路(DNN)背景:深度神經網路(DNN)也叫多層感知機,是最普遍的深度學習演算法,發明之初由於算力瓶頸而飽受質疑,直到近些年算力、數據的爆發才迎來突破。 DNN是一種神經網路模型,它包含多個隱藏層。在該模型中,每一層將輸入傳遞給下一層,並

一文搞懂:AI、機器學習與深度學習的連結與區別 一文搞懂:AI、機器學習與深度學習的連結與區別 Mar 02, 2024 am 11:19 AM

在當今科技日新月異的浪潮中,人工智慧(ArtificialIntelligence,AI)、機器學習(MachineLearning,ML)與深度學習(DeepLearning,DL)如同璀璨星辰,引領著資訊科技的新浪潮。這三個詞彙經常出現在各種前沿討論和實際應用中,但對於許多初涉此領域的探索者來說,它們的具體含義及相互之間的內在聯繫可能仍籠罩著一層神秘面紗。那讓我們先來看看這張圖。可以看出,深度學習、機器學習和人工智慧之間存在著緊密的關聯和遞進關係。深度學習是機器學習的一個特定領域,而機器學習

從基礎到實踐,回顧Elasticsearch 向量檢索發展史 從基礎到實踐,回顧Elasticsearch 向量檢索發展史 Oct 23, 2023 pm 05:17 PM

1.引言向量檢索已成為現代搜尋和推薦系統的核心組件。透過將複雜的物件(例如文字、圖像或聲音)轉換為數值向量,並在多維空間中進行相似性搜索,它能夠實現高效的查詢匹配和推薦。從基礎到實踐,回顧Elasticsearch向量檢索發展史_elasticsearchElasticsearch作為一款流行的開源搜尋引擎,在向量檢索方面的發展也一直備受關注。本文將回顧Elasticsearch向量檢索的發展歷史,重點介紹各階段的特性與進展。以史為鑑,方便大家建立起Elasticsearch向量檢索的全量

AlphaFold 3 重磅問世,全面預測蛋白質與所有生命分子相互作用及結構,準確度遠超以往水平 AlphaFold 3 重磅問世,全面預測蛋白質與所有生命分子相互作用及結構,準確度遠超以往水平 Jul 16, 2024 am 12:08 AM

编辑|萝卜皮自2021年发布强大的AlphaFold2以来,科学家们一直在使用蛋白质结构预测模型来绘制细胞内各种蛋白质结构的图谱、发现药物,并绘制每种已知蛋白质相互作用的「宇宙图」。就在刚刚,GoogleDeepMind发布了AlphaFold3模型,该模型能够对包括蛋白质、核酸、小分子、离子和修饰残基在内的复合物进行联合结构预测。AlphaFold3的准确性对比过去许多专用工具(蛋白质-配体相互作用、蛋白质-核酸相互作用、抗体-抗原预测)有显著提高。这表明,在单个统一的深度学习框架内,可以实现

See all articles