日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

大模型RAG對(duì)話(huà)系統(tǒng)

更新時(shí)間:

EAS提供了場(chǎng)景化部署方式,通過(guò)簡(jiǎn)單配置幾個(gè)參數(shù),您便可以一鍵部署集成了大語(yǔ)言模型(LLM)和檢索增強(qiáng)生成(RAG)技術(shù)的對(duì)話(huà)系統(tǒng)服務(wù),顯著縮短服務(wù)部署時(shí)間。在使用該服務(wù)進(jìn)行推理驗(yàn)證時(shí),它能夠有效地從知識(shí)庫(kù)中檢索相關(guān)信息,并與大語(yǔ)言模型的回答相結(jié)合,以產(chǎn)生準(zhǔn)確且信息豐富的答案,從而大幅提高問(wèn)答的質(zhì)量和整體性能。該服務(wù)適用于問(wèn)答、摘要生成和依賴(lài)外部知識(shí)的自然語(yǔ)言處理任務(wù)。本文為您介紹如何部署RAG對(duì)話(huà)系統(tǒng)服務(wù)以及如何進(jìn)行模型推理驗(yàn)證。

背景信息

大語(yǔ)言模型(LLM)在生成準(zhǔn)確性和實(shí)時(shí)性回復(fù)方面存在局限,因此并不適合直接用于需要精確信息的客服或問(wèn)答等場(chǎng)景。為了解決這一問(wèn)題,當(dāng)前業(yè)界廣泛采用的方法是利用檢索增強(qiáng)生成(Retrieval-Augmented Generation, RAG)技術(shù)來(lái)增強(qiáng)LLM的性能,這一技術(shù)可以顯著提升問(wèn)答、摘要生成以及其他需要引用外部知識(shí)的自然語(yǔ)言處理(NLP)任務(wù)的質(zhì)量。

RAG通過(guò)將大語(yǔ)言模型(如通義千問(wèn))和信息檢索組件結(jié)合在一起,增強(qiáng)了模型生成答案的準(zhǔn)確性和信息量。在處理用戶(hù)查詢(xún)時(shí),RAG通過(guò)信息檢索組件在知識(shí)庫(kù)中尋找與查詢(xún)相關(guān)的文檔或信息片段,將這些檢索到的內(nèi)容與原始查詢(xún)一同輸入大語(yǔ)言模型之后,模型能夠利用現(xiàn)有的歸納生成能力產(chǎn)生基于最新信息的、符合事實(shí)的回復(fù),而無(wú)需對(duì)模型進(jìn)行重新訓(xùn)練。

使用EAS部署的對(duì)話(huà)系統(tǒng)服務(wù),通過(guò)集成大語(yǔ)言模型(LLM)和檢索增強(qiáng)生成(RAG)技術(shù),克服了LLM在準(zhǔn)確性和實(shí)時(shí)性方面的局限,為多種問(wèn)答場(chǎng)景提供了準(zhǔn)確且信息豐富的響應(yīng),從而提升了自然語(yǔ)言處理任務(wù)的整體效能和用戶(hù)體驗(yàn)。

前提條件

  • 已創(chuàng)建一個(gè)專(zhuān)有網(wǎng)絡(luò)(VPC)、交換機(jī)和安全組。詳情請(qǐng)參見(jiàn)創(chuàng)建和管理專(zhuān)有網(wǎng)絡(luò)創(chuàng)建安全組。

    說(shuō)明

    使用Faiss作為向量檢索庫(kù)時(shí),不需要?jiǎng)?chuàng)建VPC、交換機(jī)和安全組。

  • 當(dāng)使用微調(diào)模型部署服務(wù)時(shí),您需要準(zhǔn)備OSS存儲(chǔ)空間(Bucket)或NAS文件系統(tǒng),用來(lái)存放微調(diào)的模型文件。具體操作,請(qǐng)參見(jiàn)控制臺(tái)快速入門(mén)創(chuàng)建文件系統(tǒng)。

    說(shuō)明

    如果使用Faiss作為向量檢索庫(kù),您需要準(zhǔn)備OSS存儲(chǔ)空間(Bucket),用來(lái)存儲(chǔ)上傳的知識(shí)庫(kù)文件。

注意事項(xiàng)

本實(shí)踐受制于LLM服務(wù)的最大Token數(shù)量限制,旨在幫助您體驗(yàn)RAG對(duì)話(huà)系統(tǒng)的基本檢索功能:

  • 該對(duì)話(huà)系統(tǒng)受制于LLM服務(wù)的服務(wù)器資源大小以及默認(rèn)Token數(shù)量限制,能支持的對(duì)話(huà)長(zhǎng)度有限。

  • 如果無(wú)需進(jìn)行多輪對(duì)話(huà),建議您在RAG服務(wù)的WebUI頁(yè)面關(guān)閉with chat history功能,這樣能有效減少達(dá)到限制的可能性。詳情請(qǐng)參見(jiàn)如何關(guān)閉RAG服務(wù)的with chat history功能。

步驟一:部署RAG服務(wù)

部署大模型RAG對(duì)話(huà)系統(tǒng),并綁定向量檢索庫(kù),具體操作步驟如下:

  1. 登錄PAI控制臺(tái),在頁(yè)面上方選擇目標(biāo)地域,并在右側(cè)選擇目標(biāo)工作空間,然后單擊進(jìn)入EAS。

  2. 模型在線(xiàn)服務(wù)(EAS)頁(yè)面,單擊部署服務(wù),然后在場(chǎng)景化模型部署區(qū)域,單擊大模型RAG對(duì)話(huà)系統(tǒng)部署。6eea7736f88e6ec8b3b900e4d028bb48

  3. 部署大模型RAG對(duì)話(huà)系統(tǒng)頁(yè)面,配置以下關(guān)鍵參數(shù)。

    • 基本信息

      參數(shù)

      描述

      模型來(lái)源

      支持以下兩種模型來(lái)源:

      • 開(kāi)源公共模型:PAI預(yù)置了多種開(kāi)源公共模型供您選擇,包括Qwen、Llama、ChatGLM、Baichuan、Falcon、Yi、Mistral、Gemma、DeepSpeek等。您可以直接部署相應(yīng)參數(shù)量的模型。

      • 自持微調(diào)模型:PAI也支持部署您自行微調(diào)后的模型,來(lái)滿(mǎn)足特定的場(chǎng)景。

      模型類(lèi)別

      • 當(dāng)使用開(kāi)源公共模型時(shí),您可以根據(jù)具體使用場(chǎng)景選擇相應(yīng)參數(shù)量的開(kāi)源模型。

      • 使用自持微調(diào)模型時(shí),您需要根據(jù)您微調(diào)的模型,選擇相應(yīng)的模型類(lèi)別、參數(shù)量以及精度。

      模型配置

      使用自持微調(diào)模型時(shí),您需配置微調(diào)模型的文件路徑。后續(xù)部署服務(wù)時(shí),系統(tǒng)將從該路徑讀取模型配置文件。支持以下兩種配置類(lèi)型:

      說(shuō)明

      建議您在HuggingfaceTransformers下運(yùn)行微調(diào)后的模型,確認(rèn)其輸出結(jié)果符合預(yù)期后,再考慮將其部署為EAS服務(wù)。

      • 對(duì)象存儲(chǔ)(OSS):請(qǐng)選擇微調(diào)模型文件所在的OSS存儲(chǔ)路徑。

      • 文件存儲(chǔ)(NAS):請(qǐng)選擇微調(diào)模型文件所在的NAS文件系統(tǒng)、NAS掛載點(diǎn)和NAS源路徑。

    • 資源配置

      參數(shù)

      描述

      資源配置選擇

      在選擇模型類(lèi)別后,系統(tǒng)將自動(dòng)匹配適合的資源規(guī)格。更換至其他資源規(guī)格,可能會(huì)導(dǎo)致模型服務(wù)啟動(dòng)失敗。

      推理加速

      目前,部署在A10GU30系列機(jī)型上的Qwen、Llama2、ChatGLMBaichuan2等系列模型服務(wù),支持啟用推理加速功能。支持以下兩種加速類(lèi)型:

      • PAI-BladeLLM自動(dòng)推理加速:BladeLLM提供超高性?xún)r(jià)比的大模型推理加速能力,可幫助您一鍵享受高并發(fā)和低延時(shí)的技術(shù)優(yōu)勢(shì)。

      • 開(kāi)源框架vllm推理加速

    • 向量檢索庫(kù)設(shè)置

      RAG支持通過(guò)Faiss(Facebook AI Similarity Search)、ElasticsearchMilvusHologres、OpenSearchRDS PostgreSQL構(gòu)建向量檢索庫(kù)。根據(jù)您的場(chǎng)景需要,任意選擇一種版本類(lèi)型,作為向量檢索庫(kù)。

      FAISS

      使用Faiss構(gòu)建本地向量庫(kù),無(wú)需購(gòu)買(mǎi)線(xiàn)上向量庫(kù)產(chǎn)品,免去了線(xiàn)上開(kāi)通向量庫(kù)產(chǎn)品的復(fù)雜流程,更輕量易用。

      參數(shù)

      描述

      版本類(lèi)型

      選擇FAISS

      OSS地址

      選擇當(dāng)前地域下已創(chuàng)建的OSS存儲(chǔ)路徑,用來(lái)存儲(chǔ)上傳的知識(shí)庫(kù)文件。如果沒(méi)有可選的存儲(chǔ)路徑,您可以參考控制臺(tái)快速入門(mén)進(jìn)行創(chuàng)建。

      說(shuō)明

      如果您選擇使用自持微調(diào)模型部署服務(wù),請(qǐng)確保所選的OSS存儲(chǔ)路徑不與自持微調(diào)模型所在的路徑重復(fù),以避免造成沖突。

      ElasticSearch

      配置阿里云ElasticSearch實(shí)例的連接信息。關(guān)于如何創(chuàng)建ElasticSearch實(shí)例及準(zhǔn)備配置項(xiàng),請(qǐng)參見(jiàn)準(zhǔn)備向量檢索庫(kù)Elasticsearch。

      參數(shù)

      描述

      版本類(lèi)型

      選擇Elasticsearch

      私網(wǎng)地址/端口

      配置Elasticsearch實(shí)例的私網(wǎng)地址和端口,格式為http://<私網(wǎng)地址>:<私網(wǎng)端口>。如何獲取Elasticsearch實(shí)例的私網(wǎng)地址和端口號(hào),請(qǐng)參見(jiàn)查看實(shí)例的基本信息。

      索引名稱(chēng)

      輸入新的索引名稱(chēng)或已存在的索引名稱(chēng)。對(duì)于已存在的索引名稱(chēng),索引結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如您可以填寫(xiě)之前通過(guò)EAS部署RAG服務(wù)時(shí)自動(dòng)創(chuàng)建的索引。

      賬號(hào)

      配置創(chuàng)建Elasticsearch實(shí)例時(shí)配置的登錄名,默認(rèn)為elastic。

      密碼

      配置創(chuàng)建Elasticsearch實(shí)例時(shí)配置的登錄密碼。如果您忘記了登錄密碼,可重置實(shí)例訪問(wèn)密碼。

      Milvus

      配置Milvus實(shí)例的連接信息。關(guān)于如何創(chuàng)建Milvus實(shí)例及準(zhǔn)備配置項(xiàng),請(qǐng)參見(jiàn)準(zhǔn)備向量檢索庫(kù)Milvus。

      參數(shù)

      描述

      版本類(lèi)型

      選擇Milvus。

      訪問(wèn)地址

      配置為Milvus實(shí)例內(nèi)網(wǎng)地址。您可以前往阿里云Milvus控制臺(tái)實(shí)例詳情頁(yè)面的訪問(wèn)地址區(qū)域進(jìn)行查看。

      代理端口

      配置為Milvus實(shí)例的Proxy Port,默認(rèn)為19530。您可以前往阿里云Milvus控制臺(tái)實(shí)例詳情頁(yè)面的訪問(wèn)地址區(qū)域進(jìn)行查看。

      賬號(hào)

      配置為root。

      密碼

      配置為創(chuàng)建Milvus實(shí)例時(shí),您自定義的root用戶(hù)的密碼。

      數(shù)據(jù)庫(kù)名稱(chēng)

      配置為數(shù)據(jù)庫(kù)名稱(chēng),例如default。創(chuàng)建Milvus實(shí)例時(shí),系統(tǒng)會(huì)默認(rèn)創(chuàng)建數(shù)據(jù)庫(kù)default,您也可以手動(dòng)創(chuàng)建新的數(shù)據(jù)庫(kù),具體操作,請(qǐng)參見(jiàn)管理Databases。

      Collection名稱(chēng)

      輸入新的Collection名稱(chēng)或已存在的Collection名稱(chēng)。對(duì)于已存在的Collection,Collection結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如您可以填寫(xiě)之前通過(guò)EAS部署RAG服務(wù)時(shí)自動(dòng)創(chuàng)建的Collection。

      Hologres

      配置為Hologres實(shí)例的連接信息。如果未開(kāi)通Hologres實(shí)例,可參考購(gòu)買(mǎi)Hologres進(jìn)行操作。

      參數(shù)

      描述

      版本類(lèi)型

      選擇Hologres。

      調(diào)用信息

      配置為指定VPChost信息。進(jìn)入Hologres管理控制臺(tái)的實(shí)例詳情頁(yè),在網(wǎng)絡(luò)信息區(qū)域單擊指定VPC后的復(fù)制,獲取域名:80前的host信息。

      數(shù)據(jù)庫(kù)名稱(chēng)

      配置為Hologres實(shí)例的數(shù)據(jù)庫(kù)名稱(chēng)。如何創(chuàng)建數(shù)據(jù)庫(kù),詳情請(qǐng)參見(jiàn)創(chuàng)建數(shù)據(jù)庫(kù)。

      賬號(hào)

      配置為已創(chuàng)建的自定義用戶(hù)賬號(hào)。具體操作,請(qǐng)參見(jiàn)創(chuàng)建自定義用戶(hù),其中選擇成員角色選擇實(shí)例超級(jí)管理員(SuperUser)。

      密碼

      配置為已創(chuàng)建的自定義用戶(hù)的密碼。

      表名稱(chēng)

      輸入新的表名稱(chēng)或已存在的表名稱(chēng)。對(duì)于已存在的表名稱(chēng),表結(jié)構(gòu)應(yīng)符合PAI-RAG要求,例如可以填寫(xiě)之前通過(guò)EAS部署RAG服務(wù)自動(dòng)創(chuàng)建的Hologres表。

      OpenSearch

      配置為OpenSearch向量檢索版實(shí)例的連接信息。關(guān)于如何創(chuàng)建OpenSearch實(shí)例及準(zhǔn)備配置項(xiàng),請(qǐng)參見(jiàn)準(zhǔn)備向量檢索庫(kù)OpenSearch。

      參數(shù)

      描述

      版本類(lèi)型

      選擇OpenSearch。

      訪問(wèn)地址

      配置為OpenSearch向量檢索版實(shí)例的公網(wǎng)訪問(wèn)地址。您需要為OpenSearch向量檢索版實(shí)例開(kāi)通公網(wǎng)訪問(wèn)功能,具體操作,請(qǐng)參見(jiàn)準(zhǔn)備向量檢索庫(kù)OpenSearch

      實(shí)例id

      OpenSearch向量檢索版實(shí)例列表中獲取實(shí)例ID。

      用戶(hù)名

      配置為創(chuàng)建OpenSearch向量檢索版實(shí)例時(shí),輸入的用戶(hù)名和密碼。

      密碼

      表名稱(chēng)

      配置為準(zhǔn)備OpenSearch向量檢索版實(shí)例時(shí)創(chuàng)建的索引表名稱(chēng)。如何準(zhǔn)備索引表,請(qǐng)參見(jiàn)準(zhǔn)備向量檢索庫(kù)OpenSearch。

      RDS PostgreSQL

      配置為RDS PostgreSQL實(shí)例數(shù)據(jù)庫(kù)的連接信息。關(guān)于如何創(chuàng)建RDS PostgreSQL實(shí)例及準(zhǔn)備配置項(xiàng),請(qǐng)參見(jiàn)準(zhǔn)備向量檢索庫(kù)RDS PostgreSQL

      參數(shù)

      描述

      版本類(lèi)型

      選擇RDS PostgreSQL。

      主機(jī)地址

      配置為RDS PostgreSQL實(shí)例的內(nèi)網(wǎng)地址,您可以前往云數(shù)據(jù)庫(kù)RDS PostgreSQL控制臺(tái)頁(yè)面,在RDS PostgreSQL實(shí)例的數(shù)據(jù)庫(kù)連接頁(yè)面進(jìn)行查看。

      端口

      默認(rèn)為5432,請(qǐng)根據(jù)實(shí)際情況填寫(xiě)。

      數(shù)據(jù)庫(kù)

      配置為已創(chuàng)建的數(shù)據(jù)庫(kù)名稱(chēng)。如何創(chuàng)建數(shù)據(jù)庫(kù)和賬號(hào),請(qǐng)參見(jiàn)創(chuàng)建賬號(hào)和數(shù)據(jù)庫(kù),其中:

      • 創(chuàng)建賬號(hào)時(shí),賬號(hào)類(lèi)型選擇高權(quán)限賬號(hào)

      • 創(chuàng)建數(shù)據(jù)庫(kù)時(shí),授權(quán)賬號(hào)選擇已創(chuàng)建的高權(quán)限賬號(hào)。

      表名稱(chēng)

      自定義配置數(shù)據(jù)庫(kù)表名稱(chēng)。

      賬號(hào)

      配置為已創(chuàng)建的高權(quán)限賬號(hào)和密碼。如何創(chuàng)建高權(quán)限賬號(hào),請(qǐng)參見(jiàn)創(chuàng)建賬號(hào)和數(shù)據(jù)庫(kù),其中賬號(hào)類(lèi)型選擇高權(quán)限賬號(hào)。

      密碼

    • 專(zhuān)有網(wǎng)絡(luò)配置

      參數(shù)

      描述

      VPC

      • 當(dāng)選擇Hologres、ElasticSearch、Milvus、OpenSearchRDS PostgreSQL作為向量檢索庫(kù)時(shí),請(qǐng)確保所配置的專(zhuān)有網(wǎng)絡(luò)與選定的向量檢索庫(kù)保持一致。

        說(shuō)明

        使用OpenSearch作為向量檢索庫(kù)時(shí),此處可以使用其他專(zhuān)有網(wǎng)絡(luò),但需要確保該專(zhuān)有網(wǎng)絡(luò)具有公網(wǎng)訪問(wèn)能力,并將綁定的彈性公網(wǎng)IP添加為OpenSearch實(shí)例的公網(wǎng)訪問(wèn)白名單。具體操作,請(qǐng)參見(jiàn)使用公網(wǎng)NAT網(wǎng)關(guān)SNAT功能訪問(wèn)互聯(lián)網(wǎng)公網(wǎng)白名單配置。

      • 當(dāng)選擇Faiss作為向量檢索庫(kù)時(shí),無(wú)需配置專(zhuān)有網(wǎng)絡(luò)。

      交換機(jī)

      安全組名稱(chēng)

  4. 單擊部署

    當(dāng)服務(wù)狀態(tài)變?yōu)?b data-tag="uicontrol" id="47d3bcb00aviu" class="uicontrol">運(yùn)行中時(shí),表示服務(wù)部署成功。

步驟二:通過(guò)WebUI頁(yè)面進(jìn)行調(diào)試

請(qǐng)按照以下操作步驟,在WebUI頁(yè)面上傳企業(yè)知識(shí)庫(kù)文件并對(duì)問(wèn)答效果進(jìn)行調(diào)試。

1、連接向量檢索庫(kù)

  1. RAG服務(wù)部署成功后,單擊服務(wù)方式列下的查看Web應(yīng)用,啟動(dòng)WebUI頁(yè)面。

  2. 配置Embedding模型。系統(tǒng)將通過(guò)該模型將文本分塊轉(zhuǎn)換為Embedding向量。

    • Embedding Model Name:系統(tǒng)內(nèi)置四種模型供您選擇,將自動(dòng)為您配置最合適的模型。

    • Embedding Dimension:設(shè)置Embedding維度,維度的設(shè)置對(duì)模型的性能有直接影響。在您選擇Embedding模型后,系統(tǒng)將自動(dòng)配置Embedding維度,無(wú)需手動(dòng)操作。

  3. 測(cè)試向量檢索庫(kù)連接是否正常。

    系統(tǒng)已自動(dòng)識(shí)別并應(yīng)用了部署服務(wù)時(shí)配置的向量檢索庫(kù)設(shè)置。以Hologres為例,您可以單擊Connect Hologres,來(lái)驗(yàn)證Hologres連接是否正常。如果連接失敗,請(qǐng)檢查步驟一中向量檢索庫(kù)配置是否正確,修改對(duì)應(yīng)配置項(xiàng)為正確配置,然后重新連接實(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ò)。

image

  1. Upload頁(yè)簽,設(shè)置語(yǔ)義分塊參數(shù)。

    通過(guò)配置以下參數(shù)來(lái)控制文檔分塊粒度的大小和進(jìn)行QA信息提?。?/p>

    參數(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ì),以獲得更好的檢索和回答效果。

  2. FilesDirectory頁(yè)簽下上傳企業(yè)知識(shí)庫(kù)文件(支持多文件上傳)或?qū)?yīng)目錄。支持的文件類(lèi)型為.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html,例如rag_chatbot_test_doc.txt。

  3. 單擊Upload,系統(tǒng)會(huì)先對(duì)上傳的文件進(jìn)行數(shù)據(jù)清洗(包括文本提取、超鏈接替換等)和語(yǔ)義切塊,然后進(jìn)行上傳。image

3、配置模型推理參數(shù)

Chat頁(yè)簽配置問(wèn)答策略:

配置Retrieval問(wèn)答策略

image

參數(shù)

說(shuō)明

Streaming Output

選中Streaming Output后,系統(tǒng)將以流式方式輸出結(jié)果。

Retrieval Mode

支持以下三種檢索方式:

  • Embedding Only:向量數(shù)據(jù)庫(kù)檢索召回。

  • Keyword Only:關(guān)鍵詞檢索召回。

  • Hybrid:向量數(shù)據(jù)庫(kù)和關(guān)鍵詞檢索多路召回融合。

說(shuō)明

在大多數(shù)復(fù)雜場(chǎng)景下,向量數(shù)據(jù)庫(kù)檢索召回都能有較好的表現(xiàn)。但在某些語(yǔ)料稀缺的垂直領(lǐng)域,或要求準(zhǔn)確匹配的場(chǎng)景,向量數(shù)據(jù)庫(kù)檢索召回方式可能不如傳統(tǒng)的稀疏檢索召回方式。稀疏檢索召回方法通過(guò)計(jì)算用戶(hù)查詢(xún)與知識(shí)文檔的關(guān)鍵詞重疊度來(lái)進(jìn)行檢索,因此更為簡(jiǎn)單和高效。

PAI提供了BM25等關(guān)鍵詞檢索召回算法來(lái)完成稀疏檢索召回操作。向量數(shù)據(jù)庫(kù)檢索召回和關(guān)鍵詞檢索召回具有各自的優(yōu)勢(shì)和不足,因此綜合二者的召回結(jié)果能夠提高整體的檢索準(zhǔn)確性和效率。

倒數(shù)排序融合(Reciprocal Rank Fusion, RRF)算法通過(guò)對(duì)每個(gè)文檔在不同召回方法中的排名進(jìn)行加權(quán)求和,以此計(jì)算融合后的總分?jǐn)?shù)。當(dāng)Retrieval選擇Hybrid時(shí),PAI將默認(rèn)使用RRF算法對(duì)向量數(shù)據(jù)庫(kù)召回結(jié)果和關(guān)鍵詞檢索召回結(jié)果進(jìn)行多路召回融合。

Reranker Type

大多數(shù)向量數(shù)據(jù)庫(kù)為了計(jì)算效率會(huì)犧牲一定程度的準(zhǔn)確性,這使其檢索結(jié)果存在一定隨機(jī)性,原始返回的Top K不一定最相關(guān)。您可以選擇以下兩種排序類(lèi)型,對(duì)向量數(shù)據(jù)庫(kù)第一次召回的Top K結(jié)果進(jìn)行精度更高的Re-Rank操作,以得到相關(guān)度更高、更準(zhǔn)確的知識(shí)文檔。

  • simple-weighted-reranker:對(duì)原始返回的Top K個(gè)結(jié)果進(jìn)行加權(quán)排序。

  • model-based-reranker:選擇開(kāi)源ReRank模型BAAI/bge-reranker-baseBAAI/bge-reranker-large,對(duì)向量數(shù)據(jù)庫(kù)第一次召回的Top K結(jié)果進(jìn)行排序操作。

    說(shuō)明

    首次使用時(shí),加載模型可能需要較長(zhǎng)時(shí)間,請(qǐng)根據(jù)需要進(jìn)行選擇。

Top K

向量檢索庫(kù)返回的相似結(jié)果數(shù),即從向量數(shù)據(jù)庫(kù)中召回Top K條相似結(jié)果。

配置RAG(Retrieval + LLM)問(wèn)答策略

image

  • PAI提供多種不同的Prompt策略,您可以選擇合適的預(yù)定義Prompt模板或輸入自定義的Prompt模板以獲得更好的推理效果。RAG系統(tǒng)會(huì)將檢索返回的結(jié)果與用戶(hù)問(wèn)題填充到提示詞模板中,隨后一并提交至大型語(yǔ)言模型進(jìn)行處理。

  • 此外RAG(Retrieval + LLM)問(wèn)答方式還支持配置Streaming Output、Retrieval ModeReranker Type等參數(shù)。關(guān)于這些參數(shù)的配置說(shuō)明,請(qǐng)參見(jiàn)配置Retrieval問(wèn)答策略

4、模型推理驗(yàn)證

Retrieval

直接從向量數(shù)據(jù)庫(kù)中檢索并返回Top K條相似結(jié)果。

image

LLM

直接與EAS-LLM對(duì)話(huà),返回大模型的回答。

image

RAG(Retrieval + LLM)

將檢索返回的結(jié)果與用戶(hù)問(wèn)題填充至已選擇的Prompt模板中,一并送入EAS-LLM服務(wù)進(jìn)行處理,從中獲取問(wèn)答結(jié)果。

image

調(diào)試完成后,您可以基于PAI提供的API將其應(yīng)用到您自己的業(yè)務(wù)系統(tǒng)中,詳情請(qǐng)參見(jiàn)步驟三:通過(guò)API調(diào)用進(jìn)行模型推理。

步驟三:通過(guò)API調(diào)用進(jìn)行模型推理

  1. 獲取RAG服務(wù)的調(diào)用信息。

    1. 單擊RAG服務(wù)名稱(chēng),進(jìn)入服務(wù)詳情頁(yè)面。

    2. 基本信息區(qū)域,單擊查看調(diào)用信息。

    3. 調(diào)用信息對(duì)話(huà)框的公網(wǎng)地址調(diào)用頁(yè)簽,獲取服務(wù)訪問(wèn)地址和Token。

  2. 通過(guò)WebUI頁(yè)面連接向量檢索庫(kù),并上傳企業(yè)知識(shí)庫(kù)文件

    您還可以根據(jù)已生成的符合PAI-RAG格式的表結(jié)構(gòu),將企業(yè)知識(shí)庫(kù)自行上傳到向量檢索庫(kù)中。

  3. 通過(guò)API調(diào)用服務(wù)。

    PAI提供了三種調(diào)用API的對(duì)話(huà)方式:service/query/retrieval(Retrieval)、service/query/llm(LLM)和service/query(RAG)。具體調(diào)用方法如下:

    cURL 命令

    • 發(fā)送單輪對(duì)話(huà)請(qǐng)求

      • 方式一:service/query/retrieval(Retrieval)

        curl -X 'POST'  '<service_url>service/query/retrieval' -H 'Authorization: <service_token>' -H 'accept: application/json' -H 'Content-Type: application/json'  -d '{"question": "什么是人工智能平臺(tái)PAI?"}'
        # <service_url>替換為步驟1獲取的服務(wù)訪問(wèn)地址;<service_token>替換為步驟1獲取的服務(wù)Token。
      • 方式二:/service/query/llm(LLM)

        curl -X 'POST'  '<service_url>service/query/llm' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "什么是人工智能平臺(tái)PAI?"}'
        # <service_url>替換為步驟1獲取的服務(wù)訪問(wèn)地址;<service_token>替換為步驟1獲取的服務(wù)Token。

        支持添加其他可調(diào)推理參數(shù),例如{"question":"什么是人工智能平臺(tái)PAI?", "temperature": 0.9}

      • 方式三:service/query(RAG)

        curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "什么是人工智能平臺(tái)PAI?"}'
        # <service_url>替換為步驟1獲取的服務(wù)訪問(wèn)地址;<service_token>替換為步驟1獲取的服務(wù)Token。

        支持添加其他可調(diào)推理參數(shù),例如{"question":"什么是人工智能平臺(tái)PAI?", "temperature": 0.9}。

    • 發(fā)送多輪對(duì)話(huà)請(qǐng)求

      其中對(duì)話(huà)方式RAGLLM支持發(fā)送多輪對(duì)話(huà)請(qǐng)求,以RAG對(duì)話(huà)為例,具體配置方法如下:

      # 發(fā)送請(qǐng)求。 
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "什么是人工智能平臺(tái)PAI?"}'
      
      # 傳入上述請(qǐng)求返回的session_id(對(duì)話(huà)歷史會(huì)話(huà)唯一標(biāo)識(shí)),傳入session_id后,將對(duì)話(huà)歷史進(jìn)行記錄,調(diào)用大模型將自動(dòng)攜帶存儲(chǔ)的對(duì)話(huà)歷史。
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question": "它有什么優(yōu)勢(shì)?","session_id": "ed7a80e2e20442eab****"}'
      
      # 傳入chat_history(用戶(hù)與模型的對(duì)話(huà)歷史),list中的每個(gè)元素是形式為{"user":"用戶(hù)輸入","bot":"模型輸出"}的一輪對(duì)話(huà),多輪對(duì)話(huà)按時(shí)間順序排列。
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question":"它有哪些功能?", "chat_history": [{"user":"PAI是什么?", "bot":"PAI是阿里云的人工智能平臺(tái)......"}]}'
      
      # 同時(shí)傳入session_idchat_history,會(huì)用chat_history對(duì)存儲(chǔ)的session_id所對(duì)應(yīng)的對(duì)話(huà)歷史進(jìn)行追加更新。 
      curl -X 'POST'  '<service_url>service/query' -H 'Authorization: <service_token>' -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{"question":"它有哪些功能?", "chat_history": [{"user":"PAI是什么?", "bot":"PAI是阿里云的人工智能平臺(tái)......"}], "session_id": "1702ffxxad3xxx6fxxx97daf7c"}'

    Python腳本

    • 發(fā)送單輪對(duì)話(huà)請(qǐng)求,代碼示例如下:

      import requests
      
      EAS_URL = 'http://xxxx.****.cn-beijing.pai-eas.aliyuncs.com'
      headers = {
          'accept': 'application/json',
          'Content-Type': 'application/json',
          'Authorization': 'MDA5NmJkNzkyMGM1Zj****YzM4M2YwMDUzZTdiZmI5YzljYjZmNA==',
      }
      
      
      def test_post_api_query_llm():
          url = EAS_URL + '/service/query/llm'
          data = {
             "question":"什么是人工智能平臺(tái)PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"======= Question =======\n {data['question']}")
          print(f"======= Answer =======\n {ans['answer']} \n\n")
      
      
      def test_post_api_query_retrieval():
          url = EAS_URL + '/service/query/retrieval'
          data = {
             "question":"什么是人工智能平臺(tái)PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"======= Question =======\n {data['question']}")
          print(f"======= Answer =======\n {ans['docs']}\n\n")
      
      
      def test_post_api_query_rag():
          url = EAS_URL + '/service/query'
          data = {
             "question":"什么是人工智能平臺(tái)PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"======= Question =======\n {data['question']}")
          print(f"======= Answer =======\n {ans['answer']}")
          print(f"======= Retrieved Docs =======\n {ans['docs']}\n\n")
      # LLM
      test_post_api_query_llm()
      # Retrieval
      test_post_api_query_retrieval()
      # RAG(Retrieval+LLM)
      test_post_api_query_rag()
      

      其中:EAS_URL配置為RAG服務(wù)的訪問(wèn)地址,您需要將訪問(wèn)地址末尾的/刪除;Authorization配置為RAG服務(wù)的Token。

    • 發(fā)送多輪對(duì)話(huà)請(qǐng)求

      LLMRAG(Retrieval+LLM)支持發(fā)送多輪對(duì)話(huà)請(qǐng)求,代碼示例如下:

      import requests
      
      EAS_URL = 'http://xxxx.****.cn-beijing.pai-eas.aliyuncs.com'
      headers = {
          'accept': 'application/json',
          'Content-Type': 'application/json',
          'Authorization': 'MDA5NmJkN****jNlMDgzYzM4M2YwMDUzZTdiZmI5YzljYjZmNA==',
      }
      
      
      def test_post_api_query_llm_with_chat_history():
          url = EAS_URL + '/service/query/llm'
          # Round 1 query
          data = {
             "question":"什么是人工智能平臺(tái)PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
          print(f"=======Round 1: Question =======\n {data['question']}")
          print(f"=======Round 1: Answer =======\n {ans['answer']} session_id: {ans['session_id']} \n")
         
          # Round 2 query
          data_2 = {
             "question": "它有什么優(yōu)勢(shì)?",
             "session_id": ans['session_id']
          }
          response_2 = requests.post(url, headers=headers, json=data_2)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans_2 = dict(response_2.json())
          print(f"=======Round 2: Question =======\n {data_2['question']}")
          print(f"=======Round 2: Answer =======\n {ans_2['answer']} session_id: {ans_2['session_id']} \n\n")
      
      
      def test_post_api_query_rag_with_chat_history():
          url = EAS_URL + '/service/query'
         
          # Round 1 query
          data = {
             "question":"什么是人工智能平臺(tái)PAI?"
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
      
          print(f"=======Round 1: Question =======\n {data['question']}")
          print(f"=======Round 1: Answer =======\n {ans['answer']} session_id: {ans['session_id']}")
          print(f"=======Round 1: Retrieved Docs =======\n {ans['docs']}\n")
      
          # Round 2 query
          data = {
             "question":"它可以做什么?",
             "session_id": ans['session_id']
          }
          response = requests.post(url, headers=headers, json=data)
      
          if response.status_code != 200:
              raise ValueError(f'Error post to {url}, code: {response.status_code}')
          ans = dict(response.json())
      
          print(f"=======Round 2: Question =======\n {data['question']}")
          print(f"=======Round 2: Answer =======\n {ans['answer']} session_id: {ans['session_id']}")
          print(f"=======Round 2: Retrieved Docs =======\n {ans['docs']}")
      # LLM
      test_post_api_query_llm_with_chat_history()
      # RAG(Retrieval+LLM)
      test_post_api_query_rag_with_chat_history()
      

      其中:EAS_URL配置為RAG服務(wù)的訪問(wèn)地址,您需要將訪問(wèn)地址末尾的/刪除;Authorization配置為RAG服務(wù)的Token。

相關(guān)文檔

通過(guò)EAS,您還可以完成以下場(chǎng)景化部署:

  • 部署支持WebUIAPI調(diào)用的LLM大語(yǔ)言模型,并在部署LLM應(yīng)用后,利用LangChain框架集成企業(yè)知識(shí)庫(kù),實(shí)現(xiàn)智能問(wèn)答和自動(dòng)化功能。詳情請(qǐng)參見(jiàn)5分鐘使用EAS一鍵部署LLM大語(yǔ)言模型應(yīng)用

  • 部署基于ComfyUIStable Video Diffusion模型的AI視頻生成服務(wù),幫助您完成社交平臺(tái)短視頻內(nèi)容生成、動(dòng)畫(huà)制作等任務(wù)。詳情請(qǐng)參見(jiàn)AI視頻生成-ComfyUI部署。

  • 一鍵部署基于Stable Diffusion WebUI的服務(wù)。詳情請(qǐng)參見(jiàn)AI繪畫(huà)-SDWebUI部署。

常見(jiàn)問(wèn)題

如何關(guān)閉RAG服務(wù)的with chat history功能

RAG服務(wù)的WebUI頁(yè)面中,去勾選Chat history復(fù)選框。image