腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索

| 导语 本文从腾讯云ES AI增强搜索相关能力介绍出发,通过集群部署、模型上传、效果验证等全流程演示,从零到一完成基于腾讯云ES的自然语言处理(NLP)与向量检索实践。

引言

腾讯云Elasticsearch Service近期上线的ES 8.8.1版本,提供了强大的云端AI增强能力,支持在统一技术栈中完成文本+向量的混合搜索,实现自然语言处理以及与大模型的集成,助力客户实现由AI驱动的高级搜索能力,为搜索与分析带来全新的前沿体验。本文将从集群部署、模型上传、效果展示等方面进行演示,基于腾讯云ES快速完成自然语言处理(NLP)与向量检索实践。

AI增强搜索能力

向量检索

除了经典的文本搜索以外,ES 8.8.1支持端到端的向量生成、向量索引、向量相似性比较,无需额外的平台进行向量推理。在生产中,企业可以将腾讯云ES作为向量数据库使用,有效地创建、存储和搜索密集向量,为用户提供更加智能的搜索功能。例如,企业可在腾讯云ES上传自定义大数据模型来做Embedding,如词嵌入模型(Word Embedding)或深度学习模型(如BERT),在读写过程中实时将图片、文本等数据转换为向量,然后存入Elasticsearch构建索引并进行相似度召回。

1ac76955de5591328fecf0b0f67a223a.png

图一

混合排序算法

腾讯云ES8.8.1版本使用最新的Reciprocal Rank Fusion (RRF) 混合排序算法,可同时支持全文检索和向量搜索,让开发人员更好地优化Al搜索引擎,实现语义和关键字的组合查询。

71b4d136fdbb55f6f54f21f5abfdbf85.png

图二

自然语言处理

腾讯云ES 8.8.1版本具备强大的自然语言处理能力,可以处理各种NLP任务和模型,使得搜索结果更加符合自然语言的语义。用户可以直接在 ES中使用 PyTorch机器学习模型(例如 BERT),并在 ES 中使用这些模型进行推理。

c534db51455f4cadee26995417363dd3.png

图三

与大语言模型的结合

LLM大语言模型虽然可以根据历史的数据生成连贯且与上下文相关的响应,但它无法访问特定领域的数据或提供独特知识库的个性化答案。因此,如果需要大语言模型更“懂”用户需要什么,与ES结合是最优的选择之一。具体而言,企业可将文本数据以及向量化后的数据存入ES构建索引并进行混合搜索。同时,在召回后,可选择将TOP n的结果集传入LLM大语言模型(如ChatGPT、混元) 等,对信息进行对话式结果整合,最终返回给用户,实现对话式搜索。

b1c3d981d87773bec2ad231944e9ada1.png

图四

快速实践

集群部署

在腾讯云Elasticsearch Service 上创建白金版 ES 8.8.1 集群。

3017b42e418336b9e121adbd1fa5ec7a.png

图五

为确保模型能正常上传以及加载,推荐购买4核8G以上的节点规格。

模型上传

ES 支持通过Eland进行模型上传,我们可通过 Pip或者Docker的方式从本地或者开源社区(例如Hugging Face)将模型上传至ES中。

ba9cbc406d7aa07727f6c1506e87eec3.png

图六

说明:Pip安装Eland对于python以及numpy等版本均有依赖,如果是从本地进行模型上传,推荐使用Docker的方式。

一、获取集群访问地址

通过「ES集群管理」-> 点击「集群名称」->「访问控制」路径,进入访问控制页面,获取用户名密码以及集群访问地址。

说明:如果是本地上传,需要使用公网访问地址,并将IP白名单设置为当前机器的IP地址;公网访问仅适用于测试环境,在生产环境中,推荐使用内网访问。

ee21f02d2be1cfe5bceada32c5fea7f5.png

图七

二、获取模型地址

以 Hugging Face为例,我们可搜索所需的模型,进入对应页面后,点击复制按钮。

6338648f36963d75f4d2dcceeb6766da.png

图八

ES目前已支持NER、Text_Classification、Text_Embedding、Fill_Mask、Question_Answering 和 Zero_Shot_Classification等类型模型。

三、上传模型

格式如下:

docker run -it --rm docker.elastic.co/eland/eland  eland_import_hub_model --url ES集群访问地址 -u 用户名 -p 密码  --hub-model-id 模型名称 --task-type 任务类型 --start --insecure

任务类型可选为:fill_mask、ner、text_classification、text_embedding、question_answering 、 zero_shot_classification

例如,我将embbeding模型 sentence-transformers/msmarco-bert-base-dot-v5上传到ES中:

docker run -it --rm docker.elastic.co/eland/eland  eland_import_hub_model --url 我的集群访问地址 -u 用户名 -p 密码  --hub-model-id sentence-transformers/msmarco-bert-base-dot-v5 --task-type text_embedding --start --insecure

上传成功后,我们即可在Kibana中看到我们的模型:

2bb745f7e0216fa28ac1165266734a7c.png

图九

Eland更多使用方式,请参考https://github.com/elastic/eland#getting-started。

效果演示

本次演示,我分别上传了NER、Text_Classification、Fill_Mask、Text_Embedding四种类型的模型。我们可进入Kibana的Dev tools页面,进行相关验证。Kibana 公网访问需设置IP白名单,您可在界面「公网访问策略」进行设置,设置完成后,点击「Kibana公网访问地址」。

7c8a75d77c894d3226f8d6ec64f656a7.png

图十

进入Kibana后,在右侧选择「Dev tools」:

2a1a5820db3fdc0ff0d1a6824944b11c.png

图十一

一、命名实体识别(NER)

POST /_ml/trained_models/elastic__distilbert-base-cased-finetuned-conll03-english/deployment/_infer
{
  "docs": {
    "text_field": "Kevin said that Shenzhen is a vibrant city"
  }
}

该示例中,NER模型将“Kevin”识别成了“人”,将“Shenzhen”识别成了“地点”:

da36cfce18fdbc890c27b87cd85094e3.png

图十二

POST /_ml/trained_models/elastic__distilbert-base-cased-finetuned-conll03-english/deployment/_infer
{
  "docs": {
    "text_field": "Kevin said that Tencent was a great company in the world"
  }
}

该示例中,NER模型将“Kevin”识别成了“人”,将“Tencent”识别成了“组织”:

7eb0c4c39c39394d5035277daf4b3df2.png

图十三

二、情绪分析(Text_Classification)

POST _ml/trained_models/distilbert-base-uncased-finetuned-sst-2-english/deployment/_infer 
{
  "docs": { "text_field": "Tencent,I love you!"}
}

e87e238f91dca6a8b7bffbd05fa56731.png

图十四

POST _ml/trained_models/distilbert-base-uncased-finetuned-sst-2-english/deployment/_infer 
{
  "docs": { "text_field": "I do not like that model!"}
}

该示例中,情绪模型将"I do not like that model!"分类为消极情绪:

ba79c3b9f26a0e98310479946d258cfb.png

图十五

三、填空模型(Fill_Mask)

POST /_ml/trained_models/bert-base-uncased/deployment/_infer
{
  "docs": {
    "text_field": "Paris is the [MASK] of France"
  }
}

0a754e6e3a434d2fa655a54154a73328.png

图十六

POST /_ml/trained_models/bert-base-uncased/deployment/_infer
{
  "docs": {
    "text_field": "Beijing is the capital of [MASK]."
  }
}

2e0c7e20321727f08096b11cb17e436f.png

图十七

四、文本向量化(Text_Embedding)

all-MiniLM-L6-v2是一个用于文本的embedding模型,可将句子和段落映射到 384 维密集向量空间,进行聚类或语义搜索等任务。

98f5c5aca32329ce1c27ce7d13b10342.png

图十八

POST /_ml/trained_models/sentence-transformers__all-minilm-l6-v2/deployment/_infer
{
  "docs": {
    "text_field": "Elasticsearch"
  }
}

从返回中可以看出,文本“Elasticsearch”最终被映射为384维的向量数据。

03f5396d87b31c34d2e00539d79fc6ae.png

图十九

总结

腾讯云ES 8.8.1版本支持在单一端到端搜索与分析平台中实现自然语言处理、向量搜索以及与大模型的集成,支持高达十亿级向量检索,平均响应延迟控制在毫秒级。使用该服务,我们可以轻松便捷地创建集群、部署NLP模型,并进行搜索和推理任务。

本文从腾讯云ES AI增强搜索相关能力介绍出发,通过集群部署、模型上传、效果验证等全流程演示,从零到一完成了基于腾讯云ES的自然语言处理(NLP)与向量检索实践。

在未来,我们也将继续优化腾讯云ES,以满足企业级生产环境的更多需求,并为用户提供更好的使用体验。我们将不断努力,为人工智能助手的开发和应用带来更多创新和便利。

欢迎扫码加入腾讯云ES AI增强与向量检索交流群:

3cb7db646b58487baaaec5b56c2a3de9.png

推荐阅读

8a9cf875146c7c364c7809146a0311f0.jpeg

a93e1d382a784e4eaa95c97cda140fff.jpeg

c0c8eb314b055bc9d0220f542871a34d.jpeg

关注腾讯云大数据公众号

邀您探索数据的无限可能

37fe0b85f82ac9477b778c6428efc1f5.png

点击阅读原文,了解更多资讯

↓↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值