為了增強模型生成答案的準確性和信息豐富度,您可以在大模型RAG服務中集成OpenSearch向量檢索版產品。該產品支持多種向量檢索算法,高性能支持多種典型場景,并提供圖形化界面,您可以查看索引信息并實現簡單的數據管理功能。通過集成OpenSearch向量檢索版產品,可以提升RAG對話系統的檢索效率和用戶體驗。本文將介紹如何在部署RAG服務時關聯OpenSearch向量檢索版產品,以及對RAG對話系統的基礎功能和OpenSearch向量檢索版的特色功能進行說明。
背景信息
EAS簡介
EAS(Elastic Algorithm Service)是PAI的模型在線服務平臺,支持將模型部署為在線推理服務和AI-Web應用。EAS提供了彈性擴縮容和藍綠部署等功能,可以支撐您以較低的資源成本獲取高并發且穩定的在線算法模型服務。此外,EAS具備資源組管理和版本控制等功能,并且有完整運維監控體系等能力。更詳細的內容介紹,請參見EAS模型服務概述。
RAG簡介
隨著AI技術的飛速發展,生成式人工智能在文本生成、圖像生成等領域展現出了令人矚目的成就。然而,在廣泛應用大語言模型(LLM)的過程中,一些固有局限性逐漸顯現:
領域知識局限:大語言模型通常基于大規模通用數據集訓練而成,難以針對專業垂直領域提供深入和針對性處理。
信息更新滯后:由于模型訓練所依賴的數據集具有靜態特性,大模型無法實時獲取和學習最新的信息與知識進展。
模型誤導性輸出:受制于數據偏差、模型內在缺陷等因素,大語言模型可能會出現看似合理實則錯誤的輸出,即所謂的“大模型幻覺”。
為克服這些挑戰,并進一步強化大模型的功能性和準確性,檢索增強生成技術RAG(Retrieval-Augmented Generation)應運而生。這一技術通過整合外部知識庫,能夠顯著減少大模型虛構的問題,并提升其獲取及應用最新知識的能力,從而實現更個性化和精準化的LLM定制。
OpenSearch簡介
阿里云OpenSearch向量檢索版,是一款全托管的大規模分布式向量檢索產品,支持多種向量檢索算法,高精度下性能表現優異,能完成海量數據下的高性價比向量索引構建和相似度檢索服務,支持索引水平拓展與合并、索引流式構建,數據能夠做到實時動態更新,即增即查。
阿里云OpenSearch向量檢索版可以高性能支持多種向量檢索典型場景,如:RAG檢索增強生成、多模態檢索、個性化搜推等。更詳細的內容介紹,請參見OpenSearch向量檢索版介紹。
使用流程
EAS自建了RAG系統化解決方案,提供了靈活可調的參數配置,您可以通過WebUI或者API調用RAG服務,定制自己專屬的對話系統。RAG技術架構的核心為檢索和生成:
在檢索方面,EAS支持多種向量檢索庫,包括開源的Faiss和阿里云的Milvus、Elasticsearch、Hologres、OpenSearch以及RDS PostgreSQL。
在生成方面,EAS支持豐富的開源模型,例如通義千問、Llama、Mistral、百川等,同時支持ChatGPT調用。
本方案以OpenSearch為例,為您介紹如何使用EAS與阿里云OpenSearch向量檢索版構建一個大模型RAG對話系統。整體流程大約花費20分鐘,具體流程如下:
首先創建OpenSearch向量檢索版實例,并準備部署RAG服務關聯該實例時依賴的配置項。
在EAS模型在線服務平臺部署RAG服務,并關聯OpenSearch向量檢索版實例。
您可以在RAG對話系統中連接OpenSearch,上傳業務數據文件,并進行知識問答。
前提條件
已創建專有網絡VPC、交換機和安全組。具體操作,請參見搭建IPv4專有網絡和創建安全組。
注意事項
本實踐受制于LLM服務的最大Token數量限制,旨在幫助您體驗RAG對話系統的基本檢索功能:
該對話系統受制于LLM服務的服務器資源大小以及默認Token數量限制,能支持的對話長度有限。
如果無需進行多輪對話,建議您在RAG服務的WebUI頁面關閉with chat history功能,這樣能有效減少達到限制的可能性。詳情請參見如何關閉RAG服務的with chat history功能。
準備向量檢索庫OpenSearch
步驟一:創建OpenSearch向量檢索版實例
進入OpenSearch控制臺,在左上角切換到OpenSearch-向量檢索版:
在實例列表頁面,創建OpenSearch向量檢索版實例。其中關鍵參數配置如下,更多配置說明,請參見購買OpenSearch向量檢索版實例。
參數
描述
商品版本
選擇向量檢索版。
專有網絡
選擇已創建的專有網絡和交換機。
虛擬交換機
用戶名
OpenSearch向量檢索實例的用戶名。
用戶密碼
OpenSearch向量檢索實例的密碼。
步驟二:準備配置項
1.準備實例ID
在實例列表頁面,查看OpenSearch向量檢索版的實例ID,并保存到本地。
2.準備索引表
實例創建成功后,會進入待配置狀態。您需要為該實例配置表基礎信息>數據同步>字段配置>索引結構,之后等待索引重建完成即可正常搜索。具體操作步驟如下:
單擊待配置實例操作列下的配置。
進行表基礎信息配置,參數配置完成后,單擊下一步。
其中關鍵參數說明如下,其他參數配置說明,請參見通用版快速入門。
表名稱:自定義索引表名稱。
數據分片數:如果您購買了查詢節點,則在分片數設置時,可配置為不超過256的正整數, 用于提升全量構建速度、單次查詢性能。如果未購買查詢節點,則數據分片數只能配置為1。
數據更新資源數:數據更新所用資源數,每個索引默認免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考向量檢索版計費概述
場景模板:選擇通用模板。
進行數據同步配置,參數配置完成后,單擊下一步。
其中全量數據來源支持三種數據源方式,您可以根據具體業務情況進行選擇:
MaxCompute+API:使用MaxCompute進行數據全量寫入,實時數據通過API寫入。使用該方式時,具體參數配置說明,請參見MaxCompute + API 數據源。
對象存儲OSS+API:使用OSS進行數據全量寫入,實時數據通過API寫入。使用該方式時,具體參數配置說明,請參見OSS + API 數據源。
API:全量與實時數據均通過API寫入。
進行字段配置,參數配置完成后,單擊下一步。
將以下字段配置文件示例內容保存為JSON文件,然后單擊右上角的導入字段索引結構,并按控制臺操作指引導入索引文件。導入后,將基于文件內容填寫字段配置和索引結構。
{ "schema": { "summarys": { "parameter": { "file_compressor": "zstd" }, "summary_fields": [ "id", "embedding", "file_path", "file_name", "file_type", "node_content", "node_type", "doc_id", "text", "source_type" ] }, "file_compress": [ { "name": "file_compressor", "type": "zstd" }, { "name": "no_compressor", "type": "" } ], "indexs": [ { "index_fields": [ { "boost": 1, "field_name": "id" }, { "boost": 1, "field_name": "embedding" } ], "indexer": "aitheta2_indexer", "index_name": "embedding", "parameters": { "enable_rt_build": "true", "min_scan_doc_cnt": "20000", "vector_index_type": "Qc", "major_order": "col", "builder_name": "QcBuilder", "distance_type": "SquaredEuclidean", "embedding_delimiter": ",", "enable_recall_report": "true", "ignore_invalid_doc": "true", "is_embedding_saved": "false", "linear_build_threshold": "5000", "dimension": "1536", "rt_index_params": "{\"proxima.oswg.streamer.segment_size\":2048}", "search_index_params": "{\"proxima.qc.searcher.scan_ratio\":0.01}", "searcher_name": "QcSearcher", "build_index_params": "{\"proxima.qc.builder.quantizer_class\":\"Int8QuantizerConverter\",\"proxima.qc.builder.quantize_by_centroid\":true,\"proxima.qc.builder.optimizer_class\":\"BruteForceBuilder\",\"proxima.qc.builder.thread_count\":10,\"proxima.qc.builder.optimizer_params\":{\"proxima.linear.builder.column_major_order\":true},\"proxima.qc.builder.store_original_features\":false,\"proxima.qc.builder.train_sample_count\":3000000,\"proxima.qc.builder.train_sample_ratio\":0.5}" }, "index_type": "CUSTOMIZED" }, { "has_primary_key_attribute": true, "index_fields": "id", "is_primary_key_sorted": false, "index_name": "id", "index_type": "PRIMARYKEY64" }, { "index_fields": "file_path", "index_name": "file_path", "index_type": "STRING" }, { "index_fields": "file_name", "index_name": "file_name", "index_type": "STRING" }, { "index_fields": "file_type", "index_name": "file_type", "index_type": "STRING" }, { "index_fields": "node_content", "index_name": "node_content", "index_type": "STRING" }, { "index_fields": "node_type", "index_name": "node_type", "index_type": "STRING" }, { "index_fields": "doc_id", "index_name": "doc_id", "index_type": "STRING" }, { "index_fields": "text", "index_name": "text", "index_type": "STRING" }, { "index_fields": "source_type", "index_name": "source_type", "index_type": "STRING" } ], "attributes": [ { "file_compress": "no_compressor", "field_name": "id" }, { "file_compress": "no_compressor", "field_name": "embedding" }, { "file_compress": "no_compressor", "field_name": "file_path" }, { "file_compress": "no_compressor", "field_name": "file_name" }, { "file_compress": "no_compressor", "field_name": "file_type" }, { "file_compress": "no_compressor", "field_name": "node_content" }, { "file_compress": "no_compressor", "field_name": "node_type" }, { "file_compress": "no_compressor", "field_name": "doc_id" }, { "file_compress": "no_compressor", "field_name": "text" }, { "file_compress": "no_compressor", "field_name": "source_type" } ], "fields": [ { "compress_type": "uniq", "field_type": "STRING", "field_name": "id" }, { "user_defined_param": { "multi_value_sep": "," }, "multi_value": true, "compress_type": "uniq", "field_type": "FLOAT", "field_name": "embedding" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "file_path" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "file_name" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "file_type" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "node_content" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "node_type" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "doc_id" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "text" }, { "compress_type": "uniq", "field_type": "STRING", "field_name": "source_type" } ], "table_name": "abc" }, "extend": { "description": [], "vector": [ "embedding" ], "embeding": [] } }
進行索引結構配置,參數配置完成后,單擊下一步。
其中關鍵配置說明如下,其他參數配置說明,請參見向量索引通用配置。
向量維度:設置為512。
距離類型:建議選擇InnerProduct。
在確認創建配置向導頁面,單擊確認創建。
系統將自動跳轉至表管理頁面,當狀態為使用中時,表明索引表創建成功。
3.為OpenSearch向量檢索版實例開通公網訪問功能
目前,EAS只能通過公網訪問OpenSearch,需要具備訪問公網的能力。因此,您需要為EAS添加VPC,并為該VPC綁定NAT網關和彈性公網IP(EIP)。同時,為確保OpenSearch實例能夠接收來自EAS實例的公網請求,您需要為OpenSearch開通公網訪問,并將上述EIP地址加入白名單。以下內容為您介紹如何為EAS的VPC配置公網訪問OpenSearch功能,EAS可以使用與OpenSearch相同的VPC,也可以使用其他VPC。
為后續部署RAG服務時綁定的專有網絡(VPC)配置公網訪問功能。具體操作,請參見使用公網NAT網關SNAT功能訪問互聯網。
查看已綁定的彈性公網IP地址。
登錄專有網絡管理控制臺。單擊專有網絡實例ID,并切換到資源管理頁簽。
單擊已綁定的公網NAT網關,進入公網NAT網關頁面。
單擊公網NAT網關實例ID,進入基本信息頁面。
單擊綁定的彈性公網IP,查看已綁定的彈性公網IP地址,并保存到本地。
在OpenSearch向量檢索版實例列表頁面,單擊目標實例名稱,進入實例詳情頁面。
在網絡信息區域,打開公網訪問開關,并在修改公網訪問白名單配置面板中,按照控制臺操作指引,將上述步驟已查詢的彈性公網IP配置為公網訪問白名單。
在網絡信息區域,將公網域名后的訪問地址保存到本地。
4.查看實例用戶名和密碼
即在創建OpenSearch向量檢索版實例時,輸入的用戶名和密碼。您可以在實例詳情頁面的API入口區域查看。
部署RAG服務并關聯OpenSearch
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
在模型在線服務(EAS)頁面,單擊部署服務,然后在場景化模型部署區域,單擊大模型RAG對話系統部署。
在部署大模型RAG對話系統頁面,配置以下關鍵參數,其他參數配置說明,請參見步驟一:部署RAG服務。
參數
描述
基本信息
模型來源
選擇開源公共模型。
模型類別
選擇模型類別,本方案以大模型Qwen1.5-1.8b為例。
資源配置
資源配置選擇
系統會根據已選擇的模型類別,自動推薦適合的資源規格。更換至其他資源規格,可能會導致模型服務啟動失敗。
向量檢索庫設置
版本類型
選擇OpenSearch。
訪問地址
配置為步驟二中已獲取的公網域名,不帶http://或https://,例如ha-cn-****.public.ha.aliyuncs.com。
實例id
配置為步驟二中已獲取的OpenSearch向量檢索版實例的ID。
用戶名
配置為創建OpenSearch向量檢索版實例時設置的用戶名。
密碼
配置為創建OpenSearch向量檢索版實例時設置的密碼。
表名稱
配置為步驟二中已創建的索引表名稱。
專有網絡配置
VPC
您可以選擇與OpenSearch一致的專有網絡和交換機。
您也可以使用其他專有網絡,但需要確保該專有網絡具有公網訪問能力,并將綁定的彈性公網IP添加為OpenSearch實例的公網訪問白名單。具體操作,請參見使用公網NAT網關SNAT功能訪問互聯網和公網白名單配置。
交換機
安全組
選擇安全組。
參數配置完成后,單擊部署。
使用RAG對話系統
RAG對話系統的基本使用方法如下,更多詳細介紹,請參見大模型RAG對話系統。
1、配置RAG對話系統
RAG服務部署成功后,單擊服務方式列下的查看Web應用,啟動WebUI頁面。
測試向量檢索庫OpenSearch連接是否正常。
系統已自動識別并應用了部署服務時配置的向量檢索庫設置,您可以單擊Connect OpenSearch,來驗證OpenSearch向量檢索版實例是否連接正常。如果連接失敗,請參考步驟二:準備配置項,檢查向量檢索庫配置是否正確,修改對應配置項為正確配置,然后單擊Connect OpenSearch,重新連接OpenSearch實例。
2、上傳企業知識庫文件
您可以按照以下流程上傳您的企業知識庫文件,系統會自動按照PAI-RAG格式將知識庫存儲到向量檢索庫中,以方便您進行后續的知識檢索。您也可以利用向量檢索庫中已有的知識庫,但必須符合PAI-RAG格式要求,否則可能會導致檢索報錯。
在Upload頁簽,設置語義分塊參數。
通過配置以下參數來控制文檔分塊粒度的大小和進行QA信息提取:
參數
描述
Chunk Size
指定每個文本分塊的大小,單位為字節,默認為500。
Chunk Overlap
表示相鄰分塊之間的重疊量,默認為10。
Process with QA Extraction Model
通過選中Yes復選框啟動QA信息提取功能,系統將在您上傳企業知識庫文件后自動抽取出QA對,以獲得更好的檢索和回答效果。
在Files或Directory頁簽下上傳企業知識庫文件(支持多文件上傳)或對應目錄。支持的文件類型為.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html,例如rag_chatbot_test_doc.txt。
單擊Upload,系統會先對上傳的文件進行數據清洗(包括文本提取、超鏈接替換等)和語義切塊,然后進行上傳。
3、進行知識問答
將檢索返回的結果與用戶的問題輸入至已選擇的Prompt模板中,送入EAS-LLM服務,從中獲取問答結果。
OpenSearch特色功能支持
阿里云OpenSearch向量檢索版為客戶提供了便捷的圖形化界面,可以高效管理索引表(Table)以及索引(Index),以下內容將為您介紹,如何使用OpenSearch向量檢索版控制臺,查看索引信息并實現簡單的數據管理。
索引表管理
進入阿里云OpenSearch向量檢索版實例詳情頁面。
單擊已創建的實例ID,進入實例詳情頁面。
進入表管理頁面,對索引表進行管理操作。
在左側導航欄,單擊表管理。
頁面中展示當前實例下創建的所有表。
在表管理頁面,對索引表進行管理操作,包括查看字段及索引結構、編輯索引、索引重建以及刪除索引等。具體操作細節,請參見表管理。
數據管理
進入阿里云OpenSearch向量檢索版實例詳情頁面。
單擊已創建的實例ID,進入實例詳情頁面。
添加數據。
在左側導航欄,單擊
。在頁面右側下拉列表中,選擇表單模式或開發者模式。
選擇要添加數據的目標索引表(Table)名稱。
按字段輸入數據內容或填寫數據寫入語句,然后單擊添加。具體操作請參見:添加數據。
當執行結果出現
"message": "success"
時,表示數據上傳成功,即可完成單條數據或多條數據的添加。
查看表指標數據。
在左側導航欄,單擊
。選擇要查看數據的目標索引表(Table)名稱,即可查看索引內文檔個數、每秒請求成功次數等指標。詳情請參見表指標。
刪除數據。
在左側導航欄,選擇
。在頁面右側下拉列表中,選擇表單模式或開發者模式。
選擇表名并輸入主鍵,然后單擊刪除。具體操作請參見:刪除數據。
當執行結果出現
"message": "success"
時,表示數據刪除成功。
相關文檔
針對AIGC和LLM的典型前沿場景,EAS提供了簡化的部署方式。您可以很方便地一鍵拉起服務,包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。詳情請參見EAS場景化部署說明。
RAG服務WebUI界面提供了豐富的推理參數配置選項,以滿足多樣化需求。此外,RAG服務也支持通過API接口進行調用。具體實現細節以及參數配置說明,請參見大模型RAG對話系統。
大模型RAG對話系統還支持與其他向量檢索庫進行關聯,例如Milvus、Elasticsearch或RDS PostgreSQL等。詳情請參見基于EAS&Milvus搭建RAG檢索增強對話系統、基于EAS&Elasticsearch搭建RAG檢索增強對話系統或基于EAS&RDS PostgreSQL搭建RAG檢索增強對話系統。