写点什么

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

  • 2024-01-15
    广东
  • 本文字数:2911 字

    阅读完需:约 10 分钟

腾讯云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 构建索引并进行相似度召回。

图一


混合排序算法

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

图二


自然语言处理

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

图三


与大语言模型的结合

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

图四


快速实践

集群部署

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

图五

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


模型上传

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

图六

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


一、获取集群访问地址

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

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

图七


二、获取模型地址

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

图八


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 中看到我们的模型:

图九


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


效果演示

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

图十


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

图十一


一、命名实体识别(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”识别成了“地点”:

图十二

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”识别成了“组织”:

图十三


二、情绪分析(Text_Classification)

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


图十四


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!"分类为消极情绪:

图十五


三、填空模型(Fill_Mask)

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


图十六


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


图十七


四、文本向量化(Text_Embedding)

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

图十八


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

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

图十九


总结

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

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

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


用户头像

还未添加个人签名 2020-06-19 加入

欢迎关注,邀您一起探索数据的无限潜能!

评论

发布
暂无评论
腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索_ES_腾讯云大数据_InfoQ写作社区