从零开始构建基于milvus向量数据库的文本搜索引擎

这篇具有很好参考价值的文章主要介绍了从零开始构建基于milvus向量数据库的文本搜索引擎。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在这篇文章中,我们将手动构建一个语义相似性搜索引擎,该引擎将单个论文作为“查询”输入,并查找Top-K的最类似论文。主要包括以下内容:

1.搭建milvus矢量数据库

2.使用MILVUS矢量数据库搭建语义相似性搜索引擎

3.从Kaggle下载ARXIV数据,使用dask将数据加载到Python中,并构建一个论文搜索引擎

1. 搭建milvus矢量数据库

    milvus数据库的安装比较简单,可以直接使用docker安装,建议安装2.1.x以上版本,功能更丰富,其分为标准版和集群版本,这里只安装标准版本。

 ① docker 在线安装:

https://milvus.io/docs/v2.1.x/install_standalone-docker.md

② docker 离线安装:若服务器存在网络限制,可使用离线安装策略,官方文档如下:

https://milvus.io/docs/v2.1.x/install_offline-docker.md

这里展示我自己参考官方离线安装文档,但有些不同的的安装方式,即自己手动下载容器,在手动上传至服务器:

(1)首先在这里下载docker-compose.yml,查看需要的容器:

http://$ wget https://github.com/milvus-io/milvus/releases/download/v2.1.1/milvus-standalone-docker-compose.yml -O docker-compose.yml

主要包括以下三个:

    image: quay.io/coreos/etcd:v3.5.0

    image: minio/minio:RELEASE.2022-03-17T06-34-49Z

    image: milvusdb/milvus:v2.1.1

(2)在docker hub找到需要下载的容器:

https://hub.docker.com/

从零开始构建基于milvus向量数据库的文本搜索引擎

 (3)复制pull命令到如下网址进行在线下载,并打包成tar:

https://pullimage.passerma.com/

这一步可参考博客:

在线下载Docker Hub镜像,打成tar包下载_passerma的博客-CSDN博客_dockerhub下载镜像

(4)后续步骤按照离线官方文档下这一步开始执行:

从零开始构建基于milvus向量数据库的文本搜索引擎

 出现以下显示,并通过docker-compose ps查看容器状态,出现以下结果则安装成功:

从零开始构建基于milvus向量数据库的文本搜索引擎

2.使用MILVUS矢量数据库搭建语义相似性搜索引擎

  参考官方文档:

  https://github.com/milvus-io/bootcamp/tree/master/solutions/text_search_engine/quick_deploy

 我这里由于服务器网络限制原因没有用第一种方案,如果使用第一种方案,前面的步骤1:搭建milvus矢量数据库,可直接跳过:

从零开始构建基于milvus向量数据库的文本搜索引擎

 第二种方案:以源码部署

第一步安装milvus已经在步骤一完成,跳过:

从零开始构建基于milvus向量数据库的文本搜索引擎

第二步:使用docker安装mysql,离线安装和在线安装都可以,离线安装参照上面miluv安装步骤,下载mysql5.7.tar包,上传至服务器,然后加载容器:

docker load -i mysql:5.7.tar

开启mysql服务:

 docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

 后续步骤按照教程走即可。

注意事项:

从零开始构建基于milvus向量数据库的文本搜索引擎

 这里的let endpoint 要填服务器地址加端口号。示例:http://12.88.8.104:8000

3.从Kaggle下载ARXIV数据,使用dask将数据加载到Python中,并构建一个论文搜索引擎

这个可参考文章:https://blog.csdn.net/deephub/article/details/126343422

我这里的改进如下:

可以直接将arxiv的json格式通过dask包读取后另存为csv格式,然后将数据通过serverapi上传即可:

 papers_df = papers_db.to_dataframe(meta=schema)

在这后面加上一句:

papers_df.to_csv(path,single_file=True)

出现的问题:

1.加载arxiv.csv文件时由于其源码是使用pandas一次转化为一个list,一次上传,这样会导致内存暴:milvus docker 会出现 exit(137)错误 

2.使用dask加载csv文件出现乱码的问题。

解决方法:

使用dask库加载:

dd_file = dask.dataframe.read_csv(file_dir,blocksize='10MB')blocksize表示一次加载的分片大小
for partition in tqdm(range(dd_file.npartitions)):
    subset_df = dd_file.get_partition(partition)
    if len(subset_df.index) !=0:
       data = [subset_df[col].values.compute().tolist() for col in ['title','text']]



#若使用上述方法出现乱码,可使用下述方法:
#先使用pandas加载
pd_file = pd.read_csv(file)
dd_file = dask.dataframe.from_pandas(pd_file, npartitions=10)
for partition in tqdm(range(dd_file.npartitions)):
    subset_df = dd_file.get_partition(partition)
    if len(subset_df.index) !=0:
       data = [subset_df[col].values.compute().tolist() for col in ['title','text']]

附dask官方文档:

https://docs.dask.org/en/latest/dataframe-create.html

3.在将数据进行上传时,出现mysql数据库 1366编码错误的问题:

在mysql_helpers.py修改如下两个地方:文章来源地址https://www.toymoban.com/news/detail-488014.html

def __init__(self):
    self.conn = pymysql.connect(host=MYSQL_HOST, user=MYSQL_USER, port=MYSQL_PORT, 
                                 password=MYSQL_PWD,
                                 #1. 增加charset='utf8mb4'
                                 charset='utf8mb4',
                                 local_infile=True)




def create_mysql_table(self, table_name):
    self.test_connection()
    sql = "create table if not exists " + table_name +"(milvus_id TEXT, title TEXT, text TEXT);"
    try:
        self.cursor.execute(sql)
        #使用sql语句改变表编码格式
        self.cursor.execute("alter table "+table_name + " convert to charcter set utf8mb4;")

到了这里,关于从零开始构建基于milvus向量数据库的文本搜索引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 向量数据库~milvus

    本文主要基于milvus官方的材料外加自己的一些理解整理而来,欢迎交流 云原生:存算分离; 读写分离; 增量存量分离; 微服务架构,极致弹性; 日志即数据:通过message queue解耦生产者、消费着,降低系统复杂度; 提升index、data、query模块弹性; 流批一体:表和日志二象性;流式

    2024年02月03日
    浏览(47)
  • 《向量数据库》——向量数据库Milvus Cloud 和Dify比较

    Zilliz Cloud v.s. Dify Dify 作为开源的 LLMs App 技术栈,在此前已支持丰富多元的大型语言模型的接入,除了 OpenAI、Anthropic、Azure OpenAI、Hugging face、Replicate 等全球顶尖模型及模型托管平台,也完成了国内主流的各大模型支持(如文心一言、智谱 AI 等)。 而 Zilliz Cloud  和 Milvus 则是

    2024年02月08日
    浏览(58)
  • 《向量数据库指南》——开源框架NVIDIA Merlin & 向量数据库Milvus

    推荐系统 pipeline 中至关重要的一环便是为用户检索并找到最相关的商品。为了实现这一目标,通常会使用低维向量(embedding)表示商品,使用数据库存储及索引数据,最终对数据库中数据进行近似最近邻(ANN)搜索。这些向量表示是通过深度学习模型获取的,而这些深度学习

    2024年02月05日
    浏览(55)
  • 云原生向量数据库Milvus

    什么是 Milvus Milvus 是一款云原生向量数据库,它具备高可用、高性能、易拓展的特点,用于海量向量数据的实时召回。 Milvus 基于 FAISS、Annoy、HNSW 等向量搜索库构建,核心是解决稠密向量相似度检索的问题。在向量检索库的基础上,Milvus 支持数据分区分片、数据持久化、增量

    2024年02月02日
    浏览(53)
  • docker 安装向量数据库 Milvus

    官网为 www.milvus.io/ Milvus 向量数据库能够帮助用户轻松应对海量非结构化数据(图片 / 视频 / 语音 / 文本)检索。单节点 Milvus 可以在秒内完成十亿级的向量搜索(请参考:在线教程),分布式架构亦能满足用户的水平扩展需求。 Milvus 向量数据库的应用场景包括:互联网娱乐

    2024年02月13日
    浏览(86)
  • 向量数据库Annoy和Milvus

    Annoy 和 Milvus 都是用于向量索引和相似度搜索的开源库,它们可以高效地处理大规模的向量数据。 Annoy(Approximate Nearest Neighbors Oh Yeah): Annoy 是一种近似最近邻搜索算法,它通过构建一个树状结构来加速最近邻搜索。 Annoy 支持支持欧氏距离,曼哈顿距离,余弦距离,汉明距

    2024年02月09日
    浏览(39)
  • milvus: 专为向量查询与检索设计的向量数据库

    milvus docs milvus release Milvus的目标是:store, index, and manage massive embedding vectors generated by deep neural networks and other machine learning (ML) models. Milvus 向量数据库专为向量查询与检索设计,能够为万亿级向量数据建立索引。 与现有的关系数据库主要按照预定义的模式处理结构化数据不同,

    2024年02月15日
    浏览(38)
  • 《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3新功能

    支持用户通过 upsert 接口更新或插入数据。已知限制,自增 id 不支持 upsert;upsert 是内部实现是 delete + insert所以性能上会有一定损耗,如果明确知道是写入数据的场景请继续使用 insert。 支持用户通过输入参数指定 search 的 distance 进行查询,返回所有与目标向量距离位于某一

    2024年02月09日
    浏览(40)
  • 使用docker搭建Milvus向量数据库

    官网是这样说的: Milvus创建于2019年,目标单一:存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量。 作为一个专门用于处理输入向量查询的数据库,它能够对万亿规模的向量进行索引。与现有的关系数据库不同,Milvus主要按照预定义的模式处

    2024年02月09日
    浏览(41)
  • milvus向量数据库搭建及可视化

    官方文档 https://milvus.io/docs/install_standalone-docker.md sudo curl -L “https://github.com/docker/compose/releases/download/v2.10.0/docker-compose- ( u n a m e − s ) − (uname -s)- ( u nam e − s ) − (uname -m)” -o /usr/local/bin/docker-compose sudo curl -L https://get.daocloud.io/docker/compose/releases/download/v2.10.0/docker-compose- unam

    2024年02月08日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包