基于EAS&RDS PostgreSQL搭建RAG檢索增強(qiáng)對(duì)話系統(tǒng)
本文將介紹如何在部署RAG服務(wù)時(shí)關(guān)聯(lián)RDS PostgreSQL引擎實(shí)例,以及對(duì)RAG對(duì)話系統(tǒng)的基礎(chǔ)功能和RDS PostgreSQL的特色功能進(jìn)行說(shuō)明。
背景信息
EAS簡(jiǎn)介
EAS(Elastic Algorithm Service)是PAI的模型在線服務(wù)平臺(tái),支持將模型部署為在線推理服務(wù)和AI-Web應(yīng)用。EAS提供了彈性擴(kuò)縮容和藍(lán)綠部署等功能,可以支撐您以較低的資源成本獲取高并發(fā)且穩(wěn)定的在線算法模型服務(wù)。此外,EAS具備資源組管理和版本控制等功能,并且有完整運(yùn)維監(jiān)控體系等能力。更詳細(xì)的內(nèi)容介紹,請(qǐng)參見EAS模型服務(wù)概述。
RAG簡(jiǎn)介
隨著AI技術(shù)的飛速發(fā)展,生成式人工智能在文本生成、圖像生成等領(lǐng)域展現(xiàn)出了令人矚目的成就。然而,在廣泛應(yīng)用大語(yǔ)言模型(LLM)的過(guò)程中,一些固有局限性逐漸顯現(xiàn):
領(lǐng)域知識(shí)局限:大語(yǔ)言模型通常基于大規(guī)模通用數(shù)據(jù)集訓(xùn)練而成,難以針對(duì)專業(yè)垂直領(lǐng)域提供深入和針對(duì)性處理。
信息更新滯后:由于模型訓(xùn)練所依賴的數(shù)據(jù)集具有靜態(tài)特性,大模型無(wú)法實(shí)時(shí)獲取和學(xué)習(xí)最新的信息與知識(shí)進(jìn)展。
模型誤導(dǎo)性輸出:受制于數(shù)據(jù)偏差、模型內(nèi)在缺陷等因素,大語(yǔ)言模型可能會(huì)出現(xiàn)看似合理實(shí)則錯(cuò)誤的輸出,即所謂的“大模型幻覺”。
為克服這些挑戰(zhàn),并進(jìn)一步強(qiáng)化大模型的功能性和準(zhǔn)確性,檢索增強(qiáng)生成技術(shù)RAG(Retrieval-Augmented Generation)應(yīng)運(yùn)而生。這一技術(shù)通過(guò)整合外部知識(shí)庫(kù),能夠顯著減少大模型虛構(gòu)的問(wèn)題,并提升其獲取及應(yīng)用最新知識(shí)的能力,從而實(shí)現(xiàn)更個(gè)性化和精準(zhǔn)化的LLM定制。
RDS PostgreSQL簡(jiǎn)介
阿里云關(guān)系型數(shù)據(jù)庫(kù)RDS(Relational Database Service)支持PostgreSQL引擎。PostgreSQL的優(yōu)點(diǎn)主要集中在對(duì)SQL規(guī)范的完整實(shí)現(xiàn)以及豐富多樣的數(shù)據(jù)類型支持,包括JSON數(shù)據(jù)、IP數(shù)據(jù)和幾何數(shù)據(jù)等。除了完美支持事務(wù)、子查詢、多版本控制(MVCC)、數(shù)據(jù)完整性檢查等特性外,RDS PostgreSQL還集成了高可用和備份恢復(fù)等重要功能,減輕您的運(yùn)維壓力。更多關(guān)于RDS PostgreSQL的高級(jí)功能介紹,請(qǐng)參見RDS PostgreSQL。
使用流程
EAS自建了RAG系統(tǒng)化解決方案,提供了靈活可調(diào)的參數(shù)配置,您可以通過(guò)WebUI或者API調(diào)用RAG服務(wù),定制自己專屬的對(duì)話系統(tǒng)。RAG技術(shù)架構(gòu)的核心為檢索和生成:
在檢索方面,EAS支持多種向量檢索庫(kù),包括開源的Faiss和阿里云的Milvus、Elasticsearch、Hologres、OpenSearch以及RDS PostgreSQL。
在生成方面,EAS支持豐富的開源模型,例如通義千問(wèn)、Llama、Mistral、百川等,同時(shí)支持ChatGPT調(diào)用。
本方案以RDS PostgreSQL為例,為您介紹如何使用EAS與RDS PostgreSQL構(gòu)建一個(gè)大模型RAG對(duì)話系統(tǒng)。具體流程如下:
準(zhǔn)備向量檢索庫(kù)RDS PostgreSQL
首先創(chuàng)建RDS PostgreSQL實(shí)例,并準(zhǔn)備部署RAG服務(wù)關(guān)聯(lián)該實(shí)例時(shí)依賴的配置項(xiàng)。
部署RAG服務(wù)并關(guān)聯(lián)RDS PostgreSQL實(shí)例
在EAS模型在線服務(wù)平臺(tái)部署RAG服務(wù),并關(guān)聯(lián)RDS PostgreSQL實(shí)例。
您可以在RAG對(duì)話系統(tǒng)中連接RDS PostgreSQL,上傳企業(yè)知識(shí)庫(kù)文件,并進(jìn)行知識(shí)問(wèn)答。
前提條件
已創(chuàng)建專有網(wǎng)絡(luò)VPC、交換機(jī)和安全組。具體操作,請(qǐng)參見搭建IPv4專有網(wǎng)絡(luò)和創(chuàng)建安全組。
注意事項(xiàng)
本實(shí)踐受制于LLM服務(wù)的最大Token數(shù)量限制,旨在幫助您體驗(yàn)RAG對(duì)話系統(tǒng)的基本檢索功能:
該對(duì)話系統(tǒng)受制于LLM服務(wù)的服務(wù)器資源大小以及默認(rèn)Token數(shù)量限制,能支持的對(duì)話長(zhǎng)度有限。
如果無(wú)需進(jìn)行多輪對(duì)話,建議您在RAG服務(wù)的WebUI頁(yè)面關(guān)閉with chat history功能,這樣能有效減少達(dá)到限制的可能性。詳情請(qǐng)參見如何關(guān)閉RAG服務(wù)的with chat history功能。
準(zhǔn)備向量檢索庫(kù)RDS PostgreSQL
步驟一:創(chuàng)建RDS PostgreSQL實(shí)例和數(shù)據(jù)庫(kù)
創(chuàng)建RDS PostgreSQL實(shí)例。
在購(gòu)買頁(yè)面,配置以下關(guān)鍵參數(shù),其他參數(shù)配置說(shuō)明,請(qǐng)參見創(chuàng)建RDS PostgreSQL實(shí)例。
引擎:選擇PostgreSQL。
VPC:選擇已創(chuàng)建的專有網(wǎng)絡(luò)。
高權(quán)限賬號(hào):在更多配置區(qū)域,配置高權(quán)限賬號(hào)。選擇立即設(shè)置,并配置數(shù)據(jù)庫(kù)賬號(hào)和密碼。
按照控制臺(tái)操作指引完成支付和開通操作。
創(chuàng)建數(shù)據(jù)庫(kù)。
單擊已創(chuàng)建的實(shí)例名稱,在左側(cè)導(dǎo)航欄單擊數(shù)據(jù)庫(kù)管理,并單擊創(chuàng)建數(shù)據(jù)庫(kù)。
在創(chuàng)建數(shù)據(jù)庫(kù)配置面板中,配置數(shù)據(jù)庫(kù)(DB)名稱,授權(quán)賬號(hào)選擇已創(chuàng)建的高權(quán)限賬號(hào),其他參數(shù)配置說(shuō)明,請(qǐng)參見創(chuàng)建賬號(hào)和數(shù)據(jù)庫(kù)。
參數(shù)配置完成后,單擊創(chuàng)建。
步驟二:準(zhǔn)備配置項(xiàng)
查詢數(shù)據(jù)庫(kù)連接地址。
在RDS PostgreSQL實(shí)例詳情頁(yè)面的左側(cè)導(dǎo)航欄,選擇數(shù)據(jù)庫(kù)連接,并查看數(shù)據(jù)庫(kù)內(nèi)網(wǎng)地址、外網(wǎng)地址,以及相應(yīng)的端口號(hào)。
使用內(nèi)網(wǎng)地址:RAG服務(wù)需要和數(shù)據(jù)庫(kù)在同一個(gè)VPC下。
使用外網(wǎng)地址:當(dāng)EAS通過(guò)外網(wǎng)地址訪問(wèn)RDS PostgreSQL時(shí),EAS需要具備訪問(wèn)公網(wǎng)的能力。同時(shí),為確保PostgreSQL實(shí)例能夠接收來(lái)自EAS實(shí)例的公網(wǎng)請(qǐng)求,您需要為PostgreSQL開通外網(wǎng)地址,并將相關(guān)EIP地址或0.0.0.0/0加入白名單。具體操作步驟如下:
為RDS PostgreSQL開通外網(wǎng)地址。具體操作,請(qǐng)參見開通或關(guān)閉外網(wǎng)地址。
為EAS開通公網(wǎng)訪問(wèn)能力,您需要為后續(xù)部署RAG服務(wù)時(shí)添加的VPC綁定NAT網(wǎng)關(guān)和彈性公網(wǎng)IP(EIP)。具體操作,請(qǐng)參見使用公網(wǎng)NAT網(wǎng)關(guān)SNAT功能訪問(wèn)互聯(lián)網(wǎng)。
說(shuō)明RAG服務(wù)可以使用與RDS PostgreSQL相同的VPC,也可以使用其他VPC。
將0.0.0.0/0或上述彈性公網(wǎng)IP(EIP)地址添加為RDS PostgreSQL實(shí)例外網(wǎng)地址白名單。具體操作,請(qǐng)參見設(shè)置白名單。
查詢高權(quán)限賬號(hào)和密碼。
在RDS PostgreSQL實(shí)例詳情頁(yè)面的左側(cè)導(dǎo)航欄,選擇賬號(hào)管理。在該頁(yè)面查看已創(chuàng)建的高權(quán)限賬號(hào),相應(yīng)密碼在創(chuàng)建實(shí)例時(shí)設(shè)定,如果忘記可單擊重置密碼進(jìn)行修改。
部署RAG服務(wù)并關(guān)聯(lián)RDS PostgreSQL實(shí)例
登錄PAI控制臺(tái),選擇工作空間,并單擊進(jìn)入EAS。
在模型在線服務(wù)(EAS)頁(yè)面,單擊部署服務(wù),然后在場(chǎng)景化模型部署區(qū)域,單擊大模型RAG對(duì)話系統(tǒng)部署。
在部署大模型RAG對(duì)話系統(tǒng)頁(yè)面,配置以下關(guān)鍵參數(shù),其他參數(shù)配置說(shuō)明,請(qǐng)參見步驟一:部署RAG服務(wù)。
參數(shù)
描述
基本信息
模型來(lái)源
選擇開源公共模型。
模型類別
選擇Qwen1.5-1.8b。
資源配置
資源配置選擇
系統(tǒng)會(huì)根據(jù)已選擇的模型類別,自動(dòng)推薦適合的資源規(guī)格。更換至其他資源規(guī)格,可能會(huì)導(dǎo)致模型服務(wù)啟動(dòng)失敗。
向量檢索庫(kù)設(shè)置
版本類型
選擇RDS PostgreSQL。
主機(jī)地址
配置為RDS PostgreSQL實(shí)例的內(nèi)網(wǎng)地址或外網(wǎng)地址。
端口
配置為RDS PostgreSQL實(shí)例的端口號(hào),例如5432。
數(shù)據(jù)庫(kù)
請(qǐng)輸入已創(chuàng)建的數(shù)據(jù)庫(kù)名稱。
表名稱
請(qǐng)輸入新的表名稱或已存在的表名稱。對(duì)于已存在的表,表結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如您可以填寫之前通過(guò)EAS部署RAG服務(wù)時(shí)自動(dòng)創(chuàng)建的表名稱。
賬號(hào)
請(qǐng)輸入已創(chuàng)建的高權(quán)限賬號(hào)。
密碼
請(qǐng)輸入高權(quán)限賬號(hào)對(duì)應(yīng)的密碼。
專有網(wǎng)絡(luò)配置
VPC
當(dāng)主機(jī)地址使用內(nèi)網(wǎng)地址時(shí),RAG服務(wù)需要配置與RDS PostgreSQL實(shí)例一致的專有網(wǎng)絡(luò)。
當(dāng)主機(jī)地址使用外網(wǎng)地址時(shí),RAG服務(wù)需要配置專有網(wǎng)絡(luò),您需要確保該專有網(wǎng)絡(luò)具有公網(wǎng)訪問(wèn)能力,詳情請(qǐng)參見使用公網(wǎng)NAT網(wǎng)關(guān)SNAT功能訪問(wèn)互聯(lián)網(wǎng)。同時(shí)您需要將綁定的彈性公網(wǎng)IP或
0.0.0.0/0
添加為RDS PostgreSQL實(shí)例的公網(wǎng)訪問(wèn)白名單,詳情請(qǐng)參見設(shè)置白名單。
交換機(jī)
安全組名稱
參數(shù)配置完成后,單擊部署。
使用RAG對(duì)話系統(tǒng)
1、連接向量檢索庫(kù)
RAG對(duì)話系統(tǒng)的基本使用方法如下,更多詳細(xì)介紹,請(qǐng)參見大模型RAG對(duì)話系統(tǒng)。
RAG服務(wù)部署成功后,單擊服務(wù)方式列下的查看Web應(yīng)用,啟動(dòng)WebUI頁(yè)面。
測(cè)試向量檢索庫(kù)PostgreSQL連接是否正常。
系統(tǒng)已自動(dòng)識(shí)別并應(yīng)用了部署服務(wù)時(shí)配置的向量檢索庫(kù)設(shè)置,您可以單擊Connect PostgreSQL,來(lái)驗(yàn)證PostgreSQL向量檢索版實(shí)例是否連接正常。如果連接失敗,請(qǐng)參考步驟二:準(zhǔn)備配置項(xiàng),檢查向量檢索庫(kù)配置是否正確,修改對(duì)應(yīng)配置項(xiàng)為正確配置,然后單擊Connect PostgreSQL,重新連接PostgreSQL實(shí)例。
2、上傳企業(yè)知識(shí)庫(kù)文件
您可以按照以下流程上傳您的企業(yè)知識(shí)庫(kù)文件,系統(tǒng)會(huì)自動(dòng)按照PAI-RAG格式將知識(shí)庫(kù)存儲(chǔ)到向量檢索庫(kù)中,以方便您進(jìn)行后續(xù)的知識(shí)檢索。您也可以利用向量檢索庫(kù)中已有的知識(shí)庫(kù),但必須符合PAI-RAG格式要求,否則可能會(huì)導(dǎo)致檢索報(bào)錯(cuò)。
在Upload頁(yè)簽,設(shè)置語(yǔ)義分塊參數(shù)。
通過(guò)配置以下參數(shù)來(lái)控制文檔分塊粒度的大小和進(jìn)行QA信息提取:
參數(shù)
描述
Chunk Size
指定每個(gè)文本分塊的大小,單位為字節(jié),默認(rèn)為500。
Chunk Overlap
表示相鄰分塊之間的重疊量,默認(rèn)為10。
Process with QA Extraction Model
通過(guò)選中Yes復(fù)選框啟動(dòng)QA信息提取功能,系統(tǒng)將在您上傳企業(yè)知識(shí)庫(kù)文件后自動(dòng)抽取出QA對(duì),以獲得更好的檢索和回答效果。
在Files或Directory頁(yè)簽下上傳企業(yè)知識(shí)庫(kù)文件(支持多文件上傳)或?qū)?yīng)目錄。支持的文件類型為.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html,例如rag_chatbot_test_doc.txt。
單擊Upload,系統(tǒng)會(huì)先對(duì)上傳的文件進(jìn)行數(shù)據(jù)清洗(包括文本提取、超鏈接替換等)和語(yǔ)義切塊,然后進(jìn)行上傳。
3、進(jìn)行知識(shí)問(wèn)答
將檢索返回的結(jié)果與用戶的問(wèn)題輸入至已選擇的Prompt模板中,送入EAS-LLM服務(wù),從中獲取問(wèn)答結(jié)果。
RDS PostgreSQL特色功能支持
訪問(wèn)RDS實(shí)例列表,切換到實(shí)例所在地域,然后單擊實(shí)例名稱,進(jìn)入實(shí)例詳情頁(yè)面。
在左側(cè)導(dǎo)航欄選擇數(shù)據(jù)庫(kù)管理,然后單擊目標(biāo)數(shù)據(jù)庫(kù)操作列下的SQL查詢。
輸入數(shù)據(jù)庫(kù)賬號(hào)和數(shù)據(jù)庫(kù)密碼,即您在創(chuàng)建RDS PostgreSQL時(shí)設(shè)置的高權(quán)限賬號(hào)和密碼,然后單擊登錄。
登錄成功后,在已登錄數(shù)據(jù)庫(kù)實(shí)例中查詢導(dǎo)入的知識(shí)庫(kù)列表。
相關(guān)文檔
針對(duì)AIGC和LLM的典型前沿場(chǎng)景,EAS提供了簡(jiǎn)化的部署方式。您可以很方便地一鍵拉起服務(wù),包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。詳情請(qǐng)參見EAS場(chǎng)景化部署說(shuō)明。
RAG服務(wù)WebUI界面提供了豐富的推理參數(shù)配置選項(xiàng),以滿足多樣化需求。此外,RAG服務(wù)也支持通過(guò)API接口進(jìn)行調(diào)用。具體實(shí)現(xiàn)細(xì)節(jié)以及參數(shù)配置說(shuō)明,請(qǐng)參見大模型RAG對(duì)話系統(tǒng)。
大模型RAG對(duì)話系統(tǒng)還支持與其他向量檢索庫(kù)進(jìn)行關(guān)聯(lián),例如Milvus、OpenSearch或Elasticsearch等。詳情請(qǐng)參見基于EAS&Milvus搭建RAG檢索增強(qiáng)對(duì)話系統(tǒng)、基于EAS&Elasticsearch搭建RAG檢索增強(qiáng)對(duì)話系統(tǒng)或基于EAS&OpenSearch搭建RAG檢索增強(qiáng)對(duì)話系統(tǒng)或。