기초부터 실습까지 Elasticsearch 벡터 검색의 개발 이력을 검토해보세요.
1. 소개
벡터 검색은 현대 검색 및 추천 시스템의 핵심 구성 요소가 되었습니다.
복잡한 객체(예: 텍스트, 이미지, 사운드)를 수치 벡터로 변환하고 다차원 공간에서 유사성 검색을 수행하여 효율적인 쿼리 매칭 및 추천을 가능하게 합니다.
기본부터 실습까지 Elasticsearch 벡터 검색의 개발 내역을 검토합니다._elasticsearch
Elasticsearch는 널리 사용되는 오픈 소스 검색 엔진으로, 벡터 검색 분야의 개발은 항상 많은 관심을 받아왔습니다. 본 글에서는 각 단계의 특징과 진행 상황을 중심으로 Elasticsearch 벡터 검색의 개발 역사를 검토해 보겠습니다. 기록을 가이드로 활용하면 모든 사람이 Elasticsearch 벡터 검색을 완전히 이해하는 데 도움이 됩니다.
2. 초기 시도: 간단한 벡터 검색 도입
Elasticsearch는 처음에는 벡터 검색을 위해 특별히 설계되지 않았습니다. 그러나 머신러닝과 인공지능의 등장으로 고차원 벡터공간에 대한 질의 수요가 점차 늘어나고 있다.
Elasticsearch 버전 5.x에서 Elastic 열성팬들은 플러그인과 기본 수학 연산을 통해 간단한 벡터 검색 기능을 구현하려고 시도하기 시작했습니다. 예를 들어, elasticsearch-벡터-스코어링 및 fast-elasticsearch-벡터-스코어링과 같은 일부 초기 플러그인은 이러한 요구 사항을 충족하도록 설계되었습니다.
https://www.php.cn/link/7a677bb4477ae2dd371add568dd19e23
https://www.php.cn/link/7684e5225ab986f6b32ed950eec5621d
벡터 검색은 주로 기본 유사성 쿼리에 사용됩니다. 텍스트 유사성 계산으로. 기능은 상대적으로 제한되어 있지만 후속 개발을 위한 기반을 마련합니다.
자세한 설명: 머신러닝 기능에 관해서는 Elasticsearch 버전 변경에 관심이 있으신 분들은 당시 6.X 버전이 출시되어 매우 흥미로웠던 기억이 납니다. 그러나 오픈소스가 아닌 기능으로 인해 실제 국내 시청자는 아직 상대적으로 적습니다.
3. 공식 지원: 추가 개발
Elasticsearch 버전 7.0에는density_Vector 유형 등을 통해 벡터 필드에 대한 지원이 공식적으로 추가되었습니다. 이는 Elasticsearch가 공식적으로 벡터 검색 분야에 진출했으며 더 이상 플러그인에만 의존하지 않는다는 것을 의미합니다.
dense_Vector 가장 빠른 출시 시간: 2018년 12월 13일, 버전 7.6이 GA로 표시됩니다.
https://www.php.cn/link/648f4baa45889f9c5f4f7add35862841
https://www.php.cn/link/ac10ff1941c540cd87c107330996f4f6
관련 Dense_Vector 유형의 사용, 권장 자료: 고차원 벡터 검색: Elasticsearch 8.X에서 밀도_벡터를 사용하는 실제적인 탐색입니다.
이 단계의 주요 과제는 기존의 역 인덱스 구조에서 벡터 검색을 효과적으로 지원하는 방법입니다. 기존 전체 텍스트 검색 기능과 결합하면 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 向量检索发展史_Elastic_02
5.深度学习集成与未来展望
大模型时代,向量检索和多模态搜索成为 “兵家” 必争之地。
多模态检索是一种综合各种数据模态(如文本、图像、音频、视频等)的检索技术。换句话说,它不仅仅是根据文字进行搜索,还可以根据图像、声音或其他模态的输入来搜索相关内容。
为了更通俗地理解多模态检索,我们可以通过以下比喻和示例来加深认识:想象你走进一个巨大的图书馆,这里不仅有书籍,还有各种图片、录音和视频。你可以向图书馆员展示一张照片,她会为你找到与这张照片相关的所有书籍、音频和视频。或者,你可以哼一段旋律,图书馆员能找到相关的资料,或者提供类似的歌曲或视频。这就是多模态检索的魔力!
随着深度学习技术的不断发展和应用,Elasticsearch 已开始探索将深度学习模型直接集成到向量检索过程中。这不仅允许更复杂、更准确的相似度计算,还开辟了新的应用领域,例如基于图像或声音的搜索。尤其在 Elasticsearch 的 8.x 版本,这一方向得到了显著的推进。
5.1 向量化是前提
如下图所示,先从左往右看是写入,图像、文档、音频转化为向量特征表示,在 Elasticsearch 中通过 dense_vector 类型存储。
从右往左看是检索,先将检索语句转化为向量特征表示,然后借助 K 近邻检索算法(在 Elasticsearch 中借助 Knn search 实现),获取相似的结果。
看中间,Results 部分就是向量检索的结果。
综上,向量检索打破了传统倒排索引仅支持文本检索的缺陷,可以扩展支持文本、语音、图像、视频多种模态。
图片来自:Elasticsearch 官方文档
相信你到这里,应该理解了向量检索和多模态。没有向量化的这个过程,多模态检索无从谈起。
5.2 模型是核心
深度学习模型集成总共可分为三步:
第一步:模型导入和管理:Elasticsearch 8.x 支持导入预训练的深度学习模型,并提供相应的模型管理工具,方便模型的部署和更新。第二步:向量表示与转换:通过深度学习模型,可以将非结构化数据如图像和声音转换为向量表示,从而进行有效的检索。第三步:自定义相似度计算:8.x 版本提供了基于深度学习模型的自定义相似度计算接口,允许用户根据实际需求开发和部署专门的相似度计算方法。
关于深度学习,可以是自训练模型,也可以是第三方模型库中的模型,举例:咱们图搜图案例中就是用的 HuggingFace 里的:clip-ViT-B-32-multilingual-v1 模型。
从基础到实践,回顾Elasticsearch 向量检索发展史_Elastic_04
Elasticsearch 支持的第三方模型列表:
包括如下的 Hugging Face 模型库也都是支持的。
从基础到实践,回顾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 向量检索能力的有力补充,促使它在搜索和分析领域的地位更加牢固,同时也为未来的发展提供了广阔的空间。
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











BERT는 Google이 2018년에 제안한 사전 훈련된 딥러닝 언어 모델입니다. 전체 이름은 BidirectionEncoderRepresentationsfromTransformers이며 Transformer 아키텍처를 기반으로 하며 양방향 인코딩의 특성을 가지고 있습니다. 기존 단방향 코딩 모델과 비교하여 BERT는 텍스트를 처리할 때 상황 정보를 동시에 고려할 수 있으므로 자연어 처리 작업에서 잘 수행됩니다. 양방향성을 통해 BERT는 문장의 의미 관계를 더 잘 이해할 수 있어 모델의 표현 능력이 향상됩니다. 사전 훈련 및 미세 조정 방법을 통해 BERT는 감정 분석, 이름 지정 등 다양한 자연어 처리 작업에 사용될 수 있습니다.

활성화 기능은 딥 러닝에서 중요한 역할을 하며 신경망에 비선형 특성을 도입하여 네트워크가 복잡한 입력-출력 관계를 더 잘 학습하고 시뮬레이션할 수 있도록 합니다. 활성화 함수의 올바른 선택과 사용은 신경망의 성능과 훈련 결과에 중요한 영향을 미칩니다. 이 기사에서는 일반적으로 사용되는 네 가지 활성화 함수인 Sigmoid, Tanh, ReLU 및 Softmax를 소개부터 시작하여 사용 시나리오, 장점, 단점과 최적화 솔루션은 활성화 기능에 대한 포괄적인 이해를 제공하기 위해 논의됩니다. 1. 시그모이드 함수 시그모이드 함수 공식 소개: 시그모이드 함수는 실수를 0과 1 사이에 매핑할 수 있는 일반적으로 사용되는 비선형 함수입니다. 통일하기 위해 자주 사용됩니다.

이전에 작성했던 오늘은 딥 러닝 기술이 복잡한 환경에서 비전 기반 SLAM(동시 위치 파악 및 매핑)의 성능을 향상할 수 있는 방법에 대해 논의합니다. 심층 특징 추출과 깊이 일치 방법을 결합하여 저조도 조건, 동적 조명, 질감이 약한 영역 및 심한 지터와 같은 까다로운 시나리오에서 적응을 향상하도록 설계된 다목적 하이브리드 시각적 SLAM 시스템을 소개합니다. 우리 시스템은 확장 단안, 스테레오, 단안 관성 및 스테레오 관성 구성을 포함한 여러 모드를 지원합니다. 또한 시각적 SLAM을 딥러닝 방법과 결합하여 다른 연구에 영감을 주는 방법도 분석합니다. 공개 데이터 세트 및 자체 샘플링 데이터에 대한 광범위한 실험을 통해 위치 정확도 및 추적 견고성 측면에서 SL-SLAM의 우수성을 입증합니다.

잠재 공간 임베딩(LatentSpaceEmbedding)은 고차원 데이터를 저차원 공간에 매핑하는 프로세스입니다. 기계 학습 및 딥 러닝 분야에서 잠재 공간 임베딩은 일반적으로 고차원 입력 데이터를 저차원 벡터 표현 세트로 매핑하는 신경망 모델입니다. 이 벡터 세트를 "잠재 벡터" 또는 "잠재 벡터"라고 합니다. 인코딩". 잠재 공간 임베딩의 목적은 데이터의 중요한 특징을 포착하고 이를 보다 간결하고 이해하기 쉬운 형식으로 표현하는 것입니다. 잠재 공간 임베딩을 통해 저차원 공간에서 데이터를 시각화, 분류, 클러스터링하는 등의 작업을 수행하여 데이터를 더 잘 이해하고 활용할 수 있습니다. 잠재 공간 임베딩은 이미지 생성, 특징 추출, 차원 축소 등과 같은 다양한 분야에서 폭넓게 응용됩니다. 잠재공간 임베딩이 핵심

오늘날 급속한 기술 변화의 물결 속에서 인공지능(AI), 머신러닝(ML), 딥러닝(DL)은 정보기술의 새로운 물결을 이끄는 밝은 별과도 같습니다. 이 세 단어는 다양한 최첨단 토론과 실제 적용에 자주 등장하지만, 이 분야를 처음 접하는 많은 탐험가들에게는 그 구체적인 의미와 내부 연관성이 여전히 수수께끼에 싸여 있을 수 있습니다. 그럼 먼저 이 사진을 보시죠. 딥러닝, 머신러닝, 인공지능 사이에는 밀접한 상관관계와 진보적인 관계가 있음을 알 수 있습니다. 딥러닝은 머신러닝의 특정 분야이며, 머신러닝은

2006년 딥러닝이라는 개념이 제안된 지 거의 20년이 지났습니다. 딥러닝은 인공지능 분야의 혁명으로 많은 영향력 있는 알고리즘을 탄생시켰습니다. 그렇다면 딥러닝을 위한 상위 10가지 알고리즘은 무엇이라고 생각하시나요? 다음은 제가 생각하는 딥 러닝을 위한 최고의 알고리즘입니다. 이들은 모두 혁신, 애플리케이션 가치 및 영향력 측면에서 중요한 위치를 차지하고 있습니다. 1. 심층 신경망(DNN) 배경: 다층 퍼셉트론이라고도 불리는 심층 신경망(DNN)은 가장 일반적인 딥 러닝 알고리즘으로 처음 발명되었을 때 최근까지 컴퓨팅 성능 병목 현상으로 인해 의문을 제기했습니다. 20년, 컴퓨팅 파워, 데이터의 폭발적인 증가로 돌파구가 찾아왔습니다. DNN은 여러 개의 숨겨진 레이어를 포함하는 신경망 모델입니다. 이 모델에서 각 레이어는 입력을 다음 레이어로 전달하고

CNN(Convolutional Neural Network)과 Transformer는 다양한 작업에서 뛰어난 성능을 보여준 두 가지 딥 러닝 모델입니다. CNN은 주로 이미지 분류, 타겟 감지, 이미지 분할과 같은 컴퓨터 비전 작업에 사용됩니다. 컨볼루션 연산을 통해 이미지의 국소적 특징을 추출하고, 풀링 연산을 통해 특징 차원 축소 및 공간 불변성을 수행합니다. 반면 Transformer는 기계 번역, 텍스트 분류, 음성 인식 등 자연어 처리(NLP) 작업에 주로 사용됩니다. 이는 self-attention 메커니즘을 사용하여 시퀀스의 종속성을 모델링하고 기존 순환 신경망의 순차적 계산을 피합니다. 이 두 모델은 서로 다른 작업에 사용되지만 시퀀스 모델링에는 유사점이 있으므로

RMSprop은 신경망의 가중치를 업데이트하는 데 널리 사용되는 최적화 프로그램입니다. 이는 Geoffrey Hinton et al.이 2012년에 제안했으며 Adam 최적화 프로그램의 전신입니다. RMSprop 최적화 프로그램의 출현은 주로 SGD 경사하강법 알고리즘에서 발생하는 경사 소멸 및 경사 폭발과 같은 일부 문제를 해결하기 위한 것입니다. RMSprop 옵티마이저를 사용하면 학습률을 효과적으로 조정하고 가중치를 적응적으로 업데이트하여 딥러닝 모델의 훈련 효과를 향상시킬 수 있습니다. RMSprop 최적화 프로그램의 핵심 아이디어는 서로 다른 시간 단계의 기울기가 가중치 업데이트에 서로 다른 영향을 미치도록 기울기의 가중 평균을 수행하는 것입니다. 특히 RMSprop은 각 매개변수의 제곱을 계산합니다.
