基于EAS&Milvus搭建RAG檢索增強對話系統(tǒng)
您可以在部署大模型RAG服務(wù)時集成阿里云Milvus版向量檢索引擎,來增強模型生成答案的準確性和信息豐富度。阿里云Milvus版在開源Milvus版本的基礎(chǔ)上集成了Zilliz商業(yè)版內(nèi)核,支持大多數(shù)涉及向量搜索的場景,同時還提供了圖形化數(shù)據(jù)庫管理工具,可以高效管理數(shù)據(jù)庫、集合(Collection)以及索引(Index)等,有助于提升RAG對話系統(tǒng)的質(zhì)量和用戶體驗。本文為您介紹如何使用EAS與阿里云Milvus版構(gòu)建一個大模型RAG對話系統(tǒng),以及如何使用RAG對話系統(tǒng)。
背景信息
EAS簡介
EAS(Elastic Algorithm Service)是PAI的模型在線服務(wù)平臺,支持將模型部署為在線推理服務(wù)和AI-Web應(yīng)用。EAS提供了彈性擴縮容和藍綠部署等功能,可以支撐您以較低的資源成本獲取高并發(fā)且穩(wěn)定的在線算法模型服務(wù)。此外,EAS具備資源組管理和版本控制等功能,并且有完整運維監(jiān)控體系等能力。更詳細的內(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)特性,大模型無法實時獲取和學(xué)習(xí)最新的信息與知識進展。
模型誤導(dǎo)性輸出:受制于數(shù)據(jù)偏差、模型內(nèi)在缺陷等因素,大語言模型可能會出現(xiàn)看似合理實則錯誤的輸出,即所謂的“大模型幻覺”。
為克服這些挑戰(zhàn),并進一步強化大模型的功能性和準確性,檢索增強生成技術(shù)RAG(Retrieval-Augmented Generation)應(yīng)運而生。這一技術(shù)通過整合外部知識庫,能夠顯著減少大模型虛構(gòu)的問題,并提升其獲取及應(yīng)用最新知識的能力,從而實現(xiàn)更個性化和精準化的LLM定制。
Milvus簡介
阿里云向量檢索服務(wù)Milvus版,是一款全托管向量檢索引擎,確保了與開源Milvus的完全兼容性,并支持無縫遷移。它在開源版本的基礎(chǔ)上,集成Zilliz商業(yè)版內(nèi)核增強了可擴展性,能提供大規(guī)模AI向量數(shù)據(jù)的相似性檢索服務(wù)。相比于開源Milvus,目前阿里云Milvus版的優(yōu)勢可以總結(jié)為五點,分別是易用性、可用性、安全性、低成本與生態(tài)優(yōu)勢。阿里云Milvus版可以支持大多數(shù)涉及到向量搜索的場景。例如檢索增強生成RAG、搜索推薦以及多模態(tài)檢索等。更詳細的內(nèi)容介紹,請參見向量檢索服務(wù)Milvus版。
使用流程
EAS自建了RAG系統(tǒng)化解決方案,提供了靈活可調(diào)的參數(shù)配置,您可以通過WebUI或者API調(diào)用RAG服務(wù),定制自己專屬的對話系統(tǒng)。RAG技術(shù)架構(gòu)的核心為檢索和生成:
在檢索方面,EAS支持多種向量數(shù)據(jù)庫,包括開源的Faiss和阿里云的產(chǎn)品Milvus、Elasticsearch、Hologres、OpenSearch以及AnalyticDB for PostgreSQL。
在生成方面,EAS支持豐富的開源模型,如通義千問、Llama、Mistral、百川等,同時支持ChatGPT調(diào)用。
本方案以Milvus為例,為您介紹如何使用EAS與阿里云Milvus版構(gòu)建一個大模型RAG對話系統(tǒng)。整體流程大約花費20分鐘,具體流程如下:
首先創(chuàng)建Milvus實例,并準備部署RAG服務(wù)關(guān)聯(lián)Milvus實例時依賴的配置項。
部署RAG服務(wù)并關(guān)聯(lián)Milvus
在EAS模型在線服務(wù)平臺部署RAG服務(wù),并關(guān)聯(lián)Milvus實例。
您可以在RAG對話系統(tǒng)中連接Milvus,上傳企業(yè)知識庫文件,并進行知識問答。
前提條件
已創(chuàng)建專有網(wǎng)絡(luò)VPC、交換機和安全組。具體操作,請參見搭建IPv4專有網(wǎng)絡(luò)和創(chuàng)建安全組。
注意事項
本實踐受制于LLM服務(wù)的最大Token數(shù)量限制,旨在幫助您體驗RAG對話系統(tǒng)的基本檢索功能:
該對話系統(tǒng)受制于LLM服務(wù)的服務(wù)器資源大小以及默認Token數(shù)量限制,能支持的對話長度有限。
如果無需進行多輪對話,建議您在RAG服務(wù)的WebUI頁面關(guān)閉with chat history功能,這樣能有效減少達到限制的可能性。詳情請參見如何關(guān)閉RAG服務(wù)的with chat history功能。
準備向量檢索庫Milvus
向量檢索Milvus版已開啟免費公測,預(yù)計于2024年09月30日結(jié)束。您可以在向量檢索服務(wù)Milvus版控制臺,進入Milvus頁面創(chuàng)建入門版的實例。
更多詳細介紹,請參見向量檢索服務(wù)Milvus版免費公測說明。
步驟一:創(chuàng)建阿里云Milvus實例
登錄阿里云Milvus控制臺,進入阿里云Milvus實例列表頁面中創(chuàng)建Milvus實例,其中關(guān)鍵參數(shù)配置說明如下,其他配置詳情,請參見快速創(chuàng)建Milvus實例。
參數(shù) | 描述 |
地域和可用區(qū) | 實例所在的物理位置和可用區(qū)。請選擇與EAS服務(wù)相同的地域。 |
用戶密碼 | 設(shè)置Milvus實例的root賬號密碼以登錄數(shù)據(jù)庫。 重要 請牢記您設(shè)定的密碼,目前無法更改。 |
步驟二:準備配置項
查詢訪問地址和代理端口。
登錄阿里云Milvus控制臺,在阿里云Milvus的實例列表頁面中,單擊已創(chuàng)建的實例名稱。
在實例詳情頁簽的訪問地址區(qū)域,分別單擊內(nèi)網(wǎng)地址和Proxy Port后的復(fù)制按鈕,將內(nèi)網(wǎng)地址和端口號保存到本地。
準備Milvus實例的賬號和密碼。
Milvus實例的賬號默認為root,密碼是您在創(chuàng)建Milvus實例時設(shè)置的用戶密碼,目前不支持更新。
準備數(shù)據(jù)庫和Collection。
創(chuàng)建Milvus實例時,系統(tǒng)會默認創(chuàng)建數(shù)據(jù)庫default。您也可以手動創(chuàng)建新的數(shù)據(jù)庫,具體操作,請參見管理Databases。
無需準備Collection,后續(xù)您在部署RAG服務(wù)時,使用新的Collection名稱或已存在的Collection名稱。對于已存在的Collection,Collection結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如可以填寫之前通過EAS部署RAG服務(wù)時自動創(chuàng)建的Collection。
部署RAG服務(wù)并關(guān)聯(lián)Milvus
進入模型在線服務(wù)(EAS)頁面。
登錄PAI控制臺。
在左側(cè)導(dǎo)航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應(yīng)的工作空間。
在工作空間頁面的左側(cè)導(dǎo)航欄選擇 ,進入模型在線服務(wù)(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ù)已選擇的模型類別,自動推薦適合的資源規(guī)格。更換至其他資源規(guī)格,可能會導(dǎo)致模型服務(wù)啟動失敗。
向量檢索庫設(shè)置
版本類型
選擇Milvus。
訪問地址
配置為步驟二中已獲取的Milvus實例的內(nèi)網(wǎng)地址。
代理端口
配置為步驟二中已獲取的Milvus實例的端口號。
賬號
配置為root。
密碼
配置為創(chuàng)建Milvus實例時設(shè)置的用戶密碼。
數(shù)據(jù)庫名稱
配置為已創(chuàng)建的數(shù)據(jù)庫名稱,本方案使用默認數(shù)據(jù)庫default。
Collection名稱
輸入新的Collection名稱或已存在的Collection名稱。對于已存在的Collection,Collection結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如您可以填寫之前通過EAS部署RAG服務(wù)時自動創(chuàng)建的Collection。
專有網(wǎng)絡(luò)配置
VPC
請確保所配置的專有網(wǎng)絡(luò)與Milvus實例保持一致。
交換機
安全組名稱
參數(shù)配置完成后,單擊部署。
使用RAG對話系統(tǒng)
RAG對話系統(tǒng)的基本使用方法如下,更多詳細介紹,請參見大模型RAG對話系統(tǒng)。
1、連接向量檢索庫
RAG服務(wù)部署成功后,單擊服務(wù)方式列下的查看Web應(yīng)用,啟動WebUI頁面。
測試向量檢索庫Milvus連接是否正常。
系統(tǒng)已自動識別并應(yīng)用了部署服務(wù)時配置的向量檢索庫設(shè)置,您可以單擊Connect Milvus,來驗證Milvus實例是否連接正常。如果連接失敗,請參考步驟二:準備配置項,檢查向量檢索庫配置是否正確,修改對應(yīng)配置項為正確配置,然后單擊Connect Milvus,重新連接Milvus實例。
2、上傳企業(yè)知識庫文件
您可以按照以下流程上傳您的企業(yè)知識庫文件,系統(tǒng)會自動按照PAI-RAG格式將知識庫存儲到向量檢索庫中,以方便您進行后續(xù)的知識檢索。您也可以利用向量檢索庫中已有的知識庫,但必須符合PAI-RAG格式要求,否則可能會導(dǎo)致檢索報錯。
在Upload頁簽,設(shè)置語義分塊參數(shù)。
通過配置以下參數(shù)來控制文檔分塊粒度的大小和進行QA信息提取:
參數(shù)
描述
Chunk Size
指定每個文本分塊的大小,單位為字節(jié),默認為500。
Chunk Overlap
表示相鄰分塊之間的重疊量,默認為10。
Process with QA Extraction Model
通過選中Yes復(fù)選框啟動QA信息提取功能,系統(tǒng)將在您上傳企業(yè)知識庫文件后自動抽取出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)會先對上傳的文件進行數(shù)據(jù)清洗(包括文本提取、超鏈接替換等)和語義切塊,然后進行上傳。
3、進行知識問答
在WebUI頁面的Chat頁簽,進行知識問答,支持以下三種查詢方式:
LLM
在不使用向量知識庫的情況下,大語言模型的回答效果會出現(xiàn)明顯的知識幻覺,回答結(jié)果可能存在不準確的情況。
Retrieval
該模式會從向量數(shù)據(jù)庫中檢索并返回Top K條相似結(jié)果。與LLM模式詢問同樣的問題,模型正確檢索了該詩句所在的詩篇。
Retrieval+LLM
RAG系統(tǒng)將檢索返回的結(jié)果與用戶問題填充到已選擇的Prompt模板中,一并提交至EAS-LLM服務(wù),從中獲取問答結(jié)果。從返回結(jié)果中可以看出,模型很好地結(jié)合了知識庫的內(nèi)容。
Milvus特色功能支持
Attu是一款專為Milvus向量數(shù)據(jù)庫打造的開源數(shù)據(jù)庫管理工具,提供了便捷的圖形化界面,可以高效管理數(shù)據(jù)庫、集合(Collection)以及索引(Index)等,極大地簡化了對Milvus數(shù)據(jù)庫的操作與管理流程,以下內(nèi)容將為您介紹,如何使用Milvus的Attu工具,查看向量數(shù)據(jù)庫的存儲內(nèi)容。
登錄阿里云Milvus控制臺,在阿里云Milvus的實例列表頁面中,單擊已創(chuàng)建的實例名稱。
在安全配置頁簽,單擊開啟公網(wǎng),為Milvus實例開啟公網(wǎng)訪問。具體操作,請參見網(wǎng)絡(luò)訪問與安全設(shè)置。
配置完成后,實例狀態(tài)變?yōu)樯壷校蠹s持續(xù)1分鐘。
進入Attu管理頁面。
在瀏覽器中輸入訪問地址。支持以下兩種訪問方式:
內(nèi)網(wǎng)訪問地址:{{clusterId}}-internal.milvus.aliyuncs.com:3000
公網(wǎng)訪問地址:{{clusterId}}.milvus.aliyuncs.com:3000
說明如果您使用公網(wǎng)訪問地址,則可以直接在實例詳情頁面單擊Attu manager。
在彈出的對話框中輸入所要訪問的數(shù)據(jù)庫、用戶名和密碼,單擊連接,即可打開Attu管理頁面。
在實例創(chuàng)建完成后,系統(tǒng)會自動創(chuàng)建一個名為default的默認數(shù)據(jù)庫,并為您創(chuàng)建一個名為root的用戶,該用戶的密碼由您在創(chuàng)建實例時自行設(shè)置。
登錄成功后,您可以在Attu頁面管理Collection。具體操作,請參見管理Collection。
相關(guān)文檔
針對AIGC和LLM的典型前沿場景,EAS提供了簡化的部署方式。您可以很方便地一鍵拉起服務(wù),包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。詳情請參見EAS場景化部署說明。
RAG服務(wù)WebUI界面提供了豐富的推理參數(shù)配置選項,以滿足多樣化需求。此外,RAG服務(wù)也支持通過API接口進行調(diào)用。具體實現(xiàn)細節(jié)以及參數(shù)配置說明,請參見大模型RAG對話系統(tǒng)。
大模型RAG對話系統(tǒng)還支持與其他向量檢索庫進行關(guān)聯(lián),例如Elasticsearch、OpenSearch或RDS PostgreSQL等。詳情請參見基于EAS&Elasticsearch搭建RAG檢索增強對話系統(tǒng)、基于EAS&OpenSearch搭建RAG檢索增強對話系統(tǒng)或基于EAS&RDS PostgreSQL搭建RAG檢索增強對話系統(tǒng)。