本文為您介紹如何使用實時數倉Hologres、人工智能平臺 PAI以及大模型LLaMA2部署企業專屬問答機器人。
背景信息
企業專屬問答機器人部署需要如下組件或服務:
LangChain:是一個開源框架,可以將大模型、向量數據庫、定制語料結合,高效完成專屬問答知識庫的搭建。Hologres現已被LangChain作為向量數據庫集成,詳情請參見LangChain-Hologres。通過開源框架LangChain完成企業專屬問答知識庫的搭建。
PAI-EAS:是阿里云的模型在線服務平臺,支持用戶將模型一鍵部署為在線推理服務或AI-Web應用,可以一鍵部署LLM推理、AIGC等熱門服務應用。PAI-EAS 適用于實時推理、近實時異步推理等多種AI推理場景,具備Serverless自動擴縮容和完整運維監控體系能力。
Hologres:Hologres是一站式實時數倉引擎,與達摩院自研高性能向量計算軟件庫Proxima深度整合,支持高效、易用的向量計算能力,詳情請參見Proxima向量計算。通過Hologres向量計算能力進行專屬語料數據的檢索并對大模型進行微調。
LLaMA-2:是新一代開源大模型,有7B、13B、70B多種參數版本,現已支持基于PAI進行部署。
Hologres自研工具幫助您進行專屬問答知識庫的部署,僅通過該工具即可將Hologres作為向量實時存儲和檢索引擎,將Hologres、PAI、大模型(LLaMA-2)、定制語料、LangChain串聯,快速完成企業專屬問答機器人的搭建,自研工具詳情請參見GitHub。
前提條件
已開通Hologres實例:您可以使用Hologres免費試用實例,0元搭建向量數據庫,詳情請參見新用戶免費試用。
說明建議使用Hologres 8CU規格,免費試用實例處理的向量數據規模為百萬級。如有更大規模向量數據,請使用更大規格實例。
已開通PAI并創建工作空間:詳情請參見開通PAI并創建默認工作空間。
已準備好基礎環境:準備一臺ECS機器(您也可以在本地進行),進行如下環境準備工作:
安裝Anaconda,詳情請參見Anaconda。
安裝3.8版本及以上版本的Python:
conda create --name chatbot python=3.8 conda activate chatbot
安裝搭建問答知識庫相關依賴:
pip install langchain modelscope psycopg2-binary sentence_transformers bottle requests
克隆本文所需代碼與樣例數據:本文的工具位于其中的
holo-llm
目錄下。git clone https://github.com/aliyun/alibabacloud-hologres-connectors.git
實踐步驟
部署LLaMA2大模型。
使用PAI-EAS模型在線服務即可快速部署LLaMA-2,詳情請參見Llama2-WebUI基于EAS的一鍵部署。
說明您也可以按照本文步驟,使用其他大模型進行專屬問答知識庫的搭建。其他大模型部署方式請參見LLM。
完成大模型部署后,您需要在EAS控制臺的服務詳情頁中查看并記錄實例的調用信息(調用地址和Token),詳情請參見調用方式概覽。
配置config文件。
使用本文工具搭建問答知識庫,需要在
config
文件中設置各個資源的連接信息、embedding模型信息等配置項。運行如下命令進行配置:cd alibabacloud-hologres-connectors/holo-llm vim config/config.json
配置項如下,其中
embedding
、query_topk
、prompt_template
均會對大模型微調效果產生影響,請謹慎修改配置值。配置項
說明
eas_config
大模型服務的調用信息(步驟1記錄的調用信息),包括:
url
:LLaMA2大模型的調用地址。token
:LLaMA2大模型調用地址對應的Token。
holo_config
Hologres的連接信息,包括:
HOLO_ENDPOINT
:Hologres實例的網絡地址。進入Hologres管理控制臺的實例詳情頁獲取網絡地址。
HOLO_PORT
:Hologres實例的端口。進入Hologres管理控制臺的實例詳情頁獲取端口。
HOLO_DATABASE
:Hologres實例的數據庫名稱。HOLO_USER
:當前阿里云賬號的AccessKey ID。您可以單擊AccessKey 管理,獲取AccessKey ID。
HOLO_PASSWORD
:當前阿里云賬號的AccessKey Secret。您可以單擊AccessKey 管理,獲取AccessKey Secret。
embedding
將語料數據進行向量化處理的embedding模型信息,包括:
model_id
:embedding模型路徑。本文使用達摩院在魔搭平臺的CoRom開源中文embedding模型,路徑為:
damo/nlp_corom_sentence-embedding_english-base
。model_dimension
:模型的向量維度。本文使用的embedding模型對應生成768維的向量數據,即
model_dimension
值設置為768
,詳情請參見coROM。
query_topk
Hologres向量檢索返回的數據條數。
本文定義為
4
,您可以結合大模型允許的字符數上限、大模型微調效果等方面進行設置。prompt_template
用于大模型微調的提詞模板。
config文件中已有默認模板,您無需調整。
處理專屬語料數據。
針對提前準備的語料數據,需要進行向量化處理并導入Hologres。使用本文的開源工具,通過如下命令進行。
# 語料向量數據導入前,先清理數據庫中的歷史數據 python main.py -l --clear # 將holo-llm/data/example.csv中的語料數據向量化處理后導入Hologres python main.py -l
重要首次使用會自動下載Embedding模型(約400 MB),需要較長時間,第二次調用則不需要此過程。
本文提供了若干針對Hologres的專業語料,示例如下:
title
content
What is Hologres
Hologres is a one-stop real-time data Warehouse independently developed by Alibaba. It supports real-time writing, real-time updating, real-time processing and real-time analysis of massive data...
What is proxima
Proxima is a high-performance software library for vector nearest neighbor search from the Ali Dharma Institute. Compared with similar open-source products such as Faiss, the Proxima is better in stability and performance...
What is the principle of JSONB column storage in Hologres
Hologres supports columnar storage optimization for JSONB type starting from V1.3, it can reduce the storage size of JSONB data and accelerate query. This article will introduce you to the use of columnar JSONB in the Hologres...
您可以在Hologres實例對應數據庫下的
langchain_embedding
表中查詢embedding后的向量數據:SELECT * FROM langchain_embedding limit 1; --返回結果示例 id|embedding|metadata|document 2419815e-1407-11ee-bee5-acde48001122|{0.395261,0.123794,0.761932,0.413286,...}|{"source": "data/example_data.csv", "row": 1}|title: ... content: ...
驗證大模型微調效果。
調用原生LLaMA-2大模型進行問答:
python main.py -n # 具體對話 Please enter a Question: What is hologres? PAI-LLM answer: Hologres is a term used in the context of digital holography, which refers to the holographic image produced by a digital holographic camera. The term "hologres" is derived from the Greek words "holos" meaning "whole" and "graphein" meaning "to record". It refers to the complete or entire holographic image that is recorded by the camera, rather than just a portion of it. Hologres can be used to create three-dimensional images that appear life-like and can be viewed from different angles, providing a more immersive and realistic viewing experience.Please let me know if you need anything else
調用經過Hologres提示詞微調的LLaMA-2大模型進行問答:
python main.py # 具體對話 Please enter a Question: What is hologres? PAI-LLM + Hologres answer: Hologres is a one-stop real-time data warehouse independently developed by Alibaba, which supports real-time writing, real-time updating, real-time processing, and real-time analysis of massive data
即已完成使用Hologres+PAI+LLaMA2部署專屬問答知識庫的基本操作。
您可以繼續將問答知識庫接入實際業務場景進行使用,如接入釘釘聊天群聊(參見使用Hologres和大模型免費定制專屬聊天機器人)等。