快速使用 Elasticsearch+PAI 部署 AI 大模型知识库对话

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文为您介绍如何通过Elasticsearch和PAI-EAS部署企业级AI知识库对话,利用Elasticsearch进行企业专属知识库的检索,利用PAI-EAS来进行AI语言大模型推理,并通过开源框架LangChain将二者有机结合,从而集成到您的业务服务当中。

背景信息

阿里云检索分析服务 Elasticsearch 版是100%兼容开源的分布式检索、分析套件。提供 Elasticsearch、Kibana、Logstash、Beats 等开源全托管的产品服务能力。为结构化/非结构化数据提供低成本、高性能及可靠性的检索、分析平台级产品服务。具备读写分离、存算分离、弹性伸缩、智能化运维、免费的X-Pack高级商业特性等产品特性。


PAI-EAS 是阿里云的模型在线服务平台,支持用户将模型一键部署为在线推理服务或 AI-Web 应用,可以一键部署 LLM 推理、AIGC 等热门服务应用。PAI-EAS 适用于实时推理、近实时异步推理等多种 AI 推理场景,具备 Serverless 自动扩缩容和完整运维监控体系能力。


LangChain 是一个开源的框架,可以让 AI 开发人员将像通义千问这样的大语言模型(LLM)和外部数据结合起来,从而在尽可能少消耗计算资源的情况下,获得更好的性能和效果。通过 LangChain 将输入的用户知识文件进行自然语言处理存储在向量数据库中。每次推理用户的输入会首先在知识库中查找与输入问题相近的答案,并将知识库答案与用户输入一起输入 EAS 的大模型服务中生成基于知识库的定制答案。


第一步:开通检索分析服务 Elasticsearch 版

在开始使用时,需要购买一台 检索分析服务 Elasticsearch 版实例。

  1. 进入阿里云官网,找到 产品 -> 大数据计算 -> 检索分析服务 Elasticsearch 版 -> 管理控制台

image.png


  1. 左侧导航栏 “Elasticsearch 实例” ,点击创建实例。


  1. 基础配置:选择 阿里云Elasticsearch - 通用商业版8.x版本 - 通用场景,点击下一步。


  1. 集群配置:按需选择可用区数量实例规格 ,点击下一步。


  1. 网络及系统配置:按需选择专有网络及交换机(所配置的专用网络需与 PAI-EAS 服务保持一致),配置实例名称和登录密码 - 下一步


然后点击确认订单:购买之后,返回“管理控制台”等待实例启动。


  1. 待状态变为“正常”,点击实例进入查看调用信息,记录私网地址和端口。



第二步:利用 EAS 部署 LLM 大模型推理服务

利用 PAI-EAS 部署大模型推理服务,具体操作步骤如下。

  1. 进入PAI EAS 模型在线服务页面。
  1. 登录 PAI控制台
  2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
  3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入 PAI EAS 模型在线服务页面。


  1. PAI EAS 模型在线服务页面,单击部署服务
  2. 部署服务页面,配置以下关键参数。

参数

描述

服务名称

自定义服务名称。本案例使用的示例值为:chatllm_llama2_13b

部署方式

选择镜像部署AI-Web应用

镜像选择

PAI平台镜像列表中选择chat-llm-webui,镜像版本选择2.0

由于版本迭代迅速,部署时镜像版本选择最高版本即可。

运行命令

服务运行命令:

  • 如果使用chatglm2-6b模型进行部署:python webui/webui_server.py --port=8000 --model-path=THUDM/chatglm2-6b
  • 如果使用通义千问-7b模型进行部署:python webui/webui_server.py --port=8000 --model-path=Qwen/Qwen-7B-Chat
  • 如果使用llama2-7b模型进行部署:python webui/webui_server.py --port=8000 --model-path=meta-llama/Llama-2-7b-chat-hf
  • 如果使用llama2-13b模型进行部署:python webui/webui_server.py --port=8000 --model-path=meta-llama/Llama-2-13b-chat-hf --precision=fp16

端口号输入:8000

资源组种类

选择公共资源组

资源配置方法

选择常规资源配置

资源配置选择

必须选择GPU类型,实例规格推荐使用ml.gu7i.c8m30.1-gu30

7b的模型可以跑在GU30/A10/P100机型上。

13b的模型务必跑在gn6e的V100或A100的机型上。

专有网络配置

保持与Elasticsearch创建时的VPC一致!



  1. 单击部署,等待一段时间即可完成模型部署。
  2. 进入服务详情页中,点击查看调用信息,查看服务调用中 VPC 地址调用的的 API 和 token。



第三步:利用 Langchain 将业务串联并启动可视化 WEBUI

开源代码与公开镜像

GIthub 开源代码地址:https://github.com/aigc-apps/LLM_Solution/tree/master

我们提供了最方便快捷的部署方式,直接在 PAI-EAS 中选择平台镜像即可。


使用流程

1. PAI-EAS 部署 chatbot-langchain 的 webui 服务


参数

描述

服务名称

自定义服务名称。本案例使用的示例值为:chatbot_langchain_vpc

部署方式

选择镜像部署AI-Web应用

镜像选择

PAI平台镜像列表中选择chatbot-langchain,镜像版本选择1.0

由于版本迭代迅速,部署时镜像版本选择最高版本即可。

运行命令

服务运行命令:

  • uvicorn webui:app --host 0.0.0.0 --port 8000

端口号输入:8000

资源组种类

选择公共资源组

资源配置方法

选择常规资源配置

资源配置选择

选择CPU机型:ecs.c7.4xlarge

额外系统盘:60G

专有网络配置

保持与 Elasticsearch 创建时的VPC一致!



2. 待状态变为“运行中”后,查看Web应用,进入WebUI


3. Settings:用户配置相关参数

  • Embeding Model:支持四种可选的 embedding model 及其对应维度。推荐使用 SGPT-125M-weightedmean-nli-bitfit (dim=768)。
  • EAS:配置 EAS-LLM 相关参数。参考第二步配置后的内容:利用 EAS 部署 LLM 大模型推理服务。
  • VectorStore:配置 Elasticsearch 相关的连接参数。参考第一步配置后的内容:开通 Elasticsearch。
  • 支持方式:1)上传配置文件并解析;2)手动输入。
  • 配置文件格式可参考:
{
  "embedding": {
    "model_dir": "embedding_model/",
    "embedding_model": "SGPT-125M-weightedmean-nli-bitfit",
    "embedding_dimension": 768
  },
  "EASCfg": {
    "url": "http://xx.pai-eas.aliyuncs.com/api/predict/chatllm_demo_glm2",
    "token": "xxxxxxx=="
  },
  "vector_store": "Elasticsearch",
  "ElasticSearchCfg": {
    "ES_URL": "http://es-cn-xxx.elasticsearch.aliyuncs.com:9200",
    "ES_USER": "elastic",
    "ES_PASSWORD": "password",
    "ES_INDEX": "test_index"
  },
}


{
"embedding": {
"model_dir": "embedding_model/",
"embedding_model": "SGPT-125M-weightedmean-nli-bitfit",
"embedding_dimension": 768  },
"EASCfg": {
"url": "http://xx.pai-eas.aliyuncs.com/api/predict/chatllm_demo_glm2",
"token": "xxxxxxx=="  },
"vector_store": "Elasticsearch",
"ElasticSearchCfg": {
"ES_URL": "http://es-cn-xxx.elasticsearch.aliyuncs.com:9200",
"ES_USER": "elastic",
"ES_PASSWORD": "password",
"ES_INDEX": "test_index"  },
}


4. Upload:用户上传知识库文档

  • 支持多文件上传;支持文件夹上传;支持多种格式:TXT, DOCS, PDF等;
  • chunk-size:指定每个分块的大小,默认200;
  • chunk-overlap:相邻分块之间的重叠量,默认0;


5. Chat:知识问答

  • 支持三种问答方式:VectorStore、LLM、Langchain (VectorStore+LLM)


  • VectorStore:直接从检索分析服务 Elasticsearch 版中检索返回 topK 条相似结果;


  • LLM:直接与 EAS-LLM 对话,返回大模型的回答;


  • Langchain:将 Elasticsearch 检索返回后的结果与用户问题组装成可自定义 prompt,送入 EAS-LLM 服务,得到问答结果。


  • Retrieval top K answers:设置 Elasticsearch 返回的相似结果条数,默认为3;


  • Prompt Design:可用户自定义的 prompt,默认参考:"基于以下已知信息,简洁和专业地回答用户的问题。如果无法从中得到答案,请说 \"根据已知信息无法回答该问题\" 或 \"没有提供足够的相关信息\",不允许在答案中添加编造成分,答案请使用中文。\n=====\n已知信息:\n{context}\n=====\n用户问题:\n{question}";另外,英文场景下的"prompt_template"内容可以改为"Answer user questions concisely and professionally based on the following known information. If the answer cannot be obtained from it, please say 'Unable to answer the question based on the known information' or 'Insufficient relevant information provided'. Fabricated scores are not allowed to be added in the answer. The answer should be in English. \n=====\nKnown information:\n{context}\n=====\nUser question:\n{question}"


6. API 调用

查看调用信息,记录 URL 和 Token


  • /config: 上传config_es.json建立服务连接
  • Curl Command
curl-X'POST''http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com/config'-H'Authorization: xxxx=='-H'accept: application/json'-H'Content-Type: multipart/form-data'-F'file=@config_es.json'{"response": "success"}


  • Python Script
importrequestsEAS_URL='http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com'deftest_post_api_config():
url=EAS_URL+'/config'headers= {
'Authorization': 'xxxxx==',
    }
files= {'file': (open('config_es.json', 'rb'))}
response=requests.post(url, headers=headers, files=files)
ifresponse.status_code!=200:
raiseValueError(f'Error post to {url}, code: {response.status_code}')
ans=response.json()
returnans['response']


  • /uploadfile: 上传本地知识库文件
  • Curl Command
curl-X'POST''http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com/uploadfile'-H'Authorization: xxxx=='-H'accept: application/json'-H'Content-Type: multipart/form-data'-F'file=@docs/PAI.txt;type=text/plain'{"response": "success"}


  • Python Script
importrequestsEAS_URL='http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com'deftest_post_api_uploafile():
url=EAS_URL+'/uploadfile'headers= {
'Authorization': 'xxxxx==',
    }
files= {'file': (open('docs/PAI.txt', 'rb'))}
response=requests.post(url, headers=headers, files=files)
ifresponse.status_code!=200:
raiseValueError(f'Error post to {url}, code: {response.status_code}')
ans=response.json()
returnans['response']
# success


  • 知识问答:提供三种问答方式:(1)chat/vectorstore;(2)chat/llm;(3)/chat/langchain
  • Curl Command
curl-X'POST''http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com/chat/vectorstore'-H'Authorization: xxxx=='-H'accept: application/json'-H'Content-Type: application/json'-d'{"question": "什么是机器学习PAI?"}'curl-X'POST''http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com/chat/llm'-H'Authorization: xxxx=='-H'accept: application/json'-H'Content-Type: application/json'-d'{"question": "什么是机器学习PAI?"}'curl-X'POST''http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com/chat/langchain'-H'Authorization: xxxx=='-H'accept: application/json'-H'Content-Type: application/json'-d'{"question": "什么是机器学习PAI?"}'


  • Python Script
importrequestsEAS_URL='http://chatbot-langchain.xx.cn-beijing.pai-eas.aliyuncs.com'deftest_post_api_chat():    
url=EAS_URL+'/chat/vectorstore'# url = EAS_URL + '/chat/llm'# url = EAS_URL + '/chat/langchain'headers= {
'accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'xxxxx==',
    }
data= {
'question': '什么是机器学习PAI?'    }
response=requests.post(url, headers=headers, json=data)
ifresponse.status_code!=200:
raiseValueError(f'Error post to {url}, code: {response.status_code}')
ans=response.json()
returnans['response']


7. 效果演示

  • 上传配置文件并解析;解析后相关参数自动填入;单击"Connect Elasticsearch"显示连接状态。(一般10s可连接成功)


  • 上传知识库文件,等到几秒后显示上传成功状态。

 

  • 聊天问答
  • Vectore Store


  • LLM


  • Langchain (Vectore Store + LLM)



相关文章
|
28天前
|
存储 人工智能 大数据
AI开发新范式,PAI模型构建平台升级发布
本次分享由阿里云智能集团产品专家高慧玲主讲,聚焦AI开发新范式及PAI模型构建平台的升级。分享分为四个部分,围绕“人人可用”和“面向生产”两大核心理念展开。通过降低AI工程化门槛、提供一站式全链路服务,PAI平台致力于帮助企业和开发者更高效地实现AI应用。案例展示中,介绍了多模态模型微调在文旅场景的应用,展示了如何快速复现并利用AI解决实际问题。最终目标是让AI技术更普及,赋能各行业,推动社会进步。
|
14天前
|
人工智能 搜索推荐 开发工具
24.7K Star!用 KHOJ 打造你的AI第二大脑,自动整合和更新多源知识,轻松构建个人知识库
KHOJ 是一款开源的个人化 AI 助手,支持多源知识整合、语义搜索、个性化图像生成等功能,帮助用户高效管理知识库。
281 23
24.7K Star!用 KHOJ 打造你的AI第二大脑,自动整合和更新多源知识,轻松构建个人知识库
|
17天前
|
机器学习/深度学习 安全 PyTorch
FastAPI + ONNX 部署机器学习模型最佳实践
本文介绍了如何结合FastAPI和ONNX实现机器学习模型的高效部署。面对模型兼容性、性能瓶颈、服务稳定性和安全性等挑战,FastAPI与ONNX提供了高性能、易于开发维护、跨框架支持和活跃社区的优势。通过将模型转换为ONNX格式、构建FastAPI应用、进行性能优化及考虑安全性,可以简化部署流程,提升推理性能,确保服务的可靠性与安全性。最后,以手写数字识别模型为例,展示了完整的部署过程,帮助读者更好地理解和应用这些技术。
61 18
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
|
2月前
|
人工智能 JSON 算法
魔搭支持在阿里云人工智能平台PAI上进行模型训练、部署了!
现在,魔搭上的众多模型支持在阿里云人工智能平台PAI-Model Gallery上使用阿里云算力资源进行模型训练和部署啦!
|
28天前
|
人工智能 安全 大数据
PAI年度发布:GenAI时代AI基础设施的演进
本文介绍了AI平台在大语言模型时代的新能力和发展趋势。面对推理请求异构化、持续训练需求及安全可信挑战,平台推出了一系列优化措施,包括LLM智能路由、多模态内容生成服务、serverless部署模式等,以提高资源利用效率和降低使用门槛。同时,发布了训推一体调度引擎、竞价任务等功能,助力企业更灵活地进行训练与推理任务管理。此外,PAI开发平台提供了丰富的工具链和最佳实践,支持从数据处理到模型部署的全流程开发,确保企业和开发者能高效、安全地构建AI应用,享受AI带来的红利。
|
29天前
|
并行计算 PyTorch 算法框架/工具
阿里云PAI-部署Qwen2-VL-72B
阿里云PAI-部署Qwen2-VL-72B踩坑实录
|
28天前
|
人工智能 容灾 Serverless
AI推理新纪元,PAI全球化模型推理服务的创新与实践
本次分享主题为“AI推理新纪元,PAI全球化模型推理服务的创新与实践”,由阿里云高级产品经理李林杨主讲。内容涵盖生成式AI时代推理服务的变化与挑战、play IM核心引擎的优势及ES专属网关的应用。通过LM智能路由、多模态异步生成等技术,PAI平台实现了30%以上的成本降低和显著性能提升,确保全球客户的业务稳定运行并支持异地容灾,目前已覆盖16个地域,拥有10万张显卡的推理集群。
|
28天前
|
人工智能 运维 API
PAI企业级能力升级:应用系统构建、高效资源管理、AI治理
PAI平台针对企业用户在AI应用中的复杂需求,提供了全面的企业级能力。涵盖权限管理、资源分配、任务调度与资产管理等模块,确保高效利用AI资源。通过API和SDK支持定制化开发,满足不同企业的特殊需求。典型案例中,某顶尖高校基于PAI构建了融合AI与HPC的科研计算平台,实现了作业、运营及运维三大中心的高效管理,成功服务于校内外多个场景。
|
16天前
|
人工智能 运维 物联网
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版