释放搜索潜力:基于 ES(ElasticSearch) 打造高效的语义搜索系统,让信息尽在掌握
释放搜索潜力:基于 ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇--简洁版],支持 Linux/Windows 部署安装
效果展示
PaddleNLP Pipelines 是一个端到端智能文本产线框架,面向 NLP 全场景为用户提供低门槛构建强大产品级系统的能力。本项目将通过一种简单高效的方式搭建一套语义检索系统,使用自然语言文本通过语义进行智能文档查询,而不是关键字匹配。
基于ES(ElasticSearch)打造高效的语义搜索系统效果展示链接
点击链接进行跳转:
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇---完整版],支持Linux/Windows部署安装
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[2.项目讲解篇],支持Linux/Windows部署安装
A1.Windows 下搭建语义检索系统
conda activate temp_ese:cd /temp_ES/PaddleNLP-develop/pipelines
腾讯镜像:-i https://mirrors.cloud.tencent.com/pypi/simple
pip list 版本:
paddle-pipelines 0.6.0paddlenlp 2.6.0paddlepaddle 2.5.1streamlit 1.11.1
pip install streamlit==1.11.1 -i https://mirrors.cloud.tencent.com/pypi/simplepip install altair==4.2.2 -i https://mirrors.cloud.tencent.com/pypi/simple
A1.1 运行环境安装
A1.2 paddlenlp 安装(包含了 paddlenlp)
A1.3 下载 pipelines 源代码:github 下载 or 手动下载
A1.4 运行案例查看效果
python examples/semantic-search/semantic_search_example.py --device gpu
python examples/semantic-search/semantic_search_example.py --device cpu
模型相关修改见3.3
A2.ES 相关配置
A2.1 版本安装 ES 版本提前官网下载好即可,放在对应路径,进入虚拟环境
官网:https://www.elastic.co/cn/downloads/elasticsearch
https://blog.csdn.net/sinat_39620217/article/details/133984629
A2.2 可视化工具 Kibana
elasticsearch 可视化工具 Kibana:为了更好的对数据进行管理,可以使用 Kibana 可视化工具进行管理和分析,下载链接为 Kibana,下载完后解压,直接双击运行 bin\kibana.bat 即可。
链接:http://localhost:5601/app/home
A2.3 ES 修改:config
需要编辑 config/elasticsearch.yml,在末尾添加:elasticsearch.yml 把 xpack.security.enabled 设置成 false,
xpack.security.enabled: false
然后直接双击 bin(右击管理员)目录下的 elasticsearch.bat 即可启动(elasticsearch-8.3.3\bin\elasticsearch.bat)。
Elastic search 日志显示错误 exception during geoip databases update
A2.4 文档数据写入 ann 索引库(重点)
官网直接给这条语句,但会报错的,需要修改一下参数。
可行命令:
关注三个参数
query_embedding_model rocketqa-zh-nano-query-encoder
passage_embedding_model rocketqa-zh-nano-para-encoder
embedding_dim 312 这里都使用 nano 版本模型,向量维度 312
(尝试过可以换成 base 模型,768 维度,需要注意的是:启动 RestAPI 模型服务的时候,这三个参数一定要跟这里一致,否则报错,或者检索无效)
查看 es 中是否已经是有数据:
如果需要重新写入数据,则需要先删除索引:
基于 Kibana 查看
A3.启动 Rest API 模型服务
这里要用要用 anaconda powershell,不能用 Anaconda prompt !!!
这里要用 anaconda powershell !!!
这里要用 anaconda powershell !!!
成功显示:端口链接显示
A4.启动 WebUI
streamlit 安装
本地打开这个网页可以使用语义检索系统了:http://127.0.0.1:8502
http://localhost:8502/
A5. 数据更新
数据更新的方法有两种,第一种使用前面的 utils/offline_ann.py 进行数据更新,另一种是使用前端界面的文件上传进行数据更新,支持 txt,pdf,image,word 的格式,以 txt 格式的文件为例,每段文本需要使用空行隔开,程序会根据空行进行分段建立索引,示例数据如下(demo.txt):
B.linux 下搭建语义检索系统
B.1 GPU 版本
提示:Centos 系统下坑比较多,需要使用 paddle 2.4.2 Ubuntu 推荐使用 2.5.1 or develop。
1.1 安装依赖
PaddleGPU、CUDA cudnn 安装见:https://blog.csdn.net/sinat_39620217/article/details/131675175
当前版本:cuda11.2、paddle-develop 版本(2.5.1 存在 bug 解决方案见上述链接,可以使用 2.5.2 版本)
ImportError: libssl.so.1.1: cannot open shared object file: No such file or directory 等问题
版本查看:
1.2 测试效果
1.3 执行 ES
创建新用户使用:创建一个新的用户,例如"elasticsearch":
1.4 构建 ANN 索引库
1.5 启动 RestAPI 模型服务
nltk_data 加载,如果感觉很慢卡住了,可以见问题 C.20
Linux 用户推荐采用 Shell 脚本来启动服务:
sh examples/semantic-search/run_neural_search_server.sh
启动后可以使用 curl 命令验证是否成功运行:
1.6 启动 web 页面
Linux 用户推荐采用 Shell 脚本来启动服务:
到这里就可以打开浏览器访问 http://127.0.0.1:8502
关闭进程:
B.2 CPU 版本
2.1 安装依赖库
安装同 GPU 选择 paddle-2.5.1 版本,提示:Centos 系统下坑比较多需要使用 paddle 2.4.2;Ubuntu 推荐使用 2.5.1 or develop。
demo 测试
2.3 执行 ES
创建新用户使用:创建一个新的用户,例如"esuser":
2.4 构建索引
lsof -i:8502
kill -9 PID
python -m streamlit run ui/webapp_semantic_search.py --server.port 8502 --server.address 127.0.0.1
C.安装过程遇到相关问题解决---相关项目链接:
目前共记录 21 个在 Windows 和 LInux 下遇到的相关问题
点击链接进行跳转:
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇---完整版],支持Linux/Windows部署安装
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[2.项目讲解篇],支持Linux/Windows部署安装
更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。
版权声明: 本文为 InfoQ 作者【汀丶人工智能】的原创文章。
原文链接:【http://xie.infoq.cn/article/40598402d3bbd387dc9541563】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论