前言
2023 哪個網(wǎng)絡(luò)詞最熱?我投“生成式人工智能”一票。過去一年大家都在擁抱大模型,所有的行業(yè)都在做自己的大模型。就像冬日里不來件美拉德色系的服飾就會跟不上時代一樣。這不前段時間接入JES,用上好久為碰的RestHighLevelClient包。心血來潮再次訪問Elasticsearch官網(wǎng),發(fā)現(xiàn)風(fēng)格又變了!很驚艷,不信你看
很久沒有上Elasticsearch官網(wǎng)。以前的Elasticsearch是以全文搜索引擎為主打的。去年還在想RediSearch會不會撼動Elasticsearch的地位?,F(xiàn)在來看它找到內(nèi)卷焦慮的方子-換個戰(zhàn)場去卷別人!所以我就很好奇看看他是如何卷的?決定一探究竟。那么今天就來看下生成式AI和Elasticsearch Relevance Engine(ESRE)最后學(xué)習(xí)下Elasticsearch作為向量數(shù)據(jù)如何使用。
一、什么是生成式AI
生成式 AI 是人工智能的一個分支,其核心是能夠生成原創(chuàng)內(nèi)容的計算機(jī)模型**。**通過利用大型語言模型、神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)的強(qiáng)大功能,生成式 AI 能夠模仿人類創(chuàng)造力生成新穎的內(nèi)容。這些模型使用大型數(shù)據(jù)集和深度學(xué)習(xí)算法進(jìn)行訓(xùn)練,從而學(xué)習(xí)數(shù)據(jù)中存在的底層結(jié)構(gòu)、關(guān)系和模式。根據(jù)用戶的輸入提示,生成新穎獨(dú)特的輸出結(jié)果,包括圖像、視頻、代碼、音樂、設(shè)計、翻譯、問題回答和文本。
流行的生成式AI有哪些
1.ChatGPT ChatGPT 是由 OpenAI 開發(fā)的一個大型語言模型,自 2022 年 11 月公開發(fā)布以來取得了巨大成功。它使用對話式聊天界面與用戶互動,并對輸出結(jié)果進(jìn)行微調(diào)。它旨在理解文本提示,并生成類似于人的回復(fù),而且它已展示出了參與對話交流、回答相關(guān)問題,甚至展現(xiàn)幽默感的能力。
據(jù)說,最初向用戶免費(fèi)提供的 ChatGPT-3 版本是根據(jù)互聯(lián)網(wǎng)上超過 45 TB 的文本數(shù)據(jù)進(jìn)行訓(xùn)練的。不久之后,Microsoft 將 GPT 的一個版本集成到了 Bing 搜索引擎中。OpenAI 的升級版、基于訂閱的 ChatGPT-4 是于 2023 年 3 月推出的。
ChatGPT 采用最先進(jìn)的轉(zhuǎn)換器架構(gòu)。GPT 是“Generative Pre-trained Transformer”(生成式預(yù)訓(xùn)練轉(zhuǎn)換器)的縮寫,轉(zhuǎn)換器架構(gòu)為自然語言處理 (NLP) 領(lǐng)域帶來了革命性的變化。
2.DALL-E 同樣來自 OpenAI 的 DALL-E 2 專注于生成圖像。DALL-E 結(jié)合了 GAN 架構(gòu)與變分自動編碼器,可基于文本提示生成高度細(xì)膩和富有想象力的視覺結(jié)果。借助 DALL-E,用戶可以描述自己心目中的圖像和風(fēng)格,模型就會生成它。與 MidJourney 和新晉加入的 Adobe Firefly 等競爭對手一樣,DALL-E 和生成式 AI 正在徹底改變圖像的創(chuàng)建和編輯方式。隨著整個行業(yè)不斷涌現(xiàn)的新興能力,視頻、動畫和特效也將發(fā)生類似的轉(zhuǎn)變。
3.Google Bard 最初是基于 Google LaMDA 系列大型語言模型的一個版本構(gòu)建而成,后來升級到更先進(jìn)的 PaLM 2,是 Google ChatGPT 的替代品。Bard 的功能與 ChatGPT 類似,可以編碼、解決數(shù)學(xué)問題、回答問題、寫作,以及提供 Google 搜索結(jié)果。
在電商行業(yè)的應(yīng)用
電子商務(wù)和零售業(yè)領(lǐng)域中的 AI:生成式 AI 可以利用購物者的購買模式推薦新產(chǎn)品,并創(chuàng)建更順暢的購物流程,從而幫助電子商務(wù)企業(yè)為購物者提供更具個性化的購買體驗。對于零售商和電子商務(wù)企業(yè)來說,無論從更直觀的瀏覽到使用聊天機(jī)器人支持的 AI 客戶服務(wù)功能,以及 AI 常見問題解答板塊,AI 都可以打造更好的用戶體驗。
金融服務(wù)領(lǐng)域中的 AI:生成式 AI 可用于市場趨勢預(yù)測、市場模式研究、投資組合優(yōu)化、欺詐保護(hù)、算法交易和個性化客戶服務(wù)。模型還可以根據(jù)歷史趨勢生成合成數(shù)據(jù),從而幫助進(jìn)行風(fēng)險分析和決策。
生成式 AI 模型的局限性
1.**領(lǐng)域知識/準(zhǔn)確性:**模型可能沒有足夠的與特定域相關(guān)的內(nèi)部知識_。_這要源于訓(xùn)練模型的數(shù)據(jù)集。為了定制 LLM 生成的數(shù)據(jù)和內(nèi)容,企業(yè)需要一種方法來向模型饋送專有數(shù)據(jù),以便模型能夠?qū)W會提供更相關(guān)、特定于業(yè)務(wù)的信息。LLM 是基于大量通用數(shù)據(jù)集訓(xùn)練的,這些數(shù)據(jù)集通常缺乏特定領(lǐng)域知識或可能過時。這可能導(dǎo)致不準(zhǔn)確的響應(yīng),包括“幻覺”,其中模型自信地生成錯誤信息。
2.**隱私和安全:**數(shù)據(jù)隱私是企業(yè)如何通過網(wǎng)絡(luò)和在組件之間使用和安全地傳遞專有數(shù)據(jù)的核心,即使在構(gòu)建創(chuàng)新的搜索體驗時也是如此。這引發(fā)了隱私和敏感數(shù)據(jù)保護(hù)問題,尤其是在處理個人或機(jī)密信息時。
3.**規(guī)模和成本:**由于數(shù)據(jù)量以及所需的計算能力和內(nèi)存,使用大型語言模型可能會讓許多企業(yè)望而卻步。然而,想要構(gòu)建自己的生成式 AI 應(yīng)用(如聊天機(jī)器人)的企業(yè)需要將 LLM 與他們的私有數(shù)據(jù)結(jié)合起來。
4.**過時:**模型在收集訓(xùn)練數(shù)據(jù)的時候就已被凍結(jié)在過去的某一時間點(diǎn)上。因此,生成式 AI 模型所創(chuàng)建內(nèi)容和數(shù)據(jù)只有在基于它們進(jìn)行訓(xùn)練時才是最新的。整合公司數(shù)據(jù)是讓 LLM 能夠提供及時結(jié)果的內(nèi)在需求。例如,如果用戶向 LLM 查詢“今天天氣怎么樣”,那么傳統(tǒng)搜索引擎可能在幾毫秒內(nèi)返回結(jié)果,而 LLM 可能需要幾秒鐘或更長時間。
5.**幻覺:**當(dāng)回答問題或進(jìn)行交互式對話時,LLM 模型可能會編造一些聽起來可信和令人信服的事實(shí),但實(shí)際上是一些不符合事實(shí)的預(yù)測。這也是為什么需要將 LLM 與具有上下文、定制的知識相結(jié)合的另一個原因,這對于讓模型在商業(yè)環(huán)境中發(fā)揮作用至關(guān)重要。
二、Elasticsearch Relevance Engine
是的ChatGPT 和 LLM 面臨很多挑戰(zhàn)。如專業(yè)領(lǐng)域數(shù)據(jù)的質(zhì)量準(zhǔn)確性,相關(guān)性數(shù)據(jù)缺乏過濾,維護(hù)和訓(xùn)練成本,安全性和性能,可解釋性等。那接下來看下Elastic的ESRE是如何幫助他們解決問題的。
ESRE 提供了多項用于創(chuàng)建高度相關(guān)的 AI 搜索應(yīng)用程序的新功能。ESRE 站在 Elastic 這個搜索領(lǐng)域的巨人肩膀之上,并基于兩年多的 Machine Learning 研發(fā)成就構(gòu)建而成。Elasticsearch Relevance Engine 將 AI 的最佳實(shí)踐與 Elastic 的文本搜索進(jìn)行了結(jié)合。ESRE 為開發(fā)人員提供了一整套成熟的檢索算法,并能夠與大型語言模型 (LLM) 集成。不僅如此,ESRE 還可通過已經(jīng)得到 Elastic 社區(qū)信任的簡單、統(tǒng)一的 API 訪問,因此世界各地的開發(fā)人員都可以立即開始使用它來提升搜索相關(guān)性。
Elasticsearch Relevance Engine 的可配置功能可用于通過以下方式幫助提高相關(guān)性:
?應(yīng)用包括 BM25f(這是混合搜索的關(guān)鍵組成部分)在內(nèi)的高級相關(guān)性排序功能
?使用 Elastic 的矢量數(shù)據(jù)庫創(chuàng)建、存儲和搜索密集嵌入
?使用各種自然語言處理 (NLP) 任務(wù)和模型處理文本
?讓開發(fā)人員在 Elastic 中管理和使用自己的轉(zhuǎn)換器模型,以適應(yīng)業(yè)務(wù)特定的上下文
?通過 API 與第三方轉(zhuǎn)換器模型(如 OpenAI 的 GPT-3 和 4)集成,以根據(jù)客戶在 Elasticsearch 部署中整合的數(shù)據(jù)存儲,檢索直觀的內(nèi)容摘要
?使用 Elastic 開箱即用型的 Learned Sparse Encoder 模型,無需訓(xùn)練或維護(hù)模型,就能實(shí)現(xiàn) ML 支持的搜索,從而在各種域提供高度相關(guān)的語義搜索
?使用倒數(shù)排序融合 (RRF) 輕松組合稀疏和密集檢索;倒數(shù)排序融合是一種混合排名方法,讓開發(fā)人員能夠自行優(yōu)化 AI 搜索引擎,以符合他們獨(dú)特的自然語言和關(guān)鍵字查詢類型的組合
?與 LangChain 等第三方工具集成,以幫助構(gòu)建復(fù)雜的數(shù)據(jù)管道和生成式 AI 應(yīng)用程序
三、Elasticsearch 向量庫適合用在哪
Elasticsearch 支持的信息檢索方法:
?詞袋模型和 BM25 算法: 用于傳統(tǒng)的文本檢索。
?KNN(k-nearest neighbor k-近鄰)和 ANN(近似最近鄰)向量搜索: 用于基于相似度的向量檢索。目前8.11版本中還是使用KNN檢索。
Elasticsearch 如何緩解 LLM 問題:
?提供數(shù)據(jù)上下文并與 ChatGPT 或其他 LLM 集成: Elasticsearch 可以存儲和管理大量數(shù)據(jù),并提供豐富的上下文信息,幫助 LLM 理解查詢意圖,生成更準(zhǔn)確的結(jié)果。
?支持自帶模型(任何第三方模型): Elasticsearch 可以接入各種預(yù)訓(xùn)練語言模型,包括 ChatGPT 和其他 LLM,為用戶提供更靈活的選擇。
?內(nèi)置 Elastic Learned Sparse Encoder 模型: 這個模型可以對文本進(jìn)行高效的向量化表示,方便進(jìn)行向量搜索和分析。
Elasticsearch 作為向量數(shù)據(jù)庫的優(yōu)勢:
?高效的混合檢索: Elasticsearch 可以同時進(jìn)行文本檢索和向量檢索,滿足多種應(yīng)用場景。
?海量數(shù)據(jù)存儲: Elasticsearch 可以存儲和管理大量文本和向量數(shù)據(jù),為 LLM 提供豐富的數(shù)據(jù)資源。
?高性能查詢: Elasticsearch 的查詢速度非???,可以滿足實(shí)時檢索的需求。
Elasticsearch和LLM結(jié)合有三種方式:
**方式一:**Elasticsearch和LLM
使用 Elasticsearch 作為向量存儲并與 LLM 集成
用戶將問題數(shù)據(jù)和生成的嵌入向量一起導(dǎo)入 Elasticsearch。Elasticsearch 會存儲和索引這些數(shù)據(jù)(用戶問題的上下文),以便進(jìn)行高效的檢索。當(dāng)用戶提出問題時,用戶可以使用 Elasticsearch 的近似最近鄰 (KNN) 搜索功能,根據(jù)用戶的查詢在數(shù)據(jù)集中找到最相似的嵌入向量。這一步驟可以快速找到與用戶問題相關(guān)的潛在答案。最后Elasticsearch 將搜索結(jié)果(包含相關(guān)數(shù)據(jù)的上下文信息)傳遞給 ChatGPT 或其他 LLM。LLM 會利用這些上下文信息,生成更加準(zhǔn)確、流暢和自然的自然語言回答,并返回給用戶。
方式二:Elasticsearch Relevance Engine 和LLM
Elasticsearch Relevance Engine (ESRE) 使 BYOLLM 成為現(xiàn)實(shí)。此功能以前只能通過機(jī)器學(xué)習(xí)訪問,現(xiàn)在已經(jīng)可以輕松使用。 從 8.8 版開始,可以使用熟悉的搜索 API 將 LLM 模型攝取和查詢到 Elasticsearch 中,就像任何其他數(shù)據(jù)一樣。重要的是他使用RRF進(jìn)行混合檢索,將檢索結(jié)果提高了一個水平,同事降低了復(fù)雜性和運(yùn)營成本。
方式三:使用內(nèi)置的稀疏編碼模型
Elastic Learned Sparse Encoder 是 Elastic 開箱即用的語言模型,其性能優(yōu)于 SPLADE(SParse Lexical AnD Expansion Model),而 SPLADE 本身就是最先進(jìn)的模型。Elastic Learned Sparse Encoder 解決了詞匯不匹配。就像其他搜索端點(diǎn)一樣,可以通過text_expansion查詢訪問 Elastic Learned Sparse Encoder。Elastic Learned Sparse Encoder 使我們的用戶只需點(diǎn)擊一下即可開始最先進(jìn)的生成式 AI 搜索并立即產(chǎn)生結(jié)果。Elastic Learned Sparse Encoder 也是 Elastic 的一項商業(yè)功能。
四、Elasticsearch 向量檢索
ES作為向量數(shù)據(jù)庫提供三種能力:1.存儲嵌入 2.高效搜索相鄰數(shù)據(jù) 3.將文本嵌入到向量表示。
首先將待檢索的數(shù)據(jù)轉(zhuǎn)換成向量存儲。其表現(xiàn)形式為128維的float數(shù)組。之后將數(shù)組索引到ES的dense_vector類型的字段中。最后基于ANN或KNN進(jìn)行檢索。如下圖
五、Elasticsearch vector search
我們來看一個ES中創(chuàng)建和查詢向量數(shù)據(jù)的示例
第一步我們創(chuàng)建一個向量索引image-index
PUT /image-index
{
"mappings": {
"properties": {
"image-vector": {
"type": "dense_vector",
"dims": 3,
"index": true,
"similarity": "l2_norm"
},
"title-vector": {
"type": "dense_vector",
"dims": 5,
"index": true,
"similarity": "l2_norm"
},
"title": {
"type": "text"
},
"file-type": {
"type": "keyword"
}
}
}
}
第二步向索引image-index中批量插入數(shù)據(jù)
POST /image-index/_bulk?refresh=true
{ "index": { "_id": "1" } }
{ "image-vector": [1, 5, -20], "title-vector": [12, 50, -10, 0, 1], "title": "moose family", "file-type": "jpg" }
{ "index": { "_id": "2" } }
{ "image-vector": [42, 8, -15], "title-vector": [25, 1, 4, -12, 2], "title": "alpine lake", "file-type": "png" }
{ "index": { "_id": "3" } }
{ "image-vector": [15, 11, 23], "title-vector": [1, 5, 25, 50, 20], "title": "full moon", "file-type": "jpg" }
最后通過KNN api檢索數(shù)據(jù)
POST /image-index/_search
{
"knn": {
"field": "image-vector",
"query_vector": [-5, 9, -12],
"k": 10,
"num_candidates": 100
},
"fields": [ "title", "file-type" ]
}
查詢結(jié)果如下
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": 0.008547009,
"hits": [
{
"_index": "image-index",
"_id": "1",
"_score": 0.008547009,
"_source": {
"image-vector": [
1,
5,
-20
],
"title-vector": [
12,
50,
-10,
0,
1
],
"title": "moose family",
"file-type": "jpg"
},
"fields": {
"file-type": [
"jpg"
],
"title": [
"moose family"
]
}
},
{
"_index": "image-index",
"_id": "3",
"_score": 0.00061349693,
"_source": {
"image-vector": [
15,
11,
23
],
"title-vector": [
1,
5,
25,
50,
20
],
"title": "full moon",
"file-type": "jpg"
},
"fields": {
"file-type": [
"jpg"
],
"title": [
"full moon"
]
}
},
{
"_index": "image-index",
"_id": "2",
"_score": 0.00045045046,
"_source": {
"image-vector": [
42,
8,
-15
],
"title-vector": [
25,
1,
4,
-12,
2
],
"title": "alpine lake",
"file-type": "png"
},
"fields": {
"file-type": [
"png"
],
"title": [
"alpine lake"
]
}
}
]
}
}
以上是作為向量數(shù)據(jù)庫的實(shí)例。ES是可以作為AI查詢。支持AI查詢的客戶端包括JavaScript,Python,Go,PHP,Ruby(沒有java)。有興趣的可以直接去github上去試跑( elasticsearch-labs )
六、總結(jié)
Elasticsearch確實(shí)卷。它的架構(gòu)已經(jīng)不是以前,為了實(shí)現(xiàn)更快的查詢而迭代。2024年Elasticsearch提出了無服務(wù)架構(gòu)的理念。將存儲和計算完全分離開。無服務(wù)器架構(gòu)標(biāo)志著 Elasticsearch 的重大重組。它的構(gòu)建是為了利用最新的云原生服務(wù),以輕松的管理提供優(yōu)化的產(chǎn)品體驗。它不僅具備數(shù)據(jù)湖的存儲能力,還擁有與 Elasticsearch 相媲美的快速搜索性能,同時通過無需人工干預(yù)的集群管理和擴(kuò)展,實(shí)現(xiàn)了操作的簡便性。
七、名詞解釋
RRF:RRF 是 Elasticsearch 中新推出的一種混合搜索技術(shù),可以將來自不同搜索方法的結(jié)果進(jìn)行融合和排序,以提供更全面、更準(zhǔn)確的搜索結(jié)果。
ANN:ANN 代表人工神經(jīng)網(wǎng)絡(luò) (Artificial Neural Networks)。人工神經(jīng)網(wǎng)絡(luò)是一種計算機(jī)科學(xué)和人工智能領(lǐng)域的算法模型,它模仿人類大腦的神經(jīng)網(wǎng)絡(luò)。
KNN:代表 k 近鄰。它是一種機(jī)器學(xué)習(xí)算法,用于在數(shù)據(jù)集中找到與給定查詢最相似的 k 個點(diǎn)。KNN 算法可用于各種任務(wù),包括分類、回歸和聚類。
作者:京東保險 管順利文章來源:http://www.zghlxwxcb.cn/news/detail-781193.html
來源:京東云開發(fā)者社區(qū) 轉(zhuǎn)載請注明來源文章來源地址http://www.zghlxwxcb.cn/news/detail-781193.html
到了這里,關(guān)于重新認(rèn)識Elasticsearch-一體化矢量搜索引擎的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!