基于EAS&Elasticsearch搭建RAG檢索增強(qiáng)對話系統(tǒng)
您可以在大模型RAG服務(wù)中集成Elasticsearch信息檢索組件,來增強(qiáng)模型生成答案的準(zhǔn)確性和信息豐富度。Elasticsearch不僅具有高效檢索能力,還提供了詞典配置、索引管理等特色功能,使RAG對話系統(tǒng)能夠更準(zhǔn)確地理解查詢意圖,提供更為貼切和有價(jià)值的反饋。本文為您介紹如何在部署RAG服務(wù)時(shí)關(guān)聯(lián)Elasticsearch,以及對RAG對話系統(tǒng)的基礎(chǔ)功能和Elasticsearch的特色功能進(jìn)行說明。
背景信息
EAS簡介
EAS(Elastic Algorithm Service)是PAI的模型在線服務(wù)平臺,支持將模型部署為在線推理服務(wù)和AI-Web應(yīng)用。EAS提供了彈性擴(kuò)縮容和藍(lán)綠部署等功能,可以支撐您以較低的資源成本獲取高并發(fā)且穩(wěn)定的在線算法模型服務(wù)。此外,EAS具備資源組管理和版本控制等功能,并且有完整運(yùn)維監(jiān)控體系等能力。更詳細(xì)的內(nèi)容介紹,請參見EAS模型服務(wù)概述。
RAG簡介
隨著AI技術(shù)的飛速發(fā)展,生成式人工智能在文本生成、圖像生成等領(lǐng)域展現(xiàn)出了令人矚目的成就。然而,在廣泛應(yīng)用大語言模型(LLM)的過程中,一些固有局限性逐漸顯現(xiàn):
領(lǐng)域知識局限:大語言模型通常基于大規(guī)模通用數(shù)據(jù)集訓(xùn)練而成,難以針對專業(yè)垂直領(lǐng)域提供深入和針對性處理。
信息更新滯后:由于模型訓(xùn)練所依賴的數(shù)據(jù)集具有靜態(tài)特性,大模型無法實(shí)時(shí)獲取和學(xué)習(xí)最新的信息與知識進(jìn)展。
模型誤導(dǎo)性輸出:受制于數(shù)據(jù)偏差、模型內(nèi)在缺陷等因素,大語言模型可能會出現(xiàn)看似合理實(shí)則錯(cuò)誤的輸出,即所謂的“大模型幻覺”。
為克服這些挑戰(zhàn),并進(jìn)一步強(qiáng)化大模型的功能性和準(zhǔn)確性,檢索增強(qiáng)生成技術(shù)RAG(Retrieval-Augmented Generation)應(yīng)運(yùn)而生。這一技術(shù)通過整合外部知識庫,能夠顯著減少大模型虛構(gòu)的問題,并提升其獲取及應(yīng)用最新知識的能力,從而實(shí)現(xiàn)更個(gè)性化和精準(zhǔn)化的LLM定制。
Elasticsearch簡介
阿里云Elasticsearch是基于開源Elasticsearch構(gòu)建的全托管Elasticsearch云服務(wù),在100%兼容開源功能的同時(shí),支持開箱即用、按需付費(fèi)。不僅提供云上開箱即用的Elasticsearch、Logstash、Kibana、Beats在內(nèi)的Elastic Stack生態(tài)組件,還與Elastic官方合作提供免費(fèi)X-Pack(白金版高級特性)商業(yè)插件,集成了安全、SQL、機(jī)器學(xué)習(xí)、告警、監(jiān)控等高級特性,被廣泛應(yīng)用于實(shí)時(shí)日志分析處理、信息檢索以及數(shù)據(jù)的多維查詢和統(tǒng)計(jì)分析等場景。更多關(guān)于阿里云Elasticsearch的詳細(xì)介紹,請參見什么是阿里云Elasticsearch。
使用流程
EAS自建了RAG系統(tǒng)化解決方案,提供了靈活可調(diào)的參數(shù)配置,您可以通過WebUI或者API調(diào)用RAG服務(wù),定制自己專屬的對話系統(tǒng)。RAG技術(shù)架構(gòu)的核心為檢索和生成:
在檢索方面,EAS支持多種向量檢索庫,包括開源的Faiss和阿里云的Milvus、Elasticsearch、Hologres、OpenSearch以及RDS PostgreSQL。
在生成方面,EAS支持豐富的開源模型,例如通義千問、Llama、Mistral、百川等,同時(shí)支持ChatGPT調(diào)用。
本方案以Elasticsearch為例,為您介紹如何使用EAS與Elasticsearch構(gòu)建一個(gè)大模型RAG對話系統(tǒng)。具體流程如下:
首先創(chuàng)建Elasticsearch實(shí)例,并準(zhǔn)備部署RAG服務(wù)關(guān)聯(lián)Elasticsearch實(shí)例時(shí)依賴的配置項(xiàng)。
部署RAG服務(wù)并關(guān)聯(lián)Elasticsearch
在EAS模型在線服務(wù)平臺部署RAG服務(wù),并關(guān)聯(lián)Elasticsearch實(shí)例。
您可以在RAG對話系統(tǒng)中連接Elasticsearch,上傳企業(yè)知識庫文件,并進(jìn)行知識問答。
前提條件
已創(chuàng)建專有網(wǎng)絡(luò)VPC、交換機(jī)和安全組。具體操作,請參見搭建IPv4專有網(wǎng)絡(luò)和創(chuàng)建安全組。
注意事項(xiàng)
本實(shí)踐受制于LLM服務(wù)的最大Token數(shù)量限制,旨在幫助您體驗(yàn)RAG對話系統(tǒng)的基本檢索功能:
該對話系統(tǒng)受制于LLM服務(wù)的服務(wù)器資源大小以及默認(rèn)Token數(shù)量限制,能支持的對話長度有限。
如果無需進(jìn)行多輪對話,建議您在RAG服務(wù)的WebUI頁面關(guān)閉with chat history功能,這樣能有效減少達(dá)到限制的可能性。詳情請參見如何關(guān)閉RAG服務(wù)的with chat history功能。
準(zhǔn)備向量檢索庫Elasticsearch
步驟一:創(chuàng)建阿里云Elasticsearch實(shí)例
登錄阿里云Elasticsearch控制,在Elasticsearch實(shí)例頁面創(chuàng)建阿里云Elasticsearch實(shí)例。其中關(guān)鍵參數(shù)配置說明如下,其他配置詳情,請參見創(chuàng)建阿里云Elasticsearch實(shí)例。
參數(shù) | 描述 |
地域和可用區(qū) | 選擇與EAS服務(wù)相同的地域。 |
實(shí)例類型 | 選擇通用商業(yè)版。 |
場景初始化配置 | 選擇通用場景。 |
登錄密碼 | 配置登錄密碼,并保存到本地。 |
步驟二:準(zhǔn)備配置項(xiàng)
準(zhǔn)備Elasticsearch URL。
在Elasticsearch實(shí)例頁面的頂部菜單欄,選擇創(chuàng)建實(shí)例的地域,在實(shí)例列表中單擊已創(chuàng)建的ES實(shí)例ID。
在基本信息區(qū)域,獲取私網(wǎng)地址和相應(yīng)端口號,并拼接成Elasticsearch URL。
格式為
http://<私網(wǎng)地址>:<私網(wǎng)端口>
。重要當(dāng)使用私網(wǎng)地址時(shí),需確保Elasticsearch實(shí)例和PAI-RAG服務(wù)位于同一VPC內(nèi),否則連接失敗。
準(zhǔn)備索引名稱。
在Elasticsearch實(shí)例的配置YML參數(shù)。
頁面,單擊修改配置,更新YML文件配置,將自動(dòng)創(chuàng)建索引設(shè)置為允許自動(dòng)創(chuàng)建索引。具體操作,請參見完成配置后,您在部署PAI-RAG服務(wù)時(shí)即可自定義索引名稱,例如es-test。
準(zhǔn)備ES User和password。
ES User默認(rèn)為elastic,ES password是您在創(chuàng)建ES實(shí)例時(shí)設(shè)置的登錄密碼。如果您忘記了登錄密碼,可重置密碼,具體操作,請參見重置實(shí)例訪問密碼。
部署RAG服務(wù)并關(guān)聯(lián)Elasticsearch
登錄PAI控制臺,在頁面上方選擇目標(biāo)地域,并在右側(cè)選擇目標(biāo)工作空間,然后單擊進(jìn)入EAS。
在模型在線服務(wù)(EAS)頁面,單擊部署服務(wù),然后在場景化模型部署區(qū)域,單擊大模型RAG對話系統(tǒng)部署。
在部署大模型RAG對話系統(tǒng)頁面,配置以下關(guān)鍵參數(shù),其他參數(shù)配置說明,請參見步驟一:部署RAG服務(wù)。
參數(shù)
描述
基本信息
模型來源
選擇開源公共模型。
模型類別
選擇模型類別,本方案以大模型Qwen1.5-1.8b為例。
資源配置
資源配置選擇
系統(tǒng)會根據(jù)已選擇的模型類別,自動(dòng)推薦適合的資源規(guī)格。更換至其他資源規(guī)格,可能會導(dǎo)致模型服務(wù)啟動(dòng)失敗。
向量檢索庫設(shè)置
版本類型
選擇Elasticsearch。
私網(wǎng)地址/端口
配置為步驟二中已獲取的Elasticsearch URL,格式為
http://<私網(wǎng)地址>:<私網(wǎng)端口>
。索引名稱
輸入新的索引名稱或已存在的索引名稱。對于已存在的索引名稱,索引結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如您可以填寫之前通過EAS部署RAG服務(wù)時(shí)自動(dòng)創(chuàng)建的索引。
賬號
配置為elastic。
密碼
配置為步驟二中已設(shè)置的登錄密碼。
專有網(wǎng)絡(luò)配置
VPC
請確保所配置的專有網(wǎng)絡(luò)與Elasticsearch實(shí)例保持一致。
交換機(jī)
安全組名稱
參數(shù)配置完成后,單擊部署。
使用RAG對話系統(tǒng)
RAG對話系統(tǒng)的基本使用方法如下,更多詳細(xì)介紹,請參見大模型RAG對話系統(tǒng)。
1、連接向量檢索庫
RAG服務(wù)部署成功后,單擊服務(wù)方式列下的查看Web應(yīng)用,啟動(dòng)WebUI頁面。
測試向量檢索庫Elasticsearch連接是否正常。
系統(tǒng)已自動(dòng)識別并應(yīng)用了部署服務(wù)時(shí)配置的向量檢索庫設(shè)置,您可以單擊Connect ElasticSearch,來驗(yàn)證Elasticsearch實(shí)例是否連接正常。如果連接失敗,請參考步驟二:準(zhǔn)備配置項(xiàng),檢查向量檢索庫配置是否正確,修改對應(yīng)配置項(xiàng)為正確配置,然后單擊Connect ElasticSearch,重新連接Elasticsearch實(shí)例。
2、上傳企業(yè)知識庫文件
您可以按照以下流程上傳您的企業(yè)知識庫文件,系統(tǒng)會自動(dòng)按照PAI-RAG格式將知識庫存儲到向量檢索庫中,以方便您進(jìn)行后續(xù)的知識檢索。您也可以利用向量檢索庫中已有的知識庫,但必須符合PAI-RAG格式要求,否則可能會導(dǎo)致檢索報(bào)錯(cuò)。
在Upload頁簽,設(shè)置語義分塊參數(shù)。
通過配置以下參數(shù)來控制文檔分塊粒度的大小和進(jìn)行QA信息提取:
參數(shù)
描述
Chunk Size
指定每個(gè)文本分塊的大小,單位為字節(jié),默認(rèn)為500。
Chunk Overlap
表示相鄰分塊之間的重疊量,默認(rèn)為10。
Process with QA Extraction Model
通過選中Yes復(fù)選框啟動(dòng)QA信息提取功能,系統(tǒng)將在您上傳企業(yè)知識庫文件后自動(dòng)抽取出QA對,以獲得更好的檢索和回答效果。
在Files或Directory頁簽下上傳企業(yè)知識庫文件(支持多文件上傳)或?qū)?yīng)目錄。支持的文件類型為.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html,例如rag_chatbot_test_doc.txt。
單擊Upload,系統(tǒng)會先對上傳的文件進(jìn)行數(shù)據(jù)清洗(包括文本提取、超鏈接替換等)和語義切塊,然后進(jìn)行上傳。
3、進(jìn)行知識問答
RAG系統(tǒng)將檢索返回的結(jié)果與用戶問題填充到已選擇的Prompt模板中,一并提交至EAS-LLM服務(wù),從中獲取問答結(jié)果。
Elasticsearch特色功能支持
分詞/停用詞典個(gè)性化設(shè)置
阿里云Elasticsearch內(nèi)置了IK分詞插件(analysis-ik)。IK分詞器就像是一個(gè)詞典,收納了各類常用詞,能夠?qū)⒄Z句按照詞語進(jìn)行拆分,而不是拆分為獨(dú)立的漢字。IK自帶了主分詞詞庫和停用詞詞庫,主分詞詞庫能夠處理復(fù)雜的中文文本分詞,而停用詞詞庫能夠去除無意義的高頻詞(如“的”、“是”、“在”等),二者都能提高檢索的效率和準(zhǔn)確性。盡管IK分詞插件自帶的詞庫比較強(qiáng)大,但是在特定領(lǐng)域(如法律、醫(yī)學(xué)等)往往存在大量專業(yè)術(shù)語,或者知識庫還可能存在一些產(chǎn)品名稱、公司名稱和品牌名稱等,這些詞匯可能不在默認(rèn)的詞庫中,您可以根據(jù)具體業(yè)務(wù)需求來設(shè)置自定義詞典,以獲得更準(zhǔn)確的檢索效果。更多關(guān)于Elasticsearch的IK分詞插件的介紹,請參見使用IK分詞插件(analysis-ik)。
1、準(zhǔn)備主詞典或停用詞詞典
在本地準(zhǔn)備一份自定義的主詞典或停用詞詞典:
詞典文件格式:
.dic
類型的文件,文件名包含大小寫字母、數(shù)字或下劃線,且長度不超過30個(gè)字符。例如new_word.dic。內(nèi)容要求:在詞典文件中,按行添加新詞或停用詞。以主詞典為例,使用內(nèi)置分詞表,會把“云服務(wù)器”分為“云”和“服務(wù)器”兩個(gè)詞,按照業(yè)務(wù)需求希望將其作為一個(gè)詞,您可以將“云服務(wù)器”加入主詞典中,new_word.dic文件內(nèi)容示例如下:
云服務(wù)器 自定義分詞
2、上傳詞典文件
準(zhǔn)備好詞典文件后,您需要將詞典文件上傳到指定位置。以熱更新為例,具體操作步驟如下。更多關(guān)于更新詞典文件的操作方法,請參見使用IK分詞插件(analysis-ik)。
進(jìn)入Elasticsearch實(shí)例詳情頁面。
- 登錄阿里云Elasticsearch控制臺。
- 在左側(cè)導(dǎo)航欄,單擊Elasticsearch實(shí)例。
- 進(jìn)入目標(biāo)實(shí)例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實(shí)例中單擊目標(biāo)實(shí)例ID。
在左側(cè)導(dǎo)航欄,選擇 。
在系統(tǒng)默認(rèn)插件列表頁簽,找到analysis-ik插件,在其右側(cè)的操作列中單擊熱更新。
在IK詞庫配置-熱更新控制面板,單擊目標(biāo)詞典右側(cè)的編輯,上傳對應(yīng)的詞典文件后單擊保存。
詞典文件更新方式包括:
上傳本地文件:單擊文件上傳區(qū)域上傳詞典文件,或拖拽詞典文件到上傳區(qū)域。
上傳OSS文件:輸入Bucket名稱和詞典文件名稱,單擊添加。
Bucket與阿里云ES實(shí)例需要在同一地域。
不支持自動(dòng)同步更新詞典文件。源端OSS中的詞典文件內(nèi)容發(fā)生變化后,需要通過熱更新使之生效。
說明詞典文件后綴必須是
.dic
,文件名可以包含大小寫字母、數(shù)字和下劃線,長度不超過30個(gè)字符。如果您需要修改已上傳的詞典文件內(nèi)容,可單擊目標(biāo)詞典文件右側(cè)的圖標(biāo),下載、修改詞典文件,然后刪除源詞典文件并重新上傳。
支持上傳多個(gè)詞典文件,僅詞典文件內(nèi)容發(fā)生變化時(shí)集群不需要重啟,文件名稱或文件數(shù)量發(fā)生變化時(shí)需要集群重啟。為保證您的業(yè)務(wù)不受影響,請?jiān)跇I(yè)務(wù)低峰期進(jìn)行操作,等待重啟結(jié)束后,詞典會自動(dòng)生效。
單擊確定,更新詞典文件。詞典文件更新后,您需要在RAG服務(wù)的WebUI頁面重連Elasticsearch,具體操作,請參見連接向量檢索庫。
重連Elasticsearch后,在WebUI頁面進(jìn)行知識問答。當(dāng)Retrieval Mode選擇Keyword Only(關(guān)鍵詞檢索)或Hybrid(向量檢索+關(guān)鍵詞檢索)時(shí),則可以使用更新詞典后的Elasticsearch進(jìn)行全文檢索。
索引管理
Elasticsearch提供了索引管理功能,管理好索引是確保RAG對話系統(tǒng)能夠高效、準(zhǔn)確地從大量信息中檢索出有價(jià)值內(nèi)容,并生成高質(zhì)量回答的基礎(chǔ)。具體操作步驟如下:
進(jìn)入Elasticsearch實(shí)例詳情頁面。
- 登錄阿里云Elasticsearch控制臺。
- 在左側(cè)導(dǎo)航欄,單擊Elasticsearch實(shí)例。
- 進(jìn)入目標(biāo)實(shí)例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實(shí)例中單擊目標(biāo)實(shí)例ID。
在左側(cè)導(dǎo)航欄,選擇。
在Kibana區(qū)域,單擊修改配置,配置Kibana公網(wǎng)或私網(wǎng)訪問白名單。
具體操作,請參見配置Kibana公網(wǎng)或私網(wǎng)訪問白名單。
登錄Kibana控制臺。
單擊頁面左上角的返回圖標(biāo),返回可視化控制頁面。
在Kibana區(qū)域,單擊公網(wǎng)入口或私網(wǎng)入口。
說明開啟Kibana公網(wǎng)訪問或Kibana私網(wǎng)訪問開關(guān)后,頁面才會顯示公網(wǎng)入口或私網(wǎng)入口。
在Kibana登錄頁面,輸入用戶名和密碼。
用戶名:ES實(shí)例的默認(rèn)用戶為elastic。
您也可以創(chuàng)建自定義用戶,具體操作請參見通過Elasticsearch X-Pack角色管理實(shí)現(xiàn)用戶權(quán)限管控。
密碼:用戶的密碼。elastic用戶的密碼在創(chuàng)建實(shí)例時(shí)設(shè)定,如果忘記可重置。
重置密碼的注意事項(xiàng)和操作步驟,請參見重置實(shí)例訪問密碼。
單擊登錄,進(jìn)入的界面如下圖所示。
查看并管理索引。
在Kibana控制臺單擊左上角的,然后在下拉列表中選擇
。在左側(cè)導(dǎo)航欄數(shù)據(jù)區(qū)域,單擊索引管理。
在右側(cè)索引頁簽,查看相應(yīng)的索引(例如已創(chuàng)建的索引es_test),并進(jìn)行包括關(guān)閉索引、刷新索引、清空索引以及刪除索引等管理操作。
相關(guān)文檔
針對AIGC和LLM的典型前沿場景,EAS提供了簡化的部署方式。您可以很方便地一鍵拉起服務(wù),包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。詳情請參見EAS場景化部署說明。
RAG服務(wù)WebUI界面提供了豐富的推理參數(shù)配置選項(xiàng),以滿足多樣化需求。此外,RAG服務(wù)也支持通過API接口進(jìn)行調(diào)用。具體實(shí)現(xiàn)細(xì)節(jié)以及參數(shù)配置說明,請參見大模型RAG對話系統(tǒng)。
大模型RAG對話系統(tǒng)還支持與其他向量檢索庫進(jìn)行關(guān)聯(lián),例如Milvus、OpenSearch或RDS PostgreSQL等。詳情請參見基于EAS&Milvus搭建RAG檢索增強(qiáng)對話系統(tǒng)、基于EAS&OpenSearch搭建RAG檢索增強(qiáng)對話系統(tǒng)或基于EAS&RDS PostgreSQL搭建RAG檢索增強(qiáng)對話系統(tǒng)。