騰訊云 ES:一站式 RAG 方案,開啟智能搜索新時代
在大型語言模型(LLM)引領(lǐng)的革命浪潮中,搜索與大模型的緊密結(jié)合已成為推動知識進(jìn)步的關(guān)鍵要素。作為開源搜索引擎排名第一的 Elasticsearch(ES),結(jié)合沉淀多年的文本搜索能力和強(qiáng)大的向量檢索能力實現(xiàn)混合搜索,使搜索變得更準(zhǔn)、更全、更智能。騰訊云 ES 多年來持續(xù)對開源 ES 的性能、成本、穩(wěn)定性以及分布式架構(gòu)進(jìn)行深度增強(qiáng)優(yōu)化,并在海量規(guī)模的云業(yè)務(wù)中接受考驗。騰訊云基于 ES 實現(xiàn)了一站式 RAG 解決方案,具備了 RAG 技術(shù)規(guī)?;涞啬芰?。本次分享將深入探討騰訊云 ES 在搜索領(lǐng)域的最新探索,詳細(xì)解析騰訊云 ES 的一站式 RAG 方案,并介紹圍繞該方案架構(gòu)落地所進(jìn)行的一系列內(nèi)核性能和穩(wěn)定性增強(qiáng)優(yōu)化措施。
一、生活處處有搜索
1. 生活中的搜索

搜索技術(shù)與 RAG 緊密相連,因此在深入討論 RAG 之前,讓我們先來回顧一下生活中的搜索場景。在我們的日常生活中,搜索無處不在,包括網(wǎng)站目錄、視頻搜索、音頻搜索引擎等多種類型。
2. 搜索技術(shù)的演進(jìn)

現(xiàn)在,讓我們來審視一下搜索技術(shù)的發(fā)展軌跡?;ヂ?lián)網(wǎng)早期的信息量較少,簡單的分類整理和人工查找即可滿足需求。然而,隨著互聯(lián)網(wǎng)信息的爆炸式增長,文本檢索技術(shù)應(yīng)運(yùn)而生,其核心是基于倒排索引的方法。這一技術(shù)能夠高效處理海量數(shù)據(jù)(如 PB 級數(shù)據(jù)),進(jìn)行精準(zhǔn)的文本檢索。然而,文本檢索的缺點在于缺乏語義理解能力。
為彌補(bǔ)這一不足,向量檢索技術(shù)開始發(fā)展。向量檢索通過提取對象特征,將其表示為向量,利用這些向量實現(xiàn)語義層面的搜索。近年來,隨著大語言模型(LLM)和神經(jīng)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,我們可以借助大模型對海量知識進(jìn)行搜索,并進(jìn)一步生成總結(jié)性答案。這不僅拓展了搜索的深度與廣度,也開啟了生成式搜索的新時代。
3. 業(yè)界趨勢:生成式搜索

讓我們比較一下傳統(tǒng)搜索與生成式搜索的區(qū)別。傳統(tǒng)搜索的核心工作機(jī)制是通過爬蟲抓取網(wǎng)頁,并將這些網(wǎng)頁按關(guān)鍵詞進(jìn)行排序展示。用戶在需要獲取知識時,必須逐一閱讀和分析這些網(wǎng)頁,最終歸納出所需的信息。這種模式雖然能夠提供豐富的數(shù)據(jù)來源,但學(xué)習(xí)效率較低,耗費(fèi)大量時間和精力。
相比之下,生成式搜索依托大模型的強(qiáng)大總結(jié)能力,能夠?qū)λ阉鞯降闹R進(jìn)行快速歸納整理,直接生成結(jié)構(gòu)化的答案或總結(jié)內(nèi)容。這種方式顯著提高了學(xué)習(xí)效率,因此成為當(dāng)前非常主流的學(xué)習(xí)方式。然而,生成式搜索也面臨一些問題,我們將在后續(xù)章節(jié)中展開討論。
二、初識檢索模型
接下來,讓我們一同回顧檢索模型的發(fā)展歷程。
1. 分詞算法與倒排索引

首先來了解兩項關(guān)鍵技術(shù):分詞算法和倒排索引。分詞技術(shù)的核心是將連續(xù)的文本切割成單獨(dú)的單詞或詞組。目前,分詞技術(shù)主要分為三個類別:
- 基于詞典的分詞算法:這類算法依賴于預(yù)先定義的詞典,通過匹配詞典中的詞條來識別和分割文本中的單詞。
 - 基于概率的分詞算法:這種算法不僅僅依賴詞典,還結(jié)合了統(tǒng)計概率方法,以確定文本中單詞的分界。
 - 基于機(jī)器學(xué)習(xí)的分詞算法:這類算法使用機(jī)器學(xué)習(xí)技術(shù),通過訓(xùn)練數(shù)據(jù)學(xué)習(xí)分詞規(guī)則,以實現(xiàn)更準(zhǔn)確的文本分割。
 
完成分詞后,我們可以構(gòu)建一個從單詞到文本的映射關(guān)系,這被稱為倒排索引。倒排索引是一種索引結(jié)構(gòu),它允許我們快速根據(jù)關(guān)鍵詞定位到包含這些關(guān)鍵詞的文檔,從而實現(xiàn)對海量數(shù)據(jù)的高效檢索。這種索引機(jī)制是現(xiàn)代搜索引擎能夠快速響應(yīng)用戶查詢的關(guān)鍵技術(shù)之一。
2. 經(jīng)典檢索模型

接下來介紹經(jīng)典的檢索模型。在此列舉四種最基礎(chǔ)的模型,首先是布爾檢索模型。這種模型基于布爾邏輯來組合關(guān)鍵詞,其返回結(jié)果是滿足特定布爾表達(dá)式的文檔集合。布爾檢索模型的優(yōu)點在于結(jié)構(gòu)簡單且查詢精確,但同時也存在一些缺點,如缺乏靈活性,不提供結(jié)果排序功能,且對用戶的查詢能力要求較高,需要用戶能夠準(zhǔn)確表達(dá)他們的查詢需求。
繼布爾檢索模型之后,概率空間模型應(yīng)運(yùn)而生。概率空間模型基于概率論,尤其是貝葉斯理論,它通過利用文檔集合中的統(tǒng)計信息來估算文檔滿足用戶查詢的概率。這種模型的優(yōu)點在于,它提供了概率解釋,可以根據(jù)文檔與查詢之間的相關(guān)性概率進(jìn)行排序。然而,它也存在一些缺點,包括參數(shù)選擇和模型調(diào)整過程較為復(fù)雜,且在面對缺乏足夠統(tǒng)計信息的小型文檔集合時,其性能可能不盡如人意。
接下來,詳細(xì)介紹 TF-IDF 權(quán)重模型和向量空間模型。TF-IDF 模型主要基于詞頻(Term Frequency)和逆文檔頻率(Inverse Document Frequency)來評估一個詞在文檔中的重要性。這種技術(shù)目前被廣泛應(yīng)用于文檔檢索和文本挖掘領(lǐng)域。盡管其核心仍然是基于關(guān)鍵詞的檢索,但它的優(yōu)勢在于能夠評估詞語在文檔集合中的重要性。
向量空間模型則基于向量檢索,它將文本轉(zhuǎn)換為向量空間中的點,通過計算向量之間的距離或相似度來進(jìn)行檢索。這種模型的主要優(yōu)勢在于能夠進(jìn)行語義檢索,因為它考慮了詞項之間的相對關(guān)系和上下文。然而,它的缺點在于高維空間可能導(dǎo)致計算成本較高。此外,由于我們目前描述向量的特征維度有限,最多達(dá)到4096維,因此結(jié)果的準(zhǔn)確性可能不如基于文本的檢索方法高。這意味著在處理高維數(shù)據(jù)時,向量空間模型可能會遇到性能瓶頸,且在準(zhǔn)確性上可能有所妥協(xié)。
3. 全文檢索

接下來介紹的是全文檢索。全文檢索結(jié)合了前面介紹的概率空間模型和 TF-IDF 模型,通過分詞、倒排索引以及貝葉斯算法等技術(shù)來統(tǒng)計詞語與文檔的相關(guān)性,進(jìn)而找到包含特定關(guān)鍵詞或短語的文檔。以 TF-IDF 為例,TF 指的是詞條在文檔中出現(xiàn)的頻率,即詞頻;IDF 則是詞條在所有文檔中出現(xiàn)的逆頻率,它是通過取詞條出現(xiàn)次數(shù)的倒數(shù)再取對數(shù)得到的??傮w而言,一個詞語在一篇文章中出現(xiàn)的次數(shù)越多,同時在所有文檔中出現(xiàn)的頻率越低,它就越能代表該文檔。這種檢索方式相較于傳統(tǒng)的關(guān)鍵詞文本檢索,具有評分和評估相關(guān)性的功能,因此其精準(zhǔn)性得到了顯著提升,并且能夠應(yīng)對關(guān)鍵詞的缺失。然而,它的局限性在于仍然基于文本,缺乏較好的語義理解能力。例如,“計算機(jī)”和“電腦”在語義上是相同的,但在全文檢索中仍然被視為兩個獨(dú)立的詞。
4. 向量檢索

向量檢索,也稱為近似檢索或語義檢索,它通過將文檔和查詢表示為向量空間中的向量,并利用這些向量之間的相似度來檢索出與查詢最相關(guān)的文檔。這種檢索方式的優(yōu)點在于其良好的語義理解能力。然而,由于描述向量時特征維度的限制,其精準(zhǔn)性可能存在不足。此外,向量檢索無法有效應(yīng)對關(guān)鍵詞檢索,且難以表達(dá)文檔的額外屬性。這些局限性表明,盡管向量檢索在語義層面有所突破,但在精確性和功能性方面仍有改進(jìn)的空間。
三、從 Lucene 到 ES
接下來,將進(jìn)入今天的主題——Elasticsearch(ES)。

首先來介紹一下 Lucene。Lucene 是 Apache 軟件基金會下的一個開源全文檢索引擎工具包。它為軟件開發(fā)人員提供了一個簡單易用的類庫,以便在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能。
Lucene 基于倒排索引,提供了一系列的文本處理和搜索功能,包括分詞、停用詞處理、評分排序、高亮顯示以及近實時搜索等。此外,Lucene 還提供了豐富的查詢方式,例如范圍查詢、前綴匹配、模糊匹配和布爾查詢等,這些功能使得它在全文檢索領(lǐng)域非常強(qiáng)大和靈活。通過這些高級搜索特性,Lucene 能夠滿足各種復(fù)雜的搜索需求,為用戶提供快速而準(zhǔn)確的搜索結(jié)果?;旧显跇I(yè)界只要提全文檢索,Lucene 就是第一選擇。

盡管 Lucene 是一個非常強(qiáng)大的全文檢索庫,但它是為單機(jī)環(huán)境設(shè)計的。為了解決大規(guī)模數(shù)據(jù)和分布式環(huán)境的需求,Elasticsearch 應(yīng)運(yùn)而生。Elasticsearch(簡稱 ES)是一個開源的、基于 Lucene 的分布式全文檢索和數(shù)據(jù)分析引擎。它能夠處理海量數(shù)據(jù),并提供實時的檢索和統(tǒng)計分析功能。Elasticsearch 的設(shè)計使其成為處理大數(shù)據(jù)場景的理想選擇,尤其是在需要快速響應(yīng)和高吞吐量的環(huán)境中。
Elasticsearch 的社區(qū)非常龐大,全球有超過 10 萬的社區(qū)參與者,其中在中國就有 1 萬。這個數(shù)字體現(xiàn)了 Elasticsearch 在全球范圍內(nèi)的廣泛受歡迎和應(yīng)用。此外,Elasticsearch 的下載量達(dá)到了 3.5 億次,在全球搜索引擎的排名中,Elasticsearch 位居第一,在全球數(shù)據(jù)庫的排名中位列第七。這些排名數(shù)據(jù)源自 DB-Engines,這是一個廣受認(rèn)可的數(shù)據(jù)庫管理系統(tǒng)排名網(wǎng)站。其排名依據(jù)涵蓋多個維度,包括社區(qū)活躍度、下載量、專業(yè)出版物中的提及次數(shù)等,從而為數(shù)據(jù)庫管理系統(tǒng)的流行度和影響力提供了權(quán)威的參考。Elasticsearch 在這些排名中的卓越表現(xiàn),進(jìn)一步彰顯了其在全文檢索和數(shù)據(jù)分析領(lǐng)域的重要地位。
當(dāng)前 Elasticsearch 提供了一個 ELK 套件。Elasticsearch 作為 ELK 棧的中心,主要負(fù)責(zé)數(shù)據(jù)的存儲和分析。ELK 棧包括以下三個主要組件:
- Elasticsearch:負(fù)責(zé)存儲、搜索和分析數(shù)據(jù)。它是一個強(qiáng)大的搜索引擎,能夠處理大量數(shù)據(jù),并提供快速的數(shù)據(jù)檢索能力。
 - Kibana:負(fù)責(zé)數(shù)據(jù)的可視化展示。Kibana 允許用戶通過圖表、地圖和儀表板等形式直觀地查看和理解 Elasticsearch 中的數(shù)據(jù)。
 - Logstash:負(fù)責(zé)數(shù)據(jù)采集和處理。Logstash 是一個服務(wù)器端數(shù)據(jù)處理管道,可以同時從多個來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到 Elasticsearch。
 
有時,ELK 棧也會包括 Beats,這是一個輕量級的數(shù)據(jù)采集器,用于向 Elasticsearch 或 Logstash 發(fā)送數(shù)據(jù)。Beats 有多種類型,每種類型都針對特定的數(shù)據(jù)類型或使用場景進(jìn)行了優(yōu)化。
ELK 棧提供了一個完整的解決方案,從數(shù)據(jù)采集、處理到存儲和可視化,使得用戶能夠輕松地從大量數(shù)據(jù)中提取有價值的信息。這個棧因其靈活性、可擴(kuò)展性和易用性而受到許多企業(yè)和開發(fā)者的青睞。
Elasticsearch 一直是日志場景中的首選解決方案,因為它能夠提供高性能的海量數(shù)據(jù)全文檢索。同時,Elasticsearch 提供了商業(yè)套件 X-Pack,該套件增強(qiáng)了 Elasticsearch 的功能,包括數(shù)據(jù)安全、告警、監(jiān)控、報表、圖查詢以及機(jī)器學(xué)習(xí)等高級功能。這些功能使得 Elasticsearch 不僅能夠處理和檢索數(shù)據(jù),還能夠提供更深層次的數(shù)據(jù)洞察和安全保障。
四、大模型與 RAG
接下來探討大模型與 RAG(Retrieval Augmented Generation)。

大模型主要分為兩類:
- 決策式大模型:這類模型主要根據(jù)數(shù)據(jù)輸入進(jìn)行決策,其規(guī)模相對較小,主要應(yīng)用于人臉識別、推薦系統(tǒng)、風(fēng)控系統(tǒng)等場景。它們學(xué)習(xí)數(shù)據(jù)中的條件概率分布,用于分類、預(yù)測和決策任務(wù)。
 - 生成式大模型:這類模型學(xué)習(xí)數(shù)據(jù)中的聯(lián)合概率分布,用于生成新的數(shù)據(jù)實例,如文本、圖像或音頻。它們通常具有較大的規(guī)模,因為生成新內(nèi)容需要深入洞察數(shù)據(jù)。生成式大模型通常擁有上億甚至上萬億的參數(shù),主要應(yīng)用于智能問答、智能客服、智能寫作等場景。
 
隨著混元 GPT、通義千問等大型模型的相繼問世,這些先進(jìn)的人工智能技術(shù)如今已在全球范圍內(nèi)引發(fā)廣泛關(guān)注與熱議。在此背景下,我們迫切期望能夠?qū)⑦@些大模型技術(shù)引入實際生產(chǎn)環(huán)節(jié),以期推動產(chǎn)業(yè)升級與創(chuàng)新發(fā)展。

盡管大模型在人工智能領(lǐng)域取得了顯著的進(jìn)展,但它們也面臨著一些挑戰(zhàn)。首先,大模型的訓(xùn)練數(shù)據(jù)是靜態(tài)的,這意味著它們在訓(xùn)練完成后無法實時更新,無法納入訓(xùn)練之后發(fā)生的新信息。因此,大模型在面對后續(xù)出現(xiàn)的事件和信息時,可能會表現(xiàn)出認(rèn)知上的滯后性,從而導(dǎo)致其知識體系逐漸過時。
其次,大模型通常擁有上億甚至上萬億的參數(shù),這使得每次更新都需要大量的計算資源,尤其是高性能顯卡。因此,新信息的引入對于已經(jīng)學(xué)習(xí)了海量數(shù)據(jù)的模型來說,短期內(nèi)的少量數(shù)據(jù)基本上無法產(chǎn)生足夠的信號來影響其輸出,這使得模型更新成本極高。
此外,許多企業(yè)的私域知識庫不會暴露到公網(wǎng),而大模型大多基于公網(wǎng)數(shù)據(jù)進(jìn)行訓(xùn)練。這導(dǎo)致大模型對私域知識庫的表現(xiàn)能力較差,限制了其在企業(yè)生產(chǎn)中的應(yīng)用。
鑒于上述問題,RAG(Retrieval-Augmented Generation)技術(shù)應(yīng)運(yùn)而生。RAG 技術(shù)通過結(jié)合檢索和生成的方法,能夠更好地處理和利用私域知識庫,從而提升大模型在企業(yè)生產(chǎn)中的應(yīng)用效果。

RAG 技術(shù),即檢索增強(qiáng)生成技術(shù),是一種通過檢索外部知識庫來提升大模型生成效果的技術(shù)方案。該技術(shù)在大模型基礎(chǔ)上,通過對本地知識庫進(jìn)行檢索,以增強(qiáng)大模型輸出的準(zhǔn)確性和相關(guān)性。

RAG 技術(shù)主要應(yīng)用于知識問答、智能客服、專家系統(tǒng)等場景,其工作流程主要包括以下五個步驟:
①發(fā)起問題:用戶提出問題,RAG 系統(tǒng)首先對問題進(jìn)行處理,包括改寫、擴(kuò)寫或優(yōu)化,并將其轉(zhuǎn)換為向量形式,以便于后續(xù)處理。
②搜索文檔:在 RAG 系統(tǒng)的知識庫中進(jìn)行檢索,尋找與問題相關(guān)的文檔或信息片段。
③Prompt 組裝:將檢索到的結(jié)果與原始問題進(jìn)行整合,形成一個 prompt 提示,該提示將作為輸入發(fā)送到大模型。
④模型生成:大模型根據(jù) prompt 生成答案,這一步驟依賴于模型的預(yù)訓(xùn)練知識和檢索到的外部信息。
⑤答案返回:生成的答案經(jīng)過格式處理后,返回給用戶,完成整個問答流程。
這一流程展示了 RAG 技術(shù)如何通過結(jié)合檢索和生成的方法,提升大模型在特定場景下的應(yīng)用效果。
五、一站式向量檢索與 RAG 方案
下面通過一個具體的落地案例來進(jìn)一步探討 RAG 技術(shù)的應(yīng)用。

以 Langchain 為代表的眾多公開 RAG 解決方案,傾向于采用純向量檢索方式。正如前文所述,純向量檢索的優(yōu)點在于流程簡單、語義理解能力強(qiáng),但其缺點是精準(zhǔn)性較差,因為其依賴于相似度檢索,難以處理關(guān)鍵詞,且無法表達(dá)文檔的額外屬性。
相比之下,基于倒排索引的全文檢索雖然精準(zhǔn)度高,但語義理解能力較弱。因此,騰訊 ES 在 RAG 領(lǐng)域提出了一種基于混合檢索的一站式解決方案,即結(jié)合向量檢索和文本檢索的多路召回方式,以充分發(fā)揮兩者的優(yōu)勢,取長補(bǔ)短。
該方案的先進(jìn)性體現(xiàn)在以下幾個方面:首先,全文檢索基于 Lucene 的 BM25 評分算法,這是在 TF-IDF 基礎(chǔ)上的一次升級,增加了與問題相關(guān)性的評分。同時,引入了多語言分詞,包括中文、日文、韓文、拼音等,并設(shè)計了 QQ 分詞,內(nèi)含百萬級中文詞匯,基本覆蓋了絕大多數(shù)的中文場景,分詞效果顯著。

其次,向量檢索基于原生 HNSW 算法,并在此基礎(chǔ)上自研構(gòu)建了高性能、高召回率的向量索引。經(jīng)過驗證,我們的多路召回方案在召回率上相對于純向量檢索和文本檢索有大幅提升,最高達(dá)到了 95%,基本滿足了大部分商用場景和 ToB/ToC 場景的召回率要求。因此,我們的方案已被混元收錄為 RAG 多路召回的標(biāo)準(zhǔn)解決方案,并在公司內(nèi)外部支持了 WXG、PCG、TEG 等大型在線知識庫的 RAG 項目。
接下來將詳細(xì)介紹在大型項目中遇到的一些挑戰(zhàn)。自年初開始,我們接手了內(nèi)部的一個大型在線知識庫項目,該項目涉及海量書籍構(gòu)成的百億級向量檢索數(shù)據(jù)規(guī)模,且要求檢索延遲在百毫秒以內(nèi)。原生 ES 基于 HNSW 算法,這是一種主流的基于圖結(jié)構(gòu)的向量近似搜索算法,其優(yōu)點在于召回率和性能都較高,同等召回率下性能可達(dá) Faiss 的 20 倍。然而,其缺點在于純內(nèi)存操作,資源消耗極高。在百億知識庫的場景下,資源使用幾乎無法滿足,預(yù)估可能需要五六百臺機(jī)器,這是一個巨大的規(guī)模。
為了實現(xiàn)降本增效,我們通過對 ES 進(jìn)行深度改造,核心原理是進(jìn)程內(nèi)存與系統(tǒng) MMAP 文件映射的動態(tài)結(jié)合。具體流程如下:當(dāng)數(shù)據(jù)寫入內(nèi)存時,首先在內(nèi)存中構(gòu)建上層向量索引和倒排索引,然后將細(xì)粒度的向量數(shù)據(jù)和字段信息進(jìn)行持久化,編碼存放到磁盤上,再通過預(yù)加載 Preload 到 MMap FS,在 MMap FS 中進(jìn)行快速檢索。通過這種方式,大幅降低了 HNSW 的內(nèi)存資源消耗。同時,通過高效的文件編碼、MMAP 文件的動態(tài)管理以及向量的標(biāo)量化,提升了檢索性能。
這樣做的目的是:
- 當(dāng)進(jìn)程內(nèi)存充足時,當(dāng)純內(nèi)存向量&倒排索引檢索庫使用,以保證最佳的性能;
 - 當(dāng)進(jìn)程不足以存放全部索引時,可以利用 MMapFS 來做內(nèi)存的壓縮跟熱索引的訪問加速;
 - 當(dāng)進(jìn)程 + MMapFS 文件系統(tǒng)都存放不下全部向量索引時,此時自動降級為磁盤向量檢索算法。
 
這種深度改造的架構(gòu)突破了傳統(tǒng)的 HNSW 算法受內(nèi)存資源的限制,只需要原本的 1/10 ~ 1/20 左右的內(nèi)存就可以將向量索引全部加載進(jìn)內(nèi)存。向量規(guī)模越大,實際上可壓縮節(jié)省的內(nèi)存就越多。同時我們通過高效的文件編碼、MMapFS 文件的動態(tài)管理,向量的 int/byte 量化,依然保持了基本無損的寫入跟查詢性能。不足之處在于首次讀取時預(yù)加載到 MMapFS 有一個過程,但可以通過主動觸發(fā) PreLoad 來加速這個過程。
經(jīng)過驗證,我們的方案在內(nèi)存資源消耗上降低了 80%,在同等資源情況下,性能提升了 5 到 10 倍。相對于開源 ES 版本,騰訊 ES 能夠?qū)崿F(xiàn) 10 倍的性能提升,達(dá)到了業(yè)界領(lǐng)先水平。

隨后,我們將資源優(yōu)化部分回饋到開源 ES 社區(qū)和 Lucene 社區(qū),得到了社區(qū)的高度認(rèn)可和廣泛宣傳。這不僅提升了我們的技術(shù)影響力,還收到了 Elasticsearch 創(chuàng)始人的感謝信。未來,我們將在 AI 時代繼續(xù)與開源 ES 社區(qū)保持緊密合作,共同推動技術(shù)的進(jìn)步與發(fā)展。

為了更好地服務(wù)于更多客戶,我們與中國信通院云計算大數(shù)據(jù)研究所聯(lián)合40余家企業(yè)的 70 多位專家,共同編制完成了 RAG 技術(shù)標(biāo)準(zhǔn)。騰訊 ES 作為國內(nèi)公有云首個從自然語言到向量生成、存儲、檢索并以大模型集成端到端的一站式平臺,騰訊云作為核心參與企業(yè),也是首個通過 RAG 權(quán)威認(rèn)證的標(biāo)準(zhǔn)企業(yè)。該標(biāo)準(zhǔn)主要包含五個能力域:知識庫構(gòu)建能力、知識檢索能力、內(nèi)容生成能力、質(zhì)量評估能力和平臺能力。

接下來,我們將介紹騰訊云 ES 的功能,并探討其與業(yè)界現(xiàn)有數(shù)據(jù)庫的區(qū)別。目前,業(yè)界已有許多相關(guān)數(shù)據(jù)庫,如 Milvus 和 Chroma 等向量數(shù)據(jù)庫,以及 MySQL 和 PostgreSQL 等傳統(tǒng)數(shù)據(jù)庫,它們也集成了向量檢索功能。然而,騰訊云 ES 主要為 RAG 應(yīng)用提供了豐富的功能,超越了傳統(tǒng)向量數(shù)據(jù)庫和其他數(shù)據(jù)庫的解決方案范圍。
我們在存儲、搜索和生成向量的基礎(chǔ)上,還提供了一個開箱即用的訓(xùn)練模型,并支持混合搜索,即基于文本和向量的檢索。用戶可以靈活選擇嵌入模型,并享受過濾、切片、聚合、自動補(bǔ)全、搜索分析、文檔級安全以及本地云混合等功能。

用戶在使用騰訊 ES 時,還可以選擇我們提供的自有優(yōu)化模型 ELSER,這是一個基于稀疏模型的優(yōu)化方案。此外,ES 還內(nèi)置了微軟的 Multilingual-e5 模型,用戶也可以上傳自己微調(diào)訓(xùn)練好的 Transformer Bert 模型到 ES 中進(jìn)行部署。同時,用戶還可以調(diào)用 OpenAI 和 Hugging Face 上的模型接口,進(jìn)行數(shù)據(jù)的向量化處理。

在結(jié)果重排方面,ES 提供了一種倒數(shù)融合排序算法,該算法主要根據(jù)每個結(jié)果在結(jié)果集中的排序位置,而不是基于相關(guān)性分?jǐn)?shù)。這種方式的好處在于,不需要進(jìn)行歸一化調(diào)整,就能實現(xiàn)相對較好的排序效果。用戶可以減少對相關(guān)性的細(xì)微調(diào)整,從而大大提高便利性。

ES 的混合搜索功能并非簡單地將文本搜索和向量搜索拼湊在一起。在底層引擎方面,不僅提供了文本索引、向量索引和數(shù)值索引,還在查詢分析理解方面提供了分詞、同義詞詞庫、詞權(quán)重調(diào)整、文本分類、命名實體識別等功能。在多路召回方面,可以對每個查詢的文本相關(guān)性、相似度和類目相關(guān)性進(jìn)行微調(diào)。對于多路召回的結(jié)果,進(jìn)行混合打分,并提供了 RF 算法和 LTR(Learning to Rank)模型,用于結(jié)果的重排序。

ES 還提供了一個專有的機(jī)器學(xué)習(xí)節(jié)點,用戶可以使用這些專有機(jī)器學(xué)習(xí)節(jié)點來上傳、管理和部署向量模型,一站式完成向量生成和檢索,從而有效提升向量推理能力。同時,這些節(jié)點與數(shù)據(jù)節(jié)點隔離,保障了在線業(yè)務(wù)的穩(wěn)定性。

為了滿足微信、QQ 等海量數(shù)據(jù)推理的需求,ES 與公司自研的紫霄 AI 芯片相結(jié)合。由于原生 ES 基于 CPU 推理,目前不支持 GPU,因此我們采用了自研 AI 芯片紫霄的最新 V2 版本。相對于社區(qū) ES,原生 ES 的性能提升了 18 倍。我們提供了一站式解決方案,用戶只需輸入一條命令,即可完成從向量生成、向量檢索到混合檢索,直至輸出結(jié)果的全流程操作。
六、案例實踐
接下來將詳細(xì)介紹一個具體的應(yīng)用案例。

該平臺提供了海量數(shù)字書籍閱讀服務(wù),并最近推出了一個新功能——AI 問書。AI 問書主要提供書籍內(nèi)容的智能檢索,用戶在閱讀過程中遇到不理解的內(nèi)容時,可以通過 AI 問書功能在當(dāng)前書籍中搜索相關(guān)答案,而不是依賴于混元等大模型。這是因為大模型可能無法根據(jù)特定書籍的內(nèi)容給出準(zhǔn)確回答,而 AI 問書則基于 RAG 技術(shù),能夠根據(jù)書籍的語義嘗試回答用戶的問題。舉個例子,用戶在 AI 問書中輸入“馬克思”,系統(tǒng)會輸出馬克思在某本書中的詳細(xì)資料,并引用相關(guān)書籍。此外,系統(tǒng)還會根據(jù)用戶的問題進(jìn)行拓展,提供更多相關(guān)信息。

這個知識庫平臺最初并未使用騰訊云 ES,因此遇到了以下技術(shù)挑戰(zhàn):
- 整體數(shù)據(jù)超 10 億級向量規(guī)模,存儲成本高。早期評估的非 ES 方案,為了滿足毫秒級查詢,需要緩存全部數(shù)據(jù)到內(nèi)存中,則 30 億 768 維的向量,需要超過 400 臺 64G 機(jī)器,運(yùn)營成本百萬級。
 - 運(yùn)維成本高:除了全文檢索,同時還需部署向量化服務(wù),在外部進(jìn)行向量化后,寫入到向量數(shù)據(jù)庫,同時向量數(shù)據(jù)庫不存儲原始文本信息,還需要額外存放到全文數(shù)據(jù)庫,跟文本的索引信息,相當(dāng)于需要同時四套系統(tǒng)。
 - 開發(fā)成本高:調(diào)試召回過程中,需要在外部進(jìn)行向量化后,從向量數(shù)據(jù)庫召回,然后再用召回 id 訪問正排獲取原始文本。相當(dāng)于每一次召回調(diào)試需要 3 次操作,跨越 4 個系統(tǒng)。
 - 穩(wěn)定性要求高:在線讀書平臺超億級用戶,穩(wěn)定性要求 5 個 9 以上。
 - 查詢性能要求高:高并發(fā)場景下查詢延遲需要毫秒級返回,數(shù)億量級數(shù)據(jù)全鏈路多路召回需控制在 100ms 以內(nèi)。
 

在與業(yè)務(wù)溝通后,我們采用了如下方案,首先,他們將微調(diào)好的模型上傳到騰訊 ES 的機(jī)器學(xué)習(xí)節(jié)點,然后將書籍進(jìn)行入庫。入庫過程中,文本首先會進(jìn)行分詞、分段和語義切分,然后輸入到機(jī)器學(xué)習(xí)節(jié)點進(jìn)行數(shù)據(jù)的向量化。同時,數(shù)據(jù)還會進(jìn)行基于 Lucene 的分詞,分詞完成后進(jìn)行文本檢索,向量化完成后進(jìn)行向量檢索。在 ES 中,用戶只需一條命令即可完成文本檢索和向量檢索。搜索到的結(jié)果與問題相結(jié)合,拼成 Prompt 提示后發(fā)送到 LLM 大模型生成答案。這種方式大幅降低了成本,并使運(yùn)維變得非常方便。

騰訊云 ES 提供了一站式的 RAG 方案,具體而言,AI 問書在實現(xiàn)過程中,主要應(yīng)用了以下能力:
- 知識向量化:通過上傳自定義的 embedding 模型到騰訊云 ES 提供的機(jī)器學(xué)習(xí)節(jié)點中,實現(xiàn)書籍內(nèi)容與搜索詞的向量化(embedding)。
 - 混合搜索:騰訊云 ES 提供了全文檢索與向量檢索能力,只需要簡單的一條查詢語句,即可從 ES 中實現(xiàn)混合搜索與多路召回。
 - 與大模型集成:騰訊云 ES 支持通過 API 與混元大模型進(jìn)行集成,深度打通混元一站式,從 ES 召回的數(shù)據(jù),可與 Prompt 一起送進(jìn)到大模型中進(jìn)行生成式整合,最終完成智能問答。
 - Kibana 調(diào)試:作為與 ES 天然集成 Web 頁面,Kibana 提供了豐富的可視化能力,能幫助開發(fā)運(yùn)維人員快速進(jìn)行召回調(diào)試,并在 Kibana 上完成模型的部署與管理。
 - 安全高可用:騰訊云 ES 自研全鏈路熔斷限流方案,同時支持多副本、多可用區(qū)部署,能夠有效保障在線業(yè)務(wù)穩(wěn)定性。
 
目前騰訊 ES 已在官網(wǎng)上公開售賣,近期將推出 RAG 一站式服務(wù)的 AI 搜索,幫助用戶直接使用一整套方案。歡迎大家試用騰訊 ES,感謝大家的關(guān)注。
七、Q&A
Q:在做文本檢索時會使用既有向量又有關(guān)鍵詞的混合檢索,混合檢索會得到多種類型的結(jié)果,請問如何對這些結(jié)果進(jìn)行重排序來選出其中高價值的結(jié)果。
A:對于多路召回的結(jié)果第一塊是一個前面介紹過的倒數(shù)排序的融合,它主要對多路的結(jié)果進(jìn)行融合,例如這個例子中有兩路結(jié)果,基于每一路的排名結(jié)果對最終結(jié)果進(jìn)行融合。另一種是重排模型(Reranker),例如利用 LLM 大模型提供的功能對結(jié)果進(jìn)行重排。















 
 
 







 
 
 
 