全部產品
Search
文件中心

Platform For AI:基於EAS&Elasticsearch搭建RAG檢索增強對話系統

更新時間:Aug 03, 2024

您可以在大模型RAG服務中整合Elasticsearch資訊檢索組件,來增強模型產生答案的準確性和資訊豐富度。Elasticsearch不僅具有高效檢索能力,還提供了詞表配置、索引管理等特色功能,使RAG對話系統能夠更準確地理解查詢意圖,提供更為貼切和有價值的反饋。本文為您介紹如何在部署RAG服務時關聯Elasticsearch,以及對RAG對話系統的基礎功能和Elasticsearch的特色功能進行說明。

背景資訊

EAS簡介

EAS(Elastic Algorithm Service)是PAI的模型線上服務平台,支援將模型部署為線上推理服務和AI-Web應用。EAS提供了彈性擴縮容和藍綠部署等功能,可以支撐您以較低的資源成本擷取高並發且穩定的線上演算法模型服務。此外,EAS具備資源群組管理和版本控制等功能,並且有完整營運監控體系等能力。更詳細的內容介紹,請參見EAS模型服務概述

RAG簡介

隨著AI技術的飛速發展,產生式人工智慧在文本產生、映像⽣成等領域展現出了令人矚目的成就。然而,在廣泛應用大語⾔模型(LLM)的過程中,⼀些固有局限性逐漸顯現:

  • 領域知識局限:大語言模型通常基於大規模通用資料集訓練而成,難以針對專業垂直領域提供深入和針對性處理。

  • 資訊更新滯後:由於模型訓練所依賴的資料集具有靜態特性,大模型無法即時擷取和學習最新的資訊與知識進展。

  • 模型誤導性輸出:受制於資料偏差、模型內在缺陷等因素,大語言模型可能會出現看似合理實則錯誤的輸出,即所謂的“大模型幻覺”。

為克服這些挑戰,並進一步強化大模型的功能性和準確性,檢索增強產生技術RAG(Retrieval-Augmented Generation)應運而生。這一技術通過整合外部知識庫,能夠顯著減少大模型虛構的問題,並提升其擷取及應用最新知識的能力,從而實現更個人化和精準化的LLM定製。

Elasticsearch簡介

Elasticsearch是基於開源Elasticsearch構建的全託管Elasticsearch雲端服務,在100%相容開源功能的同時,支援開箱即用、按需付費。不僅提供雲上開箱即用的Elasticsearch、Logstash、Kibana、Beats在內的Elastic Stack生態組件,還與Elastic官方合作提供免費X-Pack(白金版進階特性)商業外掛程式,整合了安全、SQL、機器學習、警示、監控等進階特性,被廣泛應用於即時日誌分析處理、資訊檢索、以及資料的多維查詢和統計分析等情境。更多關於Elasticsearch的詳細介紹,請參見什麼是Elasticsearch

使用流程

EAS自建了RAG系統化解決方案,提供了靈活可調的參數配置,您可以通過WebUI或者API調用RAG服務,定製自己專屬的對話系統。RAG技術架構的核心為檢索和產生:

  • 在檢索方面,EAS支援多種向量資料庫,包括開源的Faiss和阿里雲的產品Milvus、Elasticsearch、Hologres、AnalyticDB for PostgreSQL。

  • 在產生方面,EAS支援豐富的開源模型,如通義千問、Llama、Mistral、百川等,同時支援ChatGPT調用。

本方案以Elasticsearch為例,為您介紹如何使用EAS與Elasticsearch構建一個大模型RAG對話系統。具體流程如下:

  1. 準備向量檢索庫Elasticsearch

    首先建立Elasticsearch執行個體,並準備部署RAG服務關聯Elasticsearch執行個體時依賴的配置項。

  2. 部署RAG服務並關聯Elasticsearch

    在EAS模型線上服務平台部署RAG服務,並關聯Elasticsearch執行個體。

  3. 使用RAG對話系統

    您可以在RAG對話系統中串連Elasticsearch,上傳業務資料檔案,並進行知識問答。同時,Elasticsearch還支援詞表配置、索引管理等特色功能,提升了搜尋品質。

前提條件

已建立Virtual Private Cloud、交換器和安全性群組。具體操作,請參見搭建IPv4專用網路建立安全性群組

使用限制

向量檢索庫和EAS必須在相同地區下。

注意事項

本實踐受制於LLM服務的最大Token數量限制,旨在協助您體驗RAG對話系統的基本檢索功能:

  • 該對話系統受制於LLM服務的伺服器資源大小以及預設Token數量限制,能支援的對話長度有限。

  • 如果無需進行多輪對話,建議您關閉RAG服務的with chat history功能,這樣能有效減少達到限制的可能性。詳情請參見如何關閉RAG服務的with chat history功能

準備向量檢索庫Elasticsearch

步驟一:建立Elasticsearch執行個體

  1. 登入Elasticsearch控制台
  2. 在左側導覽列,單擊Elasticsearch執行個體
  3. Elasticsearch執行個體頁面左上方,單擊建立,並配置以下關鍵參數,其他參數配置說明,請參見建立Elasticsearch執行個體

    參數

    描述

    地區和可用性區域

    選擇與EAS服務相同的地區。

    執行個體類型

    選擇通用商業版

    情境初始化配置

    選擇通用情境

    登入密碼

    配置登入密碼,並儲存到本地。

  4. 單擊立即購買,進入確認訂單頁面,確認執行個體配置無誤後,選中服務合約,單擊立即開通

步驟二:準備配置項

  1. 準備Elasticsearch URL。

    1. Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區,在執行個體列表中單擊已建立的ES執行個體ID。

    2. 基本資料地區,擷取私網地址和相應連接埠號碼,並拼接成Elasticsearch URL。image

      格式為http://<私網地址>:<私網連接埠>

      重要

      當使用私網地址時,需確保ES執行個體和PAI-RAG服務位於同一VPC內,否則串連失敗。

  2. 準備索引名稱

    1. Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區,在執行個體列表中單擊已建立的ES執行個體ID。

    2. 在左側導覽列選擇配置與管理 > ES叢集配置

    3. YML檔案配置地區右側,單擊修改配置

    4. YML檔案配置面板中,修改自動建立索引允許自動建立索引,並在其他Configure配置地區選中複選框,然後單擊確定image

    完成配置後,您在部署PAI-RAG服務時即可自訂索引名稱,例如es-test。

  3. 準備ES User和password。

    ES User預設為elastic,ES password是您在建立ES執行個體時設定的登入密碼。如果您忘記了登入密碼,可以按照以下操作步驟重設密碼:

    1. Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區,在執行個體列表中單擊已建立的ES執行個體ID。

    2. 在左側導覽列選擇配置與管理 > 安全配置

    3. 叢集訪問設定地區,單擊ES執行個體訪問密碼後的重設密碼

    4. 重設密碼配置面板中,設定密碼後,單擊確定

部署RAG服務並關聯Elasticsearch

  1. 進入模型線上服務(EAS)頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。

    3. 在工作空間頁面的左側導覽列選擇模型部署 > 模型線上服務(EAS),進入模型線上服務(EAS)頁面。

  2. 模型線上服務頁面,單擊部署服務,在情境化模型部署地區,單擊大模型RAG對話系統部署6eea7736f88e6ec8b3b900e4d028bb48

  3. 部署大模型RAG對話系統頁面,配置以下關鍵參數,其他參數配置說明,請參見步驟二:部署RAG服務

    參數

    描述

    向量檢索庫設定

    版本類型

    選擇Elasticsearch。

    私網地址/連接埠

    配置為步驟二中已擷取的Elasticsearch URL。

    索引名稱

    輸入新的索引名稱或已存在的索引名稱。對於已存在的索引名稱,索引結構應符合PAI-RAG要求,例如可以填寫之前通過EAS部署RAG服務時自動建立的索引。

    帳號

    配置為elastic。

    密碼

    配置為步驟二中已設定的登入密碼。

    專用網路配置

    VPC

    請確保所配置的專用網路與Elasticsearch執行個體保持一致。

    交換器

    安全性群組名稱

  4. 參數配置完成後,單擊部署

使用RAG對話系統

RAG對話系統基礎功能支援

RAG對話系統的基本使用方法如下,更多詳細介紹,請參見大模型RAG對話系統

配置RAG對話系統

  1. RAG服務部署成功後,單擊服務方式列下的查看Web應用,啟動WebUI頁面。

  2. 配置機器學習模型。

    • Embedding Model Name:系統內建了四種Embedding模型供您選擇,能夠將本文內容轉化為Embedding向量形式。您可以根據情境需要選擇更適合業務的Embedding模型。

    • Embedding Dimension:選擇Embedding Model Name後,系統將自動進行配置,無需您手動操作。

  3. 測試向量檢索庫Elasticsearch串連是否正常。

    系統已自動識別並應用了部署服務時配置的向量檢索庫設定,您可以單擊Connect Elasticsearch,來驗證Elasticsearch執行個體是否串連正常。如果串連失敗,請參考步驟二:準備配置項,檢查向量檢索庫配置是否正確,修改對應配置項為正確配置,然後單擊Connect Elasticsearch,重新串連Elasticsearch執行個體。

上傳指定的業務資料檔案

Upload頁簽中,上傳指定的業務資料檔案,類型為.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html。

image

  1. 設定語義切塊參數。

    樣本

    說明

    rag_chatbot_test_doc.txt

    通過配置以下參數來控制文檔切塊粒度的大小和進行QA資訊提取:

    • Chunk Size:指定每個分塊的大小,單位為位元組,預設為500。

    • Chunk Overlap:表示相鄰分塊之間的重疊量,預設為10。

    • Process with QA Extraction Model:通過選中Yes複選框啟動QA資訊提取功能,系統將在您上傳業務資料檔案後自動抽取出QA對,以獲得更好的檢索和回答效果。

  2. FilesDirectory頁簽下上傳業務資料檔案(支援多檔案上傳)或對應目錄。

  3. 單擊Upload,系統會先對上傳的檔案進行資料清洗(文本提取、超連結替換等)和語義切塊,然後進行上傳。

配置問答策略

Chat頁簽,支援以下三種向量檢索方式,您可以根據情境需要進行選擇:

  • Embedding Only:向量資料庫線索召回。

  • Keyword Only:關鍵詞檢索召回。

  • Hybrid:向量資料庫和關鍵詞檢索多路召回融合。

image

進行知識問答

將檢索返回的結果與使用者的問題輸入至已選擇的Prompt模板中,送入EAS-LLM服務,從中擷取問答結果。

image

Elasticsearch特色功能支援

分詞/停用詞表個人化

Elasticsearch內建了IK分詞外掛程式(analysis-ik)。IK分詞器就像是一個詞典,收納了各類常用詞,能夠將語句按照詞語進行拆分,而不是拆分為獨立的漢字。IK內建了主分詞詞庫和停用詞詞庫,主分詞詞庫能夠處理複雜的中文文本分詞,而停用詞詞庫能夠去除無意義的高頻詞(如“的”、“是”、“在”等),二者都能提高檢索的效率和準確性。儘管IK分詞外掛程式內建的詞庫比較強大,但是在特定領域(如法律、醫學等)往往存在大量專業術語,或者知識庫還可能存在一些產品名稱、公司名稱和品牌名稱等,這些詞彙可能不在預設的詞庫中,您可以根據具體業務需求來設定自訂詞表,以獲得更準確的檢索效果。更多關於Elasticsearch的IK分詞外掛程式的介紹,請參見使用IK分詞外掛程式(analysis-ik)

1.準備分詞/停用詞表

在本地準備一份自訂的分詞表或停用詞表:

  • 詞表格式:.dic類型的檔案,例如new_word.dic。

  • 內容要求:在詞表檔案中,按行添加新詞或停用詞。以分詞表為例,使用內建分詞表,會把“雲端服務器”分為“雲”和“伺服器”兩個詞,按照業務需求希望將其作為一個詞,您可以將“雲端服務器”加入新詞表中,new_word.dic檔案內容樣本如下:

    雲端服務器
    自訂分詞
2.上傳詞表檔案

準備好詞表檔案後,您需要將詞表檔案上傳到指定位置。具體操作步驟如下:

  1. 進入Elasticsearch執行個體頁面

    1. 登入Elasticsearch控制台
    2. 在左側導覽列,單擊Elasticsearch執行個體
    3. Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區。

    4. 在執行個體列表中,單擊目標Elasticsearch執行個體ID。

  2. 在左側導覽列,選擇配置與管理 > 外掛程式配置

  3. 更新Elasticsearch執行個體的詞典。

    支援熱更新和冷更新兩種方式,以熱更新為例,具體操作步驟如下:

    說明
    • Elasticsearch 7.16及以上版本的執行個體和部分地區的雲端式原生管控的執行個體不支援IK詞典冷更新。

    • IK熱更新不支援修改系統內建的主詞典,如果您需要修改系統主詞典請使用IK冷更新的方式。

    • 熱更新生效方式:

      第一次上傳詞典檔案時,會對整個叢集的詞典進行更新,需要重啟叢集才會生效;二次上傳同名檔案不會觸發叢集重啟,在運行過程中直接載入詞庫。

    1. 系統預設外掛程式列表頁簽的搜尋文字框中,輸入analysis-ik並按斷行符號鍵。

    2. 單擊analysis-ik外掛程式操作列下的熱更新,然後在熱更新配置面板中,單擊配置

    3. 熱更新配置面板中,選擇詞典的更新方式,並按照以下說明上傳詞典檔案。

      更新方式

      說明

      上傳DIC檔案

      在下拉式清單中,選擇上傳DIC檔案。然後單擊上傳DIC檔案,並按照控制台操作指引,上傳已準備好的分詞詞表和停用詞詞表。image

      添加OSS檔案

      在下拉式清單中,選擇添加OSS檔案。然後輸入OSS儲存空間(Bucket)名稱詞表檔案名稱後,單擊添加image

      說明
      • 請確保Bucket與當前Elasticsearch執行個體在同一地區下,且檔案為DIC格式的檔案。

      • 當源端(OSS)的檔案內容發生變化後,您需要重新手動設定上傳才會生效,不支援自動同步更新。

      • 如果出現“受OSS Bucket授權策略限制,暫無法訪問您的OSS Bucket”的錯誤提示,請單擊進行授權,並按控制台操作指引完成授權操作。

    4. 上傳詞表檔案後,選中“該操作會重啟執行個體,請確認後操作。”複選框,並單擊儲存

      儲存後,Elasticsearch執行個體會進行滾動重啟,等待滾動重啟結束後,詞典會自動生效。

  4. (可選)更新已上傳的詞表檔案。

    當詞表使用一段時間後,如果您需要擴充或減少詞典中的內容,可以按照以下操作步驟修改上傳的詞表檔案。

    1. 熱更新配置面板中,先刪除之前上傳的同名詞表檔案,再按照上述操作步驟重新上傳修改過的同名詞表檔案。

    2. 單擊儲存

      說明

      因修改的是已存在的同名詞表檔案的內容,所以本次上傳修改過的同名詞表檔案不需要滾動重啟整個叢集。

  5. 更新詞表檔案後,在RAG服務的WebUI頁面重連Elasticsearch。具體操作,請參見配置RAG對話系統

    重連Elasticsearch後,在WebUI頁面進行知識問答。當向量檢索方式選擇Keyword Only(關鍵詞檢索)或Hybrid(向量檢索+關鍵詞檢索)時,則可以使用更新詞表後的Elasticsearch進行全文檢索索引。

索引管理

Elasticsearch提供了索引管理功能,管理好索引是確保RAG對話系統能夠高效、準確地從大量資訊中檢索出有價值內容,並產生高品質回答的基礎。具體操作步驟如下:

  1. 進入Elasticsearch執行個體頁面

    1. 登入Elasticsearch控制台
    2. 在左側導覽列,單擊Elasticsearch執行個體
    3. Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區。

    4. 在執行個體列表中,單擊目標Elasticsearch執行個體ID。

  2. 在左側導覽列,選擇配置與管理 > 可視化控制

  3. Kibana地區,單擊修改配置,配置Kibana訪問白名單,以公網訪問為例,具體操作,請參見配置Kibana公網或私網訪問白名單

  4. 登入Kibana控制台。

    1. 單擊右上方的image,然後單擊頁面左上方的返回表徵圖,返回可視化控制頁面。

    2. Kibana地區,單擊公網入口image

    3. 在Kibana登入頁面,輸入使用者名稱和密碼。

    4. 單擊登入,進入的介面如下圖所示。image

  5. 查看並管理索引。

    1. 在Kibana控制台單擊左上方的image,然後在下拉式清單中選擇Management > Stack Management

    2. 在左側導覽列資料地區,單擊索引管理

    3. 在右側索引頁簽,查看相應的索引(例如已建立的索引es_test),並進行包括關閉索引、重新整理索引、清空索引以及刪除索引等管理操作。image

相關文檔

  • 針對AIGC和LLM的典型前沿情境,EAS提供了簡化的部署方式。您可以很方便地一鍵拉起服務,包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。詳情請參見EAS情境化部署說明

  • RAG服務WebUI介面提供了豐富的推理參數配置選項,以滿足多樣化需求。此外,RAG服務也支援通過API介面進行調用。具體實現細節以及參數配置說明,請參見大模型RAG對話系統