运用 Elasticsearch 8.1.x 实现智能问答系统
Posted 铭毅天下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运用 Elasticsearch 8.1.x 实现智能问答系统相关的知识,希望对你有一定的参考价值。
序言
图示:一个简单的智能问答系统。
在当前业务系统中,是否感受到越来越多的智能化个性业务诉求,做一个智能化的商品搜索,用于检索商品的相似性;做一个图片搜索,检索相似的图片;做一个语音搜索,检索相似度极高的音频,这种智能化的需求越来越多。
可能你听过看过很多机器学习或者深度学习的“名词“,对于一些常规的应用工程师来说,这些距离个人很远,打开各种算法网站,看到各种模型,看的头疼。
可能你是一个高学历的深度学习方面工程师,当面对业务复杂的需求时,也会两难,虽然掌握了很多深度学习模型,但在具体工程落地实践时,遇到很多困惑,如何解决海量的向量存储,如何解决海量的检索,如何与应用工程师搭配等。
以上是我们一个个IT领域工程师都会有的困惑,单个人精力有限,有的人擅长工程实践,有的人擅长算法模型,所以得需要找到一个中间衔接点,这个点就是 "Elasticsearch”
Elasticsearch 是如何解决问题的?
dense_vector
2019年4月,Elasticsearch发布了7.0版本,带来了很多新特性,其中增加了新的字段类型dense_vector,向量字段类型为智能搜索提供了最关键的基石,可广泛应用于文本相似度搜索、图片相似度搜索、语音相似度搜索等。
同时借助于Elasticsearch的架构特性,既可以解决海量数据的存储,也可以解决海量数据的检索,非常完美的解决了深度学习工程师的工程问题。
如下案例:设置字段类型为 dense_vector
PUT xxx-index-01
"mappings":
"properties":
"my_vector":
"type": "dense_vector",
"dims": 3,
"index": true,
"similarity": "dot_product"
knn-search
2022年2月,Elasticsearch发布了8.0版本,同样带来很多新特性,其中最关注的是knn-search,提供了一种更加高效的索引算法,检索效率同比之前大幅度提升,在此之前只能通过简单粗暴的全表三角函数计算。
如下案例:基于_knn_search 构建向量检索
#KNN检索:_knn_search,构建向量检索
GET my-index/_knn_search
"knn":
"field": "image_vector",
"query_vector": [0.3, 0.1, 1.2],
"k": 10,
"num_candidates": 100
,
"_source": ["name", "date"]
Text-embedding
在深度学习领域,tensorflow深度学习平台是大家经常讨论熟知使用的,有了深度学习平台强力支撑,高学历的深度模型工程师仅仅需要关注算法模型层面,无需关注工程层面,在此之上,也衍生出一些成熟的算法模型,开箱即用,大大降低了项目落地的门槛。
基于Text-embedding单词嵌入模型,可以将文本、图像、音频等各种世间万物转换为特定向量,程序提前将各种数据生成对应向量,存入到Elasticsearch平台中,应用搜索时,也可以即可在Elasticsearch进行检索。
图示:通过embed模型,将文本内容转化为向量
本次公开课
本次公开课,将基于Elasticsearch 新特性dense_vector、knn_search实现一个智能问答系统。
你将收获如下内容
了解一个智能问答系统的前后实现机制?
为什么选择 Elasticsearch来实现?
动手搭建 Elastic Stack 8.1.x?
动手实现 ES-Vector智能问答系统?
全新认识 Elastic Stack 技术生态与应用领域
参考文献
dense-vector 向量字段类型
https://www.elastic.co/guide/en/elasticsearch/reference/8.1/dense-vector.html
knn-search 近邻搜索
https://www.elastic.co/guide/en/elasticsearch/reference/8.1/knn-search.html
text-similarity-search-with-vectors-in-elasticsearch 使用向量字段进行文本相似度搜索
https://www.elastic.co/cn/blog/text-similarity-search-with-vectors-in-elasticsearch
universal-sentence-encoder text-embeding 文本向量模型
https://tfhub.dev/google/universal-sentence-encoder/4
关于我们
讲师
李猛 Elastic King 数据领域专家
Elastic Stack 国内顶尖实战专家
ELastic Stack 技术社区分享嘉宾
国内首批 Elastic 官方认证工程师21人之一
阿里云MVP(大数据领域)
DBAPlus MVP(原创内容贡献者)
GitHub:https://github.com/ynuosoft
咕泡教育 《Elastic Stack 架构师P6成长路径》主讲老师。
2012年入手Elasticsearch,对Elastic Stack技术栈开发、架构、运维、源码、算法等方面有深入实战;负责过多种Elastic Stack项目,包括大数据分析领域,机器学习预测领域,业务查询加速领域,日志分析领域,基础指标监控领域等;
服务过多家企业,提供Elastic Stack 咨询培训以及调优实施;
多次在Elastic Stack技术大会/技术社区分享,发表过多篇实战干货文章;
十余年技术实战从业经验,擅长大数据多种技术栈混合,系统架构领域。
以上是关于运用 Elasticsearch 8.1.x 实现智能问答系统的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:运用 Go 语言实现 Elasticsearch 搜索 - 8.x
Elasticsearch:运用 Go 语言实现 Elasticsearch 搜索 - 8.x
Elasticsearch:运用scroll接口对大量数据实现更好的分页
Elasticsearch:运用 Python 来实现对搜索结果的分页