您可以在大模型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、OpenSearch以及RDS PostgreSQL。
在生成方面,EAS支持丰富的开源模型,例如通义千问、Llama、Mistral、百川等,同时支持ChatGPT调用。
本方案以Elasticsearch为例,为您介绍如何使用EAS与Elasticsearch构建一个大模型RAG对话系统。具体流程如下:
首先创建Elasticsearch实例,并准备部署RAG服务关联Elasticsearch实例时依赖的配置项。
在EAS模型在线服务平台部署RAG服务,并关联Elasticsearch实例。
您可以在RAG对话系统中连接Elasticsearch,上传企业知识库文件,并进行知识问答。
前提条件
已创建专有网络VPC、交换机和安全组。具体操作,请参见搭建IPv4专有网络和创建安全组。
注意事项
本实践受制于LLM服务的服务器资源大小以及默认Token数量限制,能支持的对话长度有限,旨在帮助您体验RAG对话系统的基本检索功能。
准备向量检索库Elasticsearch
步骤一:创建阿里云Elasticsearch实例
登录阿里云Elasticsearch控制,在Elasticsearch实例页面创建阿里云Elasticsearch实例。其中关键参数配置说明如下,其他配置详情,请参见创建阿里云Elasticsearch实例。
参数 | 描述 |
地域和可用区 | 选择与EAS服务相同的地域。 |
实例类型 | 选择通用商业版。 |
场景初始化配置 | 选择通用场景。 |
登录密码 | 配置登录密码,并保存到本地。 |
步骤二:准备配置项
准备Elasticsearch URL。
在Elasticsearch实例页面的顶部菜单栏,选择创建实例的地域,在实例列表中单击已创建的ES实例ID。
在基本信息区域,获取私网地址和相应端口号,并拼接成Elasticsearch URL。
格式为
http://<私网地址>:<私网端口>
。重要当使用私网地址时,需确保Elasticsearch实例和PAI-RAG服务位于同一VPC内,否则连接失败。
准备索引名称。
在Elasticsearch实例的配置YML参数。
页面,单击修改配置,更新YML文件配置,将自动创建索引设置为允许自动创建索引。具体操作,请参见完成配置后,您在部署PAI-RAG服务时即可自定义索引名称,例如es-test。
准备ES User和password。
ES User默认为elastic,ES password是您在创建ES实例时设置的登录密码。如果您忘记了登录密码,可重置密码,具体操作,请参见重置实例访问密码。
部署RAG服务并关联Elasticsearch
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在模型在线服务(EAS)页面,单击部署服务,然后在场景化模型部署区域,单击大模型RAG对话系统部署。
在部署大模型RAG对话系统页面,配置以下关键参数,其他参数配置说明,请参见步骤一:部署RAG服务。
参数
描述
基本信息
版本选择
选择LLM一体化部署。
RAG版本
选择pai-rag:0.3.4。
模型类别
选择qwen1.5-1.8b。
资源信息
部署资源
系统会根据已选择的模型类别,自动推荐适合的资源规格。更换至其他资源规格,可能会导致模型服务启动失败。
向量检索库设置
版本类型
选择Elasticsearch。
私网地址/端口
配置为步骤二中已获取的Elasticsearch URL,格式为
http://<私网地址>:<私网端口>
。索引名称
输入新的索引名称或已存在的索引名称。对于已存在的索引名称,索引结构应符合PAI-RAG要求,例如您可以填写之前通过EAS部署RAG服务时自动创建的索引。
账号
配置为elastic。
密码
配置为步骤二中已设置的登录密码。
OSS地址
请选择当前地域下已创建的OSS存储目录。通过挂载OSS路径实现知识库管理。
专有网络
专有网络(VPC)
请确保所配置的专有网络与Elasticsearch实例保持一致。
交换机
安全组名称
参数配置完成后,单击部署。
使用RAG对话系统
RAG对话系统的基本使用方法如下,更多详细介绍,请参见大模型RAG对话系统。
1、检查向量检索库配置
单击目标RAG服务名称,然后在页面右上角单击查看Web应用。
检查向量检索库Elasticsearch配置是否正确。
系统已自动配置知识库default,并自动识别应用了部署RAG服务时配置的向量检索库设置。在向量数据库配置区域,检查Elasticsearch配置是否正确,可修改对应配置项为正确配置,然后单击更新知识库。
2、上传企业知识库文件
在知识库页签的文件管理Tab页上传知识库文件。上传知识库文件的具体操作方法,请参见RAG知识库管理。
知识库上传完成后,系统会自动按照PAI-RAG格式将文件存储到向量检索库。对于同名知识库文件,除了FAISS外,其他向量检索库将会覆盖原有文件。支持的文件类型为.html、.htm、.txt、.pdf、.pptx、.md、Excel(.xlsx或.xls)、.jsonl、.jpeg、.jpg、.png、.csv或Word(.docx),例如rag_chatbot_test_doc.txt。
3、进行知识问答
在对话页签,选择知识库名称、使用意图(使用更多工具选择查询知识库)进行知识问答。
Elasticsearch特色功能支持
分词/停用词典个性化设置
阿里云Elasticsearch内置了IK分词插件(analysis-ik)。IK分词器就像是一个词典,收纳了各类常用词,能够将语句按照词语进行拆分,而不是拆分为独立的汉字。IK自带了主分词词库和停用词词库,主分词词库能够处理复杂的中文文本分词,而停用词词库能够去除无意义的高频词(如“的”、“是”、“在”等),二者都能提高检索的效率和准确性。尽管IK分词插件自带的词库比较强大,但是在特定领域(如法律、医学等)往往存在大量专业术语,或者知识库还可能存在一些产品名称、公司名称和品牌名称等,这些词汇可能不在默认的词库中,您可以根据具体业务需求来设置自定义词典,以获得更准确的检索效果。更多关于Elasticsearch的IK分词插件的介绍,请参见使用IK分词插件(analysis-ik)。
1、准备主词典或停用词词典
在本地准备一份自定义的主词典或停用词词典:
词典文件格式:
.dic
类型的文件,文件名包含大小写字母、数字或下划线,且长度不超过30个字符。例如new_word.dic。内容要求:在词典文件中,按行添加新词或停用词。以主词典为例,使用内置分词表,会把“云服务器”分为“云”和“服务器”两个词,按照业务需求希望将其作为一个词,您可以将“云服务器”加入主词典中,new_word.dic文件内容示例如下:
云服务器 自定义分词
2、上传词典文件
准备好词典文件后,您需要将词典文件上传到指定位置。以热更新为例,具体操作步骤如下。更多关于更新词典文件的操作方法,请参见使用IK分词插件(analysis-ik)。
进入Elasticsearch实例详情页面。
在左侧导航栏,单击Elasticsearch实例。
进入目标实例。
在顶部菜单栏处,选择资源组和地域。
在Elasticsearch实例中单击目标实例ID。
进入
analysis-ik
插件的热更新页面。在左侧导航栏,选择
。在系统默认插件列表页签,找到
analysis-ik
插件,单击右侧操作列的热更新。
执行热更新操作。
在IK词库配置-热更新对话框,单击目标词典右侧的编辑,按照界面指引上传所需的词典文件后单击保存。
您可通过如下方式上传词典文件:
上传本地文件:按照界面指引,单击
图标或通过拖拽方式上传本地文件。
上传OSS文件:输入Bucket名称和词典文件名称,单击添加。
Bucket与阿里云ES实例需在同一地域。
不支持自动同步更新OSS中的词典文件。若源端OSS中的词典文件内容发生变化,需通过IK词典更新操作使之生效。
说明支持上传多个词典文件。词典文件后缀必须是
.dic
,文件名可包含大小写字母、数字和下划线,长度不超过30个字符。如需修改已上传词典的文件内容,可单击目标词典文件右侧的
图标,下载并修改词典文件,然后删除原词典文件并重新上传。注意删除原词典文件后,需单击保存,否则上传时会提示已存在同名文件。
单击确定,等待ES节点完成词典加载。
阿里云ES节点的插件具有自动加载词典文件的功能,但每个节点获取词典文件的时间存在差异。加载完成后,词典即可生效,请耐心等待。
词典文件更新后,您需要在RAG服务的WebUI页面重连Elasticsearch,具体操作,请参见连接向量检索库。
重连Elasticsearch后,在WebUI页面进行知识问答。当Retrieval Mode选择Keyword Only(关键词检索)或Hybrid(向量检索+关键词检索)时,则可以使用更新词典后的Elasticsearch进行全文检索。
索引管理
Elasticsearch提供了索引管理功能,管理好索引是确保RAG对话系统能够高效、准确地从大量信息中检索出有价值内容,并生成高质量回答的基础。具体操作步骤如下:
进入Elasticsearch实例详情页面。
在左侧导航栏,单击Elasticsearch实例。
进入目标实例。
在顶部菜单栏处,选择资源组和地域。
在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择。
在Kibana区域,单击修改配置,配置Kibana公网或私网访问白名单。
具体操作,请参见配置Kibana公网或私网。
登录Kibana控制台。
单击页面左上角的返回图标,返回可视化控制页面。
在Kibana区域,单击公网入口或私网入口。
说明开启Kibana公网访问或Kibana私网访问开关后,页面才会显示公网入口或私网入口。
在Kibana登录页面,输入用户名和密码。
用户名:ES实例的默认用户为elastic。
您也可以创建自定义用户,具体操作请参见通过Elasticsearch X-Pack角色管理实现用户权限管控。
密码:用户的密码。elastic用户的密码在创建实例时设定,如果忘记可重置。
重置密码的注意事项和操作步骤,请参见重置实例访问密码。
单击登录,进入的界面如下图所示。
查看并管理索引。
在Kibana控制台单击左上角的
,然后在下拉列表中选择 。
在左侧导航栏数据区域,单击索引管理。
在右侧索引页签,查看相应的索引(例如已创建的索引es_test),并进行包括关闭索引、刷新索引、清空索引以及删除索引等管理操作。
相关文档
针对AIGC和LLM的典型前沿场景,EAS提供了简化的部署方式。您可以很方便地一键拉起服务,包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。详情请参见EAS场景化部署说明。
RAG服务WebUI界面提供了丰富的推理参数配置选项,以满足多样化需求。此外,RAG服务也支持通过API接口进行调用。具体实现细节以及参数配置说明,请参见大模型RAG对话系统。
大模型RAG对话系统还支持与其他向量检索库进行关联,例如Milvus、OpenSearch或RDS PostgreSQL等。详情请参见基于EAS&Milvus搭建RAG检索增强对话系统、基于EAS&OpenSearch搭建RAG检索增强对话系统或基于EAS&RDS PostgreSQL搭建RAG检索增强对话系统。