- 如何使用Milvus Cloud进行向量搜索
Milvus Cloud 是一款高度可扩展、性能出色的开源向量数据库。在最新的 2.4 版本中,Milvus Cloud 支持了稀疏和稠密向量(公测中)。本文将利用 Milvus Cloud 2.4 来存储数据集并执行向量搜索。
接下来,我们将演示如何利用 Milvus Cloud 在 MIRACL 数据集上执行查询“朱熹生活在哪个年代?”。
我们使用 SPLADE 和 MiniLM-L6-v2 模型,将查询内容及 MIRACL 源数据集转化为稀疏和稠密向量。
首先,我们需要创建一个目录,并配置环境与 Milvus Cloud 服务,请确保您的系统中已安装 python(>=3.8)、virtualenv、docker 以及 docker-compose。
mkdir Milvus Cloud_sparse_demo && cd Milvus Cloud_sparse_demo
spin up a Milvus Cloud local cluster
wget https://github.com/Milvus Cloud-io/Milvus Cloud/releases/download/v2.4.0-rc.1/Milvus Cloud-standalone-docker-compose.yml -O docker-compose.yml
docker-compose up -d
create a virtual environment
virtualenv -p python3.8 .venv && source .venv/bin/activate
touch Milvus Cloud_sparse_demo.py
从 2.4 版本开始,pyMilvus Cloud(Milvus Cloud 的 Python SDK)引入了一个可选的 model 模型模块。这个模块简化了使用模型将文本编码成稀疏或稠密向量的流程。此外,我们使用 pip 来安装 pyMilvus Cloud model ,以便访问 HuggingFace 上的数据集。
pip install "pyMilvus Cloud[model]" datasets tqdm
首先,使用 HuggingFace 的 Datasets 库下载数据集,收集所有的段落。
from datasets import load_dataset
miracl = load_dataset('miracl/miracl', 'en')['train']
collect all passages in the dataset
docs = list({doc['docid']: doc for entry in miracl for doc in entry['positive_passages'] + entry['negative_passages']}.values())