基于RocketQA和Milvus的语义搜索问答

一、总体结构

基于搜索的语义检索和检索式问答系统的总体架构如下图所示:

注:蓝色线为数据导入过程(index阶段),橘黄色线为用户查询过程(query阶段)。

首先,本文使用开源的RocketQA框架zh_dureader_de_v2语言模型做为句子编码器,将question数据转化为固定长度为 768 维的特征向量。

然后,将特征向量存入Milvus 库中,同时 Milvus 会给这些特征向量分配一个 ID,将 ID 和对应的question文本和answer文本存储在 Redis中。

最后,用户输入一个question,模型将其转成特征向量。Milvus 对特征向量进行相似度检索,得到相似的question的 ID ,在 Redis 中找出 ID 对应的question和answer返回。

二、细节实现

I准备工作

python依赖包

requirements.txt

rocketqa~=1.1.0
pymilvus==1.1.0
redis~=4.1.4

启动milvus服务

docker run --name milvus_cpu_1.1 -d -p 19530:19530 -p 19121:19121 
milvusdb/milvus:1.1.0-cpu-d050721-5e559c

检查milvus服务情况

docker logs milvus_cpu_1.1

连接milvus

from pymilvus import Milvus
milv = Milvus(host='192.168.**.***', port='19530')
print(milv)
print("Connect success!")

连接Redis

import redis
# 本地连接,创建数据库连接对象
redis_client = redis.Redis(host='127.0.0.1', port=6379, db=0)

II索引阶段

2.1创建集合和设置索引

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值