前序
在之前,已经简单完成了文档的加载,分割,向量化这些步骤,最后得到了结果。但是这些数据都是一次性的。假设一个律师所,有几千上万份卷宗,不可能每次使用都重新向量化数据吧。
所以我们需要有一个地方存储起来,比如关系型数据库MySQL,非关系性数据库MangoDB这样,对应类型数据存放起来。
而向量化的数据,需要使用到向量数据库
一、向量数据库简介
向量数据库(Vector Database)也叫矢量数据库,是专为存储、处理、分析「向量数据」而生的,能够基于目标向量快速进行相似度搜索,并返回最相近的数据。总而言之,就是用来存储和处理向量数据的数据库。
随着大型AI语言模型的崛起,向量数据库成为了解决模型“幻觉”问题的关键。它号称是LLM记忆的海马体,是大模型的记忆和存储核心,通过注入实时&私域数据的形式,可以使得LLM能够在更多通用场景中落地应用,缓解模型”幻觉“的问题。
常见的向量数据库:Milvus、Chroma、Weaviate、Faiss、Elasticsearch、PGVector、opensearch、腾讯VectorDB,ClickHouse。
二、Milvus 向量数据库
基本介绍
Milvus(米尔乌斯)是一个高性能、高度可扩展的开源的向量数据库,诞生于2019年,由Zilliz开发并维护,后成为LF AI & Data Foundation的托管项目之一,支持针对 TB 级向量的增删改操作和近实时查询,具有高度灵活、稳定可靠以及高速查询等特点。Milvus 集成了 Faiss、NMSLIB、Annoy 等广泛应用的向量索引库,Milvus 支持数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel 等功能,同时大幅优化了向量检索的性能,可满足任何向量检索场景的应用需求,提供了一整套简单直观的 API,让你可以针对不同场景选择不同的索引类型。还可以对标量数据进行过滤,进一步提高了召回率,增强了搜索的灵活性。
Milvus可在从笔记本电脑到大规模分布式系统的各种环境中高效运行。
官网:https://milvus.io/
文档:https://milvus.io/docs/zh/overview.md
仓库:https://github.com/milvus-io/milvus
安装Milvus数据库
1. 安装docker
目前Milvus运行的环境都是在docker上,所以在安装Milvus之前,我们需要先确认docker和docker-compose已经安装到本地机子上了。
注意:
默认情况下,如果安装的docker是docker-desktop默认会顺便已经安装了docker-compose,则不需要再继续安装docker-compose,否则会报错问题,这时候需要卸载掉python安装的。
如果本地机子没有安装docker-compose,提前按以下命令安装一下:
# 这个命令必须保证自己的机子已经安装了docker和python3.8+
pip install docker-compose
跟我一样使用Mac的也需要注意。如果安装了docker desktop,但是在命令行运行docker-compose --version
失败的。可能是以下问题
sudo rm /usr/local/bin/docker-compose
sudo ln -s /Applications/Docker.app/Contents/Resources/cli-plugins/docker-compose /usr/local/bin/docker-compose
我通过上面这个方法后,可以成功解决问题。
2.下载Milvus镜像服务配置文件
下载链接:https://github.com/milvus-io/milvus/releases/download/v2.4.12/milvus-standalone-docker-compose.yml
下载完成以后,执行如下命令即可启动Milvus数据库:
docker-compose -f milvus-standalone-docker-compose.yml up -d
也是极其耗时的操作。
很容易就拉取失败了,还是配置一下docker,使用国内镜像源吧
docker设置新增国内镜像源
..."registry-mirrors": ["https://docker.1ms.run","https://hub.rat.dev","https://docker.1panel.live"]
再次运行就可以慢慢等它拉取镜像了zzz
这样就是启动成功了。
关闭数据库服务镜像,命令如下:
docker-compose -f milvus-standalone-docker-compose.yml down
三、连接Milvus数据库
首先安装三方库
pip install pymilvus[model]
# 如果上面这个识别不了的,就用下面这种
pip install "pymilvus[model]"# 如果觉得慢的一批,可以换一下国内镜像源哈
pip install "pymilvus[model]" -i https://mirrors.aliyun.com/pypi/simple/
启动docker时,可以看到,默认端口是19530
方式1:
from pymilvus import connections, db# 连接milvus数据库服务器
connections.connect(host="127.0.0.1", # 连接服务端地址,port=19530, # 连接端口,milvus默认监听19530alias='default', # 连接的别名,如果不设置,默认为default,db_name='default' # 连接的数据库,默认是default
)# 判断是否连接成功
res = db.connections.has_connection('default')
print(res)# 断开数据库连接
# 此处必须填写断开的连接别名
connections.disconnect('default')
方式2:
from pymilvus import MilvusClientclient = MilvusClient("http://localhost:19530")
# client = MilvusClient() # 上面的内容可以简写
res = client.list_users()print(res)
# 断开连接
client.close()"""
输出结果 :['root']
"""
可以看到运行成功,能输出结果。针不戳。就可以继续后续的更多数据库相关的学习了。