Windows下搭建paddlenlp 语义检索系统

这篇具有很好参考价值的文章主要介绍了Windows下搭建paddlenlp 语义检索系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

windos下搭建paddlenlp 语义检索系统

之前搭建paddleocr的时候,创建了paddle的虚拟环境,顺便也装了paddlenlp的库,就想着直接用这个,然后语义检索模型本身没有问题了,可以正常推理了。但在搭建pipline的时候出现问题,application启动不起来。浪费了半天时间查看库的版本,和配置问题。paddlenlp这个库安装的比较久了,也忘了版本冲突,重新下了一遍,更新了paddle的版本之后,还是有问题。

Windows下搭建paddlenlp 语义检索系统

比如grpcio这个库版本没办法避免,一个要求小于1.33.2,另一个paddle的库要求大于1.47.1,click这个库同样。

然后看了这个csdn参考帖子,以及官方给出的文档,官方文档,其中有一个针对windos安装的视频:视频地址。

视频和参考帖子都是重新create一个虚拟环境,避免库的版本冲突。大概我也是这个问题。当然,模型推理没问题,pipline出现的问题可以自己重写避免。

1 环境配置

1.1 在Anaconda下重新创建虚拟环境,并进入虚拟环境:
conda create -n paddlepipline python=3.9
conda activate paddlepipline
1.2 安装paddle:paddle主页

根据自己电脑安装所需版本,我自己安装cpu版本。

pip install paddlepaddle==2.4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
1.3 安装paddle-pipelines
pip install --upgrade paddle-pipelines -i https://pypi.tuna.tsinghua.edu.cn/simple
1.4 下载paddlenlp源码,piplines源码包含在paddlenlp这个仓库中
git clone https://github.com/PaddlePaddle/PaddleNLP.git
1.5 进入到piplines目录,官方文档提示后续所有流程都只用在pipelines根目录下进行就行
cd PaddleNLP/piplines
1.6 查看语义检索推理效果,官方预置DuReader-Robust数据集的验证集中的1417条数据。

Windows下搭建paddlenlp 语义检索系统

python examples/semantic-search/semantic_search_example.py --device cpu \
                                                          --search_engine faiss

使用gpu自行设置就行,search_engine默认是faiss,也可以不设置,另一个可选是milvus。

Windows下搭建paddlenlp 语义检索系统

2 构建Web可视化语义检索系统

主要包括三个方面:基于ElasticSearch的ANN服务;基于RestAPI的构建模型服务;基于Streamlit构建WebUI。我之前一直在RestAPI,application挂不起来,可能因为版本冲突。

2.1 启动ANN服务

下载Elasticsearch并解压,官方文档给的是8.3.2版本,piplines里面requirements里给的是7.7-7.11的版本。

Windows下搭建paddlenlp 语义检索系统

实测,8.7.1和7.11版本都可以,这里用的是8.7.1版本,下载安装教程可以参考我另一篇blog。

启动服务前,修改config中elasticsearch.yml配置,将xpack.security.enabled设置我false,默认是true。

xpack.security.enabled: false

看视频8.3.2和7.11的版本,都没有这条,可以自行加上。

es服务默认的端口是9200,其他详情参考我另一篇blog。

bin目录下,双击elasticsearch.bat,启动服务。

Windows下搭建paddlenlp 语义检索系统

2.2 文档数据写入ANN索引库
# 以DuReader-Robust 数据集为例建立 ANN 索引库
python utils/offline_ann.py --index_name dureader_robust_query_encoder \
                            --doc_dir data/dureader_dev \
                            --search_engine elastic \
                            --embed_title True \
                            --delete_index

参数说明

  • index_name: 索引的名称
  • doc_dir: txt文本数据的路径
  • host: ANN索引引擎的IP地址
  • port: ANN索引引擎的端口号
  • search_engine: 选择的近似索引引擎elastic,milvus,默认elastic
  • delete_index: 是否删除现有的索引和数据,用于清空es的数据,默认为false
  • embed_title: 是否需要对标题建索引,默认为false,标题默认为文件名
2.3 启动RestAPI模型服务

指定环境变量,重写pipline服务的话,可以把这个写到参数里,总感觉这样不方便。

另外以前一直用Anaconda Prompt,但用Anaconda Powershell Prompt会更方便,多出了很多linux命令,比如,ls,不像在Anaconda Prompt里面要用dir。

另外Command shell是Windos内置的第一个shell,用于自动执行常规任务。PowerShell是Command shell的功能扩展,可以运行名为cmdlet的PowerShell命令,cmdlet是windos命令的拓展,Command shell只能运行Windows命令。

使用Anaconda Powershell Prompt的话:

$env:PIPELINE_YAML_PATH='rest_api/pipeline/semantic_search.yaml'

使用Anaconda Prompt:

set PIPELINE_YAML_PATH=rest_api/pipeline/semantic_search.yaml

然后,使用端口8891启动服务。

python rest_api/application.py 8891

哭了,之前浪费半天,看是不是es版本,或者其他代码的问题,结果就真的只是库版本冲突。

Windows下搭建paddlenlp 语义检索系统

启动之后可以使用curl命令,验证是否成功运行,重新开一个cmd,进行验证:

直接复制官方文档的curl命令会报错:

curl -X POST -k http://localhost:8891/query -H 'Content-Type: application/json' -d '{"query": "范冰冰身高是多少?","params": {"Retriever": {"top_k": 5}, "Ranker":{"top_k": 5}}}'

正确的形式,这是因为windows的command.exe命令不支持单引号,所以要处理一下命令,先转义双引号,然后把单引号改为双引号。

curl -X POST -k http://localhost:8891/query -H "Content-Type:application/json" -d "{\"query\": \"范冰冰身高是多少?\", \"params\": {\"Retriever\": {\"top_k\": 5}, \"Ranker\":{\"top_k\": 5}}}"

Windows下搭建paddlenlp 语义检索系统

同一个问题,通过es搜索之后,精度降低了?有两个评价指标,一个es_ann_score和score。看排序是根据score排的,但实际根据es_ann_score的话,和范冰冰相关那条0.9093是最高的。(代码还没有看)

2.4 启动WebUI

配置模型服务地址,重新开一个Anaconda Powershell Prompt:

$env:API_ENDPOINT='http://127.0.0.1:8891'

在端口8502启动WebUI。

python -m streamlit run ui/webapp_semantic_search.py --server.port 8502

Windows下搭建paddlenlp 语义检索系统

启动成功,启动界面内置了一条。

Windows下搭建paddlenlp 语义检索系统

看上去还挺准,还是范冰冰身高问题。

Windows下搭建paddlenlp 语义检索系统

Windows下搭建paddlenlp 语义检索系统

相关性比较差,模型推理的时候是没问题,那么可能跟es检索有关。文章来源地址https://www.toymoban.com/news/detail-464846.html

到了这里,关于Windows下搭建paddlenlp 语义检索系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PaddleNLP 如何打包成Windows环境可执行的exe?

    当我们使用paddleNLP完成业务开发后,需要将PaddleNLP打包成在Windows操作系统上可执行的exe程序。操作流程: 1.环境准备: 2.安装Pyinstaller 3.目录结构,main.py为可执行python文件。requirements.txt管理了所有的依赖。 4.使用Pyinstaller将python程序打包为exe 5.打包成功了,但运行报错: 6

    2024年01月24日
    浏览(47)
  • 向量数据库入坑:传统文本检索方式的降维打击,使用 Faiss 实现向量语义检索

    在上一篇文章《聊聊来自元宇宙大厂 Meta 的相似度检索技术 Faiss》中,我们有聊到如何快速入门向量检索技术,借助 Meta AI(Facebook Research)出品的 faiss 实现“最基础的文本内容相似度检索工具”,初步接触到了“语义检索”这种对于传统文本检索方式具备“降维打击”的新

    2024年02月16日
    浏览(50)
  • windos10重装系统教程

    你的电脑最近还好吗? 出现了龟速,卡顿等一系列问题吗? 解决这些问题的方法不仅仅有重买一台电脑,还有一个有效的方法--- 重装系统 windos10系统重装教程(纯净版) PS: 红字 部分事关电脑安危和个人信息安全,重装系统前必看。                                  

    2024年02月05日
    浏览(46)
  • 如何让Windos系统定时休眠

    让Windows 10 计算机在1小时后只进行一次性的休眠,可以使用命令行或者批处理脚本来实现。以下是通过命令行来设置计算机在1小时后进行一次性的休眠的步骤: 打开命令提示符 : 按下 Win + R 键,输入 \\\"cmd\\\",然后按下 Enter 键,这将打开命令提示符窗口。 输入休眠命令 : 在

    2024年02月12日
    浏览(43)
  • 从零开始搭建搜索推荐系统(五十三)QUERY从分词检索进阶

    聊的不止技术。跟着小帅写代码,还原和技术大牛一对一真实对话,剖析真实项目筑成的一砖一瓦,了解最新最及时的资讯信息,还可以学到日常撩妹小技巧哦,让我们开始探索主人公小帅的职场生涯吧! (PS:本系列文章以幽默风趣风格为主,较真侠和杠精请绕道~) 一、

    2024年02月04日
    浏览(34)
  • 视频与图片检索中的多模态语义匹配模型 ——原理、启示、应用与展望

    三多前笔者在《万字长文漫谈视频理解》[1]一文中,曾经将自己对视频理解的认识进行过简单总结,幸而获得了朋友们的认可,能让读者认可是笔者最为骄傲的成就。现在看来文中观点有不少纰漏狭隘之处,特别是近年来多模态模型的流行,更让视频理解这个方向出现了诸多

    2024年02月14日
    浏览(145)
  • paddlenlp智能问答系统,安装落地步骤

    安装paddlepaddle 清华源 我们建议在 GPU 环境下运行本示例,运行速度较快 如果只有 CPU 机器,安装CPU版本的Paddle后,可以通过 --device 参数指定 cpu 即可, 运行耗时较长 参考官方文档下载安装 elasticsearch-8.3.2 并解压。 https://www.elastic.co/cn/downloads/elasticsearch 1.启动 ES 服务 把xpack.s

    2024年02月12日
    浏览(78)
  • 释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[2.项目讲解篇],支持Linux/Windows部署安装

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目

    2024年02月03日
    浏览(48)
  • 释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇],支持Linux/Windows部署安装

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目

    2024年02月05日
    浏览(72)
  • 释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇--简洁版],支持Linux/Windows部署安装

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包