OpenSearch大模型实践之Havenask篇

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
推荐全链路深度定制开发平台,高级版 1个月
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
简介: ChatGPT在通用任务上表现优秀,但无法解决众多垂直业务领域问题,这也不是ChatGPT模型本身的定位,而是需要通过其生态应用去解决。如何在垂直领域针对特定业务构建企业专属问答并且确保生成内容可控,是垂直领域面临的主要问题,也是从事行业搜索和问答的应用努力的方向。OpenSearch作为行业智能搜索产品,其使命就是去解决这一问题,我们正在做积极的探索。同时Havenask作为云产品OpenSearch和集团内引擎HA3的开源版本,也进行了尝试和探索。

作者:多愚、本岩


大语言模型时代

背景

ChatGPT一声炮响,把整个世界带到了大模型时代。2022年11月30日Open AI发布ChatGPT,短短两个月时间月活过亿,惊人的增长速度刷新了AI应用的记录。于是各大公司停止观望,积极投入到大模型技术的研发,多家公司宣布要把大模型技术加入到自身产品线。短短几个月时间,大模型成了路人皆知的话题,现在我们每天都被各种大模型相关的消息轰炸,围绕大模型的技术也层出不穷,同时也掀起了新一轮投资、创业热潮。

大语言模型拥有多任务能力,一个大模型就可以完成写文章、写代码、翻译、解题、逻辑推理、对话等。由于在这些任务上接近或者达到人类水平,以致于引起大家对于失业的担忧。但是我们仔细分析就会发现,这些任务虽然都属于某一个专业领域,但是大模型能完成的仍然仅限于比较通用的任务,比如写代码,只能高质量完整通用算法的代码,具体到某一个细分业务领域就无能为力了。ChatGPT的对话能力已经比较强大,但是如果具体到垂直领域的业务场景,也表现不佳,比如作为特定产品的智能客服对很多问题都只能回答不知道。ChatGPT在通用任务上表现优秀,但无法解决众多垂直业务领域问题,这也不是ChatGPT模型本身的定位,而是需要通过其生态应用去解决。如何在垂直领域针对特定业务构建企业专属问答并且确保生成内容可控,是垂直领域面临的主要问题,也是从事行业搜索和问答的应用努力的方向。OpenSearch作为行业智能搜索产品,其使命就是去解决这一问题,我们正在做积极的探索。同时Havenask作为云产品OpenSearch和阿里内部引擎HA3的开源版本,也进行了尝试和探索。


技术方案

目前业界最常用的方案就是“文档切片+向量检索+大模型生成答案”的方式,这个方案在以前就是基于文档内容的问答,只是少了大模型生成答案这一步。主要包含两个流程,数据处理流程和查询流程。如下图所示,数据处理流程就是将包含业务数据的非结构化文档PDF、Word、Markdown等进行处理,提取出文本,再按照完整语义切成有限字数的小片段,再将切片向量化以后推送到向量数据库构建向量索引,这样数据处理就完成了。



网络异常,图片无法展示
|

接下来就是查询流程(见下图),用户查询的时候,首先将查询词向量化,然后使用向量化的查询词进行向量检索得到相似的前几个文档片段向量,然后组装prompt,prompt由一些指令和向量检索结果组成。最后将原始query和prompt一起发送给大模型生成答案,这就是一个完整的流程。



网络异常,图片无法展示
|



Finetune和Prompt

使用特定业务场景数据finetune模型,可以教会模型在该场景下回答问题的方式,尽可能保证生成答案可控和可靠,finetune机制产品化以后,用户就可以按照产品要求的格式上传finetune数据,自动finetune出企业专属模型。对于大模型来说prompt非常重要,有各种各样的prompt技巧,吴恩达和OpenAI还联合推出了一门如何给ChatGPT做prompt的课程。假设把大模型当成一个具备一定思维能力的人,prompt就是给这个人下达一个任务,想要让任务顺利完成,给它下达的任务指令必须清晰明确,和我们日常工作中分配工作是类似的。在前文所述方案中,通常是将TopN的检索结果作为prompt的主体,再告诉它一些指令,比如“不懂不要瞎说”,“参考检索结果生成答案"等,然后将temperature设置到尽可能小,防止模型自由发挥。下面是一个简单的prompt示例:

{
  "prompt": 
      "Human: 作为一名产品技术支持,请根据搜索结果回答问题,如果无法回答,不要生成答案。    Search Results: OpenSearch规格类型对比: 1.行业算法版与高性能检索版的区别:产品概述:OpenSearch简介 OpenSearch是基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜索业务开发平台,在大数据场景下实现千亿数据毫秒级响应,提供订单、物流、保单等场景检索方案。产品架构 SaaS平台,开发者可以通过控制台或API与系统交互。场景化配置,开发者仅需创建应用实例,配置数据源,配置字段结构、搜索属性,等待索引重建完成后,即可通过SDK/控制台进行搜索测试。大数据检索,较之行业算法版,高性能检索版取消了繁重的行业算法能力,在支持搜索通用能力(分析器、排序)的基础上,重点关注业务查询和写入的吞吐,为开发者提供了大数据集检索场景下,秒级响应、实时查询的能力。产品特性 高吞吐,单表支持万级别的写入TPS,秒级更新。安全、稳定 提供7×24小时的运行维护,并以在线工单和电话报障等方式提供技术支持,具备完善的故障监控、自动告警、快速定位等一系列故障应急响应机制。基于阿里云的AccessKeyId和AccessKeySecret安全加密对,从访问接口上进行权限控制和隔离,保证用户级别的数据隔离,用户数据安全有保障。数据冗余备份,保证数据不会丢失.     Query: OpenSearch不同版本有什么区别?   Assistant:   ",
}


成本问题

由于大模型都是逐字生成的方式,每生成一个字就要进行一次推理,每次调用大模型消耗的算力较大,从用户的角度来讲,得到完整的答案耗时都较长,虽然为了改善用户体验采用了逐字输出的方式,但是不能从根本上解决大模型生成性能问题。为了提高性能,需要使用昂贵的A100卡,或者用单机多卡,这些都带来了大模型类应用的高成本,相对以前,客户需要付出的成本成倍增长,很难进行大规模的商业推广。围绕大模型提升推理性能,降低推理成本仍然是当前大模型应用面临的主要问题。


Havenask大模型实践

Havenask简介

Havenask是阿里巴巴集团推出的开源大规模分布式搜索引擎,也是阿里内部业务广泛使用的HA3搜索引擎的开源版本。HA3支持了包括淘宝、天猫、菜鸟、高德、饿了么、全球化在内的众多阿里搜索业务。Havenask继承了HA3的优点,同时剥离了内部业务逻辑,并针对开源社区进行了优化,有以下技术优势:

  • 极致工程性能:支持千亿级数据实时检索,百万QPS查询,百万TPS写入,毫秒级查询延迟与秒级数据更新,真正的工业级开源软件,可以用在实际生产环境和商用。
  • SQL查询支持:支持SQL语法便捷查询,查询体验对开源社区友好。
  • 丰富插件机制:支持各类业务插件,允许开源社区和开源用户自己通过插件植入自身业务逻辑,打造自己的搜索引擎。
  • 高性能向量检索:可通过与插件配合实现多模态搜索,满足更多场景的搜索服务搭建需求。
  • 内置大模型支持:可以对接ChatGPT、ChatGLM等大模型,允许用户基于Havenask做下一代的搜索和问答产品。

更多详情请参考Havenask产品文档



Havenask大模型方案(Havenask-LLM)

业界有很多整合ChatGPT进行文档问答的框架,Havenask作为向量检索引擎,有自己的用户群和生态,如果想要基于Havenask搭建企业专属的问答系统,就可以使用Havenask-LLM,Havenask-LLM通过集成ChatGLM和ChatGPT,支持了基于文档的问答。目前Havenask支持问答的方式就是前文所述经典方案“文档切片+向量检索+大模型生成答案”的方案,流程如下图所示,首先用户借助Havenask-LLM提供的工具将Markdown或PDF格式的文档进行文本提取,切片,向量化处理,并最终推送到Havenask构建向量索引。用户查询时将Query向量化,并从Havenask检索出topN(N可以自定义)的向量,TopN的原始文本为Prompt主体,再加一些指令,将Prompt连同原始问题一起发给ChatGPT API或者ChatGLM,生成最终答案返回给用户。



网络异常,图片无法展示
|

Havenask-LLM的架构如下图所示,整体分为3个部分:

  • 问答服务: 分为离线数据处理和在线查询。
  • 推理服务:支持开源大模型ChatGLM和ChatGPT API,用户可以自己选择其中一种使用即可。同时支持Text2Vec模型,提供文本向量化服务。
  • Havenask:作为向量引擎,提供向量索引构建、向量存储和向量查询服务。



网络异常,图片无法展示
|



问答服务

数据处理

  • 插入:将长文本拆分成小的chunk,调用大模型生成向量,推到引擎中。
  • 更新、删除:每个文档有个id,插入引擎的chunk数据带上文档id,更新和删除时先从引擎查出文档对应的所有pk进行删除。之后再插入新的数据。

查询管理

  • 对查询Query进行向量化
  • 查询Havenask引擎,获取topN的检索结果
  • 将结果作为Prompt连同原始问题发给大模型生成答案

推理服务

加载不同的大模型并提供API接口,对外提供服务

Havenask

提供向量索引构建,向量索引存储,和向量索引查询功能


下一步规划

前述经典方案简洁易于实现,但是方案本身只解决了非结构化文档的问答,实际业务数据中,除了非结构化数据,还有结构化数据,另外还有用户数据,这些数据都可以参与到问答或者模型finetune中。其次大语言模型只解决语言层面的问题,但不解决实际任务的执行,比如在产品技术支持场景中,想实现遇到某一类问题就自动提工单的功能,提工单需要收集齐信息后,自动提交工单,这是语言模型无法解决的,需要对接工单系统解决。另外并不是所有问题,都能被大语言模型解决,比如输入文字,生成图片,这些就需要特定领域模型去解决,比如stable diffusion。还有就是大语言模型有时效性问题,无法回答最近发生的事情,这里就需要对接其他平台来解决。这些问题我们会在下个版本去解决。简要设计参考下图:



提供离线数据管理模块,支持将非结构化数据、结构化数据、以及用户属性和用户使用产品过程中的反馈数据同步到系统,离线数据管理模块进行文档切片,文本、图片和视频的向量化等必要的数据处理和存储,然后将向量和文本推送到索引构建服务构建向量索引和文本索引,索引构建完成会推送到向量引擎供查询使用。同时部分业务数据会推送到大模型服务进行用户级模型finetune生成用户专属模型,大语言面模型服务对外提供prompt生成和管理,用户级模型finetune,并提供对各种大模型的封装和调用,同时对于复杂任务,还提供任务拆解功能,拆解出来的任务由任务管理模块统一管理。用户查询时获取用户信息、所处场景或任务的信息然后决策要不要做向量检索,请求发给大模型,还是特定领域模型,根据角色完成请求生成答案后返回给用户,这样就完成了一轮问答。


结语

以ChatGPT为代表的生成式AI的研究进展对很多领域产生了影响,ChatGPT则是深刻的影响了自然语言对话系统。人类研究自然语言对话系统最早还是从图灵测试开始,先后使用过各种不同方法,比如专家系统和海量知识库、自然语言理解、深度学习等,设计出来的对话系统非常复杂,但效果始终无法达到预期,相应的应用产品都差强人意,只能在非常狭窄的领域内应用。目前只有类似天猫精灵、Siri之类的个人助理类产品为人们熟知,但也主打内容和指令,而不是语言对话能力。ChatGPT的出现,给对话系统的发展带来了转机,不久的将来,有望通过更加简单的设计来超越以往对话系统的能力,之前需要做的各种自然语言理解和推理任务,都可以由大语言模型来处理,对话系统只需要围绕大语言模型设计好不同场景的业务逻辑。除了对话以外,对搜索的影响也很大,一直有一种看法认为搜索的未来就是对话和问答,基于大模型技术,搜索产品可以有全新的体验,比如微软推出的New Bing就给大家展示了一种对话式搜索产品形态。原有的搜索产品有机会借助大模型技术进行技术革新,但如果不能跟上技术的步伐,这些搜索产品就面临被淘汰和颠覆的风险。OpenSearch团队正在积极推进这方面的工作。

相关实践学习
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
5月前
|
算法 物联网 数据库
阿里云 OpenSearch RAG 应用实践
本文介绍了阿里云OpenSearch在过去一年中在RAG方面的应用和探索。
27187 3
阿里云 OpenSearch RAG 应用实践
|
6月前
|
数据采集 SQL 自然语言处理
阿里云OpenSearch RAG混合检索Embedding模型荣获C-MTEB榜单第一
阿里云OpenSearch引擎通过Dense和Sparse混合检索技术,在中文Embedding模型C-MTEB榜单上拿到第一名,超越Baichuan和众多开源模型,尤其在Retrieval任务上大幅提升。
1327 4
|
12月前
|
自然语言处理 算法 数据库
OpenSearch向量检索和大模型方案深度解读
深度解读开放搜索在向量检索和大模型方面的升级演进。
81396 7
|
存储 数据采集 人工智能
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
阿里云OpenSearch再推面向企业开发者的PaaS方案:基于OpenSearch向量检索版,为企业开发者提供性能表现优秀、性价比优异的向量检索服务,并提供与大模型结合脚本工具,用户可在使用能力可靠的向量检索服务的同时,自由选择文档切片方案、向量化模型、大语言模型。
15798 1
重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索
|
运维 自然语言处理 算法
新功能 | OpenSearch上线定制同义词模型
OpenSearch定制同义词模型可以提升搜索查询词同义扩展能力,扩大召回和查询词同义的文档,有效解决行业、垂类、业务特殊,有较多专属名词的客户优化用户搜索体验。
1586 0
新功能 | OpenSearch上线定制同义词模型
|
机器学习/深度学习 数据采集 搜索推荐
技术解读 | 智能开放搜索CTR预估模型
本文介绍开放搜索CTR预估模型在个性化排序中的应用与实践
2362 2
|
运维 自然语言处理 算法
新功能 | 智能开放搜索上线定制词权重模型
智能开放搜索OpenSearch上线定制召回模型-定制词权重功能,助力对召回和相关性排序有较高要求的客户实现最优搜索效果。
1221 0
|
机器学习/深度学习 自然语言处理 运维
开放搜索电商行业模版驱动业务增长实践
阿里巴巴技术专家介绍如何通过开放搜索电商行业增强版,快速构建更高水准的搜索服务,带动业务指数级增长。
2105 0
开放搜索电商行业模版驱动业务增长实践
|
运维 自然语言处理 搜索推荐
新版本发布 | 开放搜索的统一召回引擎实践
阿里云开放搜索统一召回引擎,搜索召回环节同时支持阿里云自研Ha3引擎与阿里云Elasticsearch引擎,并提供多行业的搜索算法能力,助力企业高效实现搜索效果深度优化
970 0
新版本发布 | 开放搜索的统一召回引擎实践
|
存储 分布式计算 自然语言处理
基于MaxCompute+开放搜索的电商、零售行业搜索开发实践
搜索一直是电商行业流量来源的核心入口之一,如何搭建电商行业搜索并提升搜索效果,一直是电商行业开发者努力攻克的难题。基于传统数据库或开源引擎虽然能够搭建基础搜索服务,但随着商品数据的增多和业务流量的增长,难免会遇到性能瓶颈和效果瓶颈。另一方面,随着电商、直播、云计算等技术的不断发展,越来越多的传统零售企业正在进行互联网云上转型,特别是受近两年疫情等因素的影响,APP、小程序已经成为零售企业重要的业务增长来源。在此背景下,如何快速搭建高效搜索服务成为零售行业上云及转型的难题。
1201 0
基于MaxCompute+开放搜索的电商、零售行业搜索开发实践

相关产品

  • 智能开放搜索 OpenSearch