本项目使用向量数据库Milvus的语义搜索功能,实现了通过白话文搜索语义相似的古诗词的功能。 古诗词数据集在chinese-poetry基础上做了改动。
Milvus 运行在 Docker 容器中,因此需要先安装 Docker Desktop。
Milvus 运行在 docker 容器中,所以需要先安装 Docker Desktop。 MacOS 系统安装方法:Install Docker Desktop on Mac。 Windows 系统安装方法:Install Docker Desktop on Windows。
下载并运行 Milvus 独立版脚本:
下载安装脚本:
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
运行 Milvus:
bash standalone_embed.sh start
建议创建虚拟环境以避免依赖冲突:
python3 -m venv myenv
激活虚拟环境
source myenv/bin/activate
退出虚拟环境:
deactivate
pip install -r requirements.txt
执行 main.py 交互程序。
python main.py
支持以下四种命令:
create
:在向量数据库中创建集合,生成指定文本的向量,导入集合中,并且创建索引。文件存放在data
文件夹中,为唐诗数据集。data_split_total
文件夹中出了唐诗数据集外,还包括宋词(SongCi.json)、宋诗(SongShi.json)和元曲(YuanQu.json)等数据集。如果希望搜索更多古诗词,可以把它们复制到data
文件夹中,用来创建集合。但是创建集合的时间会更长。
search
:进入搜索模式。在搜索模式中,输入句子搜索语义相近的古诗词,比如,今天天气不错
。或者输入“句子 作者”,指定古诗词的作者,比如今天天气不错 李白
。
搜索你想用古诗词表达的意思:中午吃点啥
title: 慵不能
author: 白居易
paragraphs:午后恣情寝,午时随事餐。
distance: 0.619
--------------------------------------------------
title: 与鲜于庶子自梓州成都少尹自襃城同行至利州道中作
author:岑参
paragraphs:过午方始饭,经时旋及瓜。
distance: 0.582
--------------------------------------------------
title: 夏日闲放
author: 白居易
paragraphs:午餐何所有,鱼肉一两味。
distance: 0.574
--------------------------------------------------
title: 苔崔侍郎钱舍人书问因继以诗author: 白居易
paragraphs:旦暮两蔬食,日中一闲眠。
distance: 0.559
--------------------------------------------------
其中distance
的值表示该古诗词与输入句子的相似程度,值越接近1相似程度越高。
delete
:删除已有集合。
exit
:退出当前命令,或者退出项目。
本项目采用 MIT 许可证。