IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 如何10分钟搭建效果领先的语义搜索系统? -> 正文阅读

[人工智能]如何10分钟搭建效果领先的语义搜索系统?

PaddleNLP最近发布了Paddle-Pipelines,Paddle-Pipelines是一个端到端智能文本产线框架,面向 NLP 全场景为用户提供低门槛构建强大产品级系统的能力。本项目将通过一种简单高效的方式搭建一套语义检索系统,使用自然语言文本通过语义进行智能文档查询,而不是关键字匹配,用户可以通过简单的配置,并上传数据,就可以完成自己想要定制化的搜索系统。

搜索技术的应用范围很广,比如建筑的规范搜索,公司内部规范条文的搜索,对话文本匹配,工单信息匹配,检索式智能问答,大规模不固定标签场景的文本分类,基于内容的搜索推荐等等场景。我们看一段视频,感受一下语义搜索的效果。

语义搜索

Pipelines预置了基于ERNIE 3.0系列模型训练的RocketQA的模型,效果图如下图所示,使用的数据集是Dureader Retrieval百万量级的人工标注的搜索数据集,对于速度和精度都进行了优化,其中nano模型在CPU上使用Pipelines能够达到100ms的速度,大大节省了用户的搭建成本。

图片

Pipelines的原理流程图如下,用户通过前端输入Query以后,后端收到数据,然后进行语义向量抽取,抽取出Sentence/Query Embdding,然后在索引库中进行ANN检索,然后对检索的结果进行重新排序,最后通过后端把结果返回给前端,用户就可以看到搜索的结果。

构建索引库的流程:用户把预先准备好的数据放入Pipelines系统,抽取向量得到Sentence Embedding,然后放入索引工具(比如Milvus,Elastic Search,FAISS)来构建索引库。

图片

Pipelines的代码构建也很简单,下面是代码一段语义检索的代码示例:

from pipelines.document_stores import FAISSDocumentStore
from pipelines.nodes import DensePassageRetriever, ErnieRanker

# Step1: Preparing the data
documents = [
  {'content': '金钱龟不分品种,只有生长地之分,在我国主要分布于广东、广西、福建、海南、香港、澳门等地,在国外主要分布于越南等亚热带国家和地区。',
  'meta': {'name': 'test1.txt'}},
  {'content': '衡量酒水的价格的因素很多的,酒水的血统(也就是那里产的,采用什么工艺等);存储的时间等等,酒水是一件很难标准化得商品,只要你敢要价,有买的那就值那个钱。',
  'meta': {'name': 'test2.txt'}}
]

# Step2: Initialize a FaissDocumentStore to store texts of documents
document_store = FAISSDocumentStore(embedding_dim=768)
document_store.write_documents(documents)

# Step3: Initialize a DenseRetriever and build ANN index
retriever = DensePassageRetriever(document_store=document_store, query_embedding_model="rocketqa-zh-base-query-encoder",embed_title=False)
document_store.update_embeddings(retriever)

# Step4: Initialize a Ranker
ranker = ErnieRanker(model_name_or_path="rocketqa-base-cross-encoder")

# Step5: Initialize a SemanticSearchPipeline and ask questions
from pipelines import SemanticSearchPipeline
pipeline = SemanticSearchPipeline(retriever, ranker)
prediction = pipeline.run(query="衡量酒水的价格的因素有哪些?")

通过SemanticSearchPipeline就可以把定义的流水线节点串联起来,并且流水线的节点可以进行定制化,用户可以根据情况选择需要的节点。

搭建流程

为了帮助大家快速的搭建起来,Pipelines提供了Windows,Linux,Mac等主流系统的搭建流程,Windows上的搭建流程还特地录制了安装视频。下面特地介绍一下安装搭建流程,有需要的用户可以参考链接。

Windows的搭建流程请参考链接:https://github.com/PaddlePaddle/PaddleNLP/blob/develop/pipelines/examples/semantic-search/Install_windows.md

Windows的配套安装视频B站链接如下:https://www.bilibili.com/video/BV1DY4y1M7HE/?vd_source=f5bc16e5093165f01588d5a24417419d

Liunx和Mac的搭建流程请参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/pipelines/examples/semantic-search

Docker一键安装体验

如果用户想要快速体验带有后台和前端的Pipelines,可以使用Docker的方式来安装,这样就避免了各种平台的环境搭建,搭建环境难免会碰到各种各样的问题。

第一步启动elastic search容器

docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.3.3
docker run \
      -d \
      --name es02 \
      --net elastic \
      -p 9200:9200 \
      -e discovery.type=single-node \
      -e ES_JAVA_OPTS="-Xms256m -Xmx256m"\
      -e xpack.security.enabled=false \
      -e cluster.routing.allocation.disk.threshold_enabled=false \
      -it \
      docker.elastic.co/elasticsearch/elasticsearch:8.3.3

第二步是启动pipelines容器

对于Linux使用Docker的用户,使用下面的命令:

docker pull registry.baidubce.com/paddlepaddle/paddlenlp:2.4.0
docker run -d --name paddlenlp_pipelines --net host -ti registry.baidubce.com/paddlepaddle/paddlenlp:2.4.0

对于Windows&Macos上使用Docker的用户,用下面的命令:

docker pull registry.baidubce.com/paddlepaddle/paddlenlp:2.4.0.windows.darwin
docker run -d --name paddlenlp_pipelines  -p 8891:8891 -p 8502:8502 -ti registry.baidubce.com/paddlepaddle/paddlenlp:2.4.0.windows.darwin

如果用户有gpu,可以启动对应版本的cuda镜像。详情请参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/pipelines

cpu容器启动大概需要等待3分钟,然后输入网址http://127.0.0.1:8502 就可以启动了,Enjoy it!如果有任何问题,可以去Github上提issue哈。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:12:38  更:2022-09-25 23:12:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:30:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码