目次
1. はじめに
2. 最初の試み: 単純なベクトル検索の導入
3. 公式サポート: さらなる開発
需要の増大に伴い、Elasticsearch チームは詳細な調査を実施し、ベクトル検索パフォーマンスを最適化することに着手しました。これには、コサイン類似度、ユークリッド距離などのより複雑な類似度計算方法の導入と、クエリ実行の最適化が含まれます。
5.深度学习集成与未来展望
5.1 向量化是前提
5.2 模型是核心
5.3 ESRE 是 Elastic 的未来
6.小结
7.参考
ホームページ テクノロジー周辺機器 AI Elasticsearch ベクトル検索の開発の歴史を基礎から実践まで振り返ります。

Elasticsearch ベクトル検索の開発の歴史を基礎から実践まで振り返ります。

Oct 23, 2023 pm 05:17 PM
ディープラーニング elasticsea

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

1. はじめに

ベクトル検索は、最新の検索および推奨システムの中核コンポーネントとなっています。

複雑なオブジェクト (テキスト、画像、音声など) を数値ベクトルに変換し、多次元空間で類似性検索を実行することで、効率的なクエリ マッチングとレコメンデーションを可能にします。

从基础到实践,回顾Elasticsearch 向量检索发展史基礎から実践まで、Elasticsearch の開発履歴を確認します。vector retrieval_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/7684e5225ab986f6b32ed950eec5621d

この段階でのベクトル取得は、主にテキストの類似性計算などの基本的な類似性クエリに使用されます。機能は比較的限定されていますが、その後の開発の基礎となります。

補足: 機械学習機能に関して、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/ac10ff1941c540cd87c107330996f4f6

Density_vector タイプの使用については、「高次元ベクトル検索: Elasticsearch 8.X での Densse_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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python での感情分析に BERT を使用する方法と手順 Python での感情分析に BERT を使用する方法と手順 Jan 22, 2024 pm 04:24 PM

BERT は、2018 年に Google によって提案された事前トレーニング済みの深層学習言語モデルです。正式名は BidirectionEncoderRepresentationsfromTransformers で、Transformer アーキテクチャに基づいており、双方向エンコードの特性を備えています。従来の一方向コーディング モデルと比較して、BERT はテキストを処理するときにコンテキスト情報を同時に考慮できるため、自然言語処理タスクで優れたパフォーマンスを発揮します。その双方向性により、BERT は文内の意味関係をより深く理解できるようになり、それによってモデルの表現能力が向上します。事前トレーニングおよび微調整方法を通じて、BERT は感情分析、命名などのさまざまな自然言語処理タスクに使用できます。

一般的に使用される AI 活性化関数の分析: Sigmoid、Tanh、ReLU、Softmax のディープラーニングの実践 一般的に使用される AI 活性化関数の分析: Sigmoid、Tanh、ReLU、Softmax のディープラーニングの実践 Dec 28, 2023 pm 11:35 PM

活性化関数は深層学習において重要な役割を果たしており、ニューラル ネットワークに非線形特性を導入することで、ネットワークが複雑な入出力関係をより適切に学習し、シミュレートできるようになります。活性化関数の正しい選択と使用は、ニューラル ネットワークのパフォーマンスとトレーニング結果に重要な影響を与えます。この記事では、よく使用される 4 つの活性化関数 (Sigmoid、Tanh、ReLU、Softmax) について、導入、使用シナリオ、利点、欠点と最適化ソリューション アクティベーション関数を包括的に理解できるように、次元について説明します。 1. シグモイド関数 シグモイド関数の公式の概要: シグモイド関数は、任意の実数を 0 と 1 の間にマッピングできる一般的に使用される非線形関数です。通常は統一するために使用されます。

ORB-SLAM3を超えて! SL-SLAM: 低照度、重度のジッター、弱いテクスチャのシーンはすべて処理されます。 ORB-SLAM3を超えて! SL-SLAM: 低照度、重度のジッター、弱いテクスチャのシーンはすべて処理されます。 May 30, 2024 am 09:35 AM

以前に書きましたが、今日は、深層学習テクノロジーが複雑な環境におけるビジョンベースの SLAM (同時ローカリゼーションとマッピング) のパフォーマンスをどのように向上させることができるかについて説明します。ここでは、深部特徴抽出と深度マッチング手法を組み合わせることで、低照度条件、動的照明、テクスチャの弱い領域、激しいセックスなどの困難なシナリオでの適応を改善するように設計された多用途のハイブリッド ビジュアル SLAM システムを紹介します。当社のシステムは、拡張単眼、ステレオ、単眼慣性、ステレオ慣性構成を含む複数のモードをサポートしています。さらに、他の研究にインスピレーションを与えるために、ビジュアル SLAM と深層学習手法を組み合わせる方法も分析します。公開データセットと自己サンプリングデータに関する広範な実験を通じて、測位精度と追跡堅牢性の点で SL-SLAM の優位性を実証しました。

潜在空間の埋め込み: 説明とデモンストレーション 潜在空間の埋め込み: 説明とデモンストレーション Jan 22, 2024 pm 05:30 PM

潜在空間埋め込み (LatentSpaceEmbedding) は、高次元データを低次元空間にマッピングするプロセスです。機械学習と深層学習の分野では、潜在空間埋め込みは通常、高次元の入力データを低次元のベクトル表現のセットにマッピングするニューラル ネットワーク モデルです。このベクトルのセットは、「潜在ベクトル」または「潜在ベクトル」と呼ばれることがよくあります。エンコーディング」。潜在空間埋め込みの目的は、データ内の重要な特徴をキャプチャし、それらをより簡潔でわかりやすい形式で表現することです。潜在空間埋め込みを通じて、低次元空間でデータの視覚化、分類、クラスタリングなどの操作を実行し、データをよりよく理解して活用できます。潜在空間埋め込みは、画像生成、特徴抽出、次元削減など、多くの分野で幅広い用途があります。潜在空間埋め込みがメイン

1 つの記事で理解: AI、機械学習、ディープラーニングのつながりと違い 1 つの記事で理解: AI、機械学習、ディープラーニングのつながりと違い Mar 02, 2024 am 11:19 AM

今日の急速な技術変化の波の中で、人工知能 (AI)、機械学習 (ML)、および深層学習 (DL) は輝かしい星のようなもので、情報技術の新しい波をリードしています。これら 3 つの単語は、さまざまな最先端の議論や実践で頻繁に登場しますが、この分野に慣れていない多くの探検家にとって、その具体的な意味や内部のつながりはまだ謎に包まれているかもしれません。そこで、まずはこの写真を見てみましょう。ディープラーニング、機械学習、人工知能の間には密接な相関関係があり、進歩的な関係があることがわかります。ディープラーニングは機械学習の特定の分野であり、機械学習

超強い!深層学習アルゴリズムのトップ 10! 超強い!深層学習アルゴリズムのトップ 10! Mar 15, 2024 pm 03:46 PM

2006 年にディープ ラーニングの概念が提案されてから、ほぼ 20 年が経過しました。ディープ ラーニングは、人工知能分野における革命として、多くの影響力のあるアルゴリズムを生み出してきました。では、ディープラーニングのトップ 10 アルゴリズムは何だと思いますか?私の考えでは、ディープ ラーニングのトップ アルゴリズムは次のとおりで、いずれもイノベーション、アプリケーションの価値、影響力の点で重要な位置を占めています。 1. ディープ ニューラル ネットワーク (DNN) の背景: ディープ ニューラル ネットワーク (DNN) は、多層パーセプトロンとも呼ばれ、最も一般的なディープ ラーニング アルゴリズムです。最初に発明されたときは、コンピューティング能力のボトルネックのため疑問視されていました。最近まで長年にわたる計算能力、データの爆発的な増加によって画期的な進歩がもたらされました。 DNN は、複数の隠れ層を含むニューラル ネットワーク モデルです。このモデルでは、各層が入力を次の層に渡し、

Elasticsearch ベクトル検索の開発の歴史を基礎から実践まで振り返ります。 Elasticsearch ベクトル検索の開発の歴史を基礎から実践まで振り返ります。 Oct 23, 2023 pm 05:17 PM

1. はじめに ベクトル検索は、最新の検索および推奨システムの中核コンポーネントとなっています。テキスト、画像、音声などの複雑なオブジェクトを数値ベクトルに変換し、多次元空間で類似性検索を実行することにより、効率的なクエリ マッチングとレコメンデーションが可能になります。基本から実践まで、Elasticsearch の開発の歴史を確認します。この記事では、各段階の特徴と進歩に焦点を当てて、Elasticsearch ベクトル検索の開発の歴史を振り返ります。歴史をガイドとして考慮すると、Elasticsearch ベクトル検索の全範囲を確立するのは誰にとっても便利です。

CNN と Transformer のハイブリッド モデルを使用してパフォーマンスを向上させる方法 CNN と Transformer のハイブリッド モデルを使用してパフォーマンスを向上させる方法 Jan 24, 2024 am 10:33 AM

畳み込みニューラル ネットワーク (CNN) と Transformer は、さまざまなタスクで優れたパフォーマンスを示した 2 つの異なる深層学習モデルです。 CNN は主に、画像分類、ターゲット検出、画像セグメンテーションなどのコンピューター ビジョン タスクに使用されます。畳み込み演算を通じて画像上の局所的な特徴を抽出し、プーリング演算を通じて特徴の次元削減と空間的不変性を実行します。対照的に、Transformer は主に、機械翻訳、テキスト分類、音声認識などの自然言語処理 (NLP) タスクに使用されます。セルフアテンション メカニズムを使用してシーケンス内の依存関係をモデル化し、従来のリカレント ニューラル ネットワークにおける逐次計算を回避します。これら 2 つのモデルは異なるタスクに使用されますが、シーケンス モデリングでは類似点があるため、

See all articles