小白学 RAG:Milvus 介绍与使用教程

unsetunset什么是Milvus?unsetunset

Milvus 是一款高性能、高扩展性的开源向量数据库,专为处理海量向量数据的实时召回而设计。它基于 FAISS、Annoy、HNSW 等向量搜索库构建,核心功能是解决稠密向量相似度检索的问题。Milvus 不仅支持基本的向量检索,还提供数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel 等功能,同时优化了向量检索的性能,以满足各种向量检索场景的应用需求。

Milvus 的架构设计采用了云原生技术,支持存储与计算分离,使得计算节点可以横向扩展。它由四个层次组成:接入层(Access Layer)、协调服务(Coordinator Service)、执行节点(Worker Node)和存储服务(Storage)。这种分层设计使得各个组件相互独立,可以独立扩展和容灾,从而提高了系统的弹性和灵活性。

Milvus 支持多种部署模式,包括轻量级的 Milvus Lite、单机服务器部署的 Milvus Standalone,以及可部署在 Kubernetes 集群上的 Milvus Distributed。这些部署模式使得 Milvus 能够适应不同规模的数据和应用场景。

unsetunsetMilvus基础使用unsetunset

在 Milvus 中,定义集合(Collection)的模式(Schema)是一个重要的步骤,因为它决定了如何存储和检索数据。根据您的描述,您想要创建一个集合,其中主键(Primary Key)和向量字段(Vector Field)使用默认名称(“id” 和 “vector”),并且使用余弦相似度(COSINE)作为度量类型(Metric Type)。

  • 导入环境
from pymilvus import MilvusClient
client = MilvusClient("milvus_demo.db")
  • 创建Collection
if client.has_collection(collection_name="demo_collection"):
    client.drop_collection(collection_name="demo_collection")
client.create_collection(
    collection_name="demo_collection",
    dimension=768,  # The vectors we will use in this demo has 768 dimensions
)
  • 创建测试数据
import random

# Text strings to search from.
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

# Use fake representation with random vectors (768 dimension).
vectors = [[random.uniform(-1, 1) for _ in range(768)] for _ in docs]
data = [
    {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"}
    for i in range(len(vectors))
]

print("Data has", len(data), "entities, each with fields: ", data[0].keys())
print("Vector dim:", len(data[0]["vector"]))
  • 插入数据
res = client.insert(collection_name="demo_collection", data=data)
print(res)
  • 查询数据
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
    collection_name="demo_collection",
    data=[[random.uniform(-1, 1) for _ in range(768)]],
    filter="subject == 'history'",
    limit=2,
    output_fields=["text", "subject"],
)

print(res)

unsetunsetMilvus 特性unsetunset

Milvus 支持的大多数向量索引类型都使用近似最近邻搜索(ANNS),包括:

  • HNSW:HNSW 是一种基于图的索引,最适合对搜索效率有高需求的场景。还有 GPU 版本 GPU_CAGRA,感谢 Nvidia 的贡献。

  • FLAT:FLAT 最适合在小型、百万规模的数据集上寻求完全精确和准确的搜索结果。还有 GPU 版本 GPU_BRUTE_FORCE。

  • IVF_FLAT:IVF_FLAT 是一种基于量化的索引,最适合寻求准确性和查询速度之间理想平衡的场景。还有 GPU 版本 GPU_IVF_FLAT。

  • IVF_SQ8:IVF_SQ8 是一种基于量化的索引,最适合在磁盘、CPU 和 GPU 内存资源非常有限的情况下显著减少资源消耗的场景。

  • IVF_PQ:IVF_PQ 是一种基于量化的索引,最适合即使牺牲准确性也要追求高查询速度的场景。还有 GPU 版本 GPU_IVF_PQ。

  • SCANN:SCANN 在向量聚类和产品量化方面与 IVF_PQ 类似。它们的区别在于产品量化的实现细节和使用 SIMD(单指令/多数据)进行高效计算。

  • DiskANN:基于 Vamana 图,DiskANN 支持在大型数据集中进行高效搜索。

用于浮点嵌入的广泛使用的度量包括:

  • 余弦相似度(Cosine):这是一种归一化的内积,通常用于文本相似度搜索(自然语言处理,NLP)。

  • 欧几里得距离(L2):这种度量通常用于计算机视觉(CV)领域。

  • 内积(IP):这种度量通常用于自然语言处理(NLP)领域。用于二进制嵌入的广泛使用的度量包括:

  • 汉明距离(Hamming):这种度量通常用于自然语言处理(NLP)领域。

  • 杰卡德相似度(Jaccard):这种度量通常用于分子相似度搜索领域。

unsetunsetMilvus 架构unsetunset

Milvus 采用存储和计算分离的共享存储架构,实现计算节点的横向扩展。遵循数据平面和控制平面分离的原则,Milvus 包括四个层次:接入层、协调服务、工作节点和存储。这些层在扩展或灾难恢复方面是相互独立的。

遵循数据平面和控制平面分离的原则,Milvus 由四个层次组成,这些层次在扩展性和灾难恢复方面是相互独立的。

1. 接入层

接入层由一组无状态代理组成,是系统的前端层和用户的端点。它验证客户端请求并减少返回的结果:

  • 代理本身是无状态的。它使用负载均衡组件(如 Nginx、Kubernetes Ingress、NodePort 和 LVS)提供统一的服务地址。

  • 由于 Milvus 采用大规模并行处理(MPP)架构,代理聚合并后处理中间结果,然后返回最终结果给客户端。

2. 协调服务

协调服务分配任务给工作节点,并作为系统的大脑。它承担的任务包括集群拓扑管理、负载均衡、时间戳生成、数据声明和数据管理。

协调服务有三种类型:根协调器(root coord)、数据协调器(data coord)和查询协调器(query coord)。

  • 根协调器(root coord):根协调器处理数据定义语言(DDL)和数据控制语言(DCL)请求,例如创建或删除集合、分区或索引,以及管理时间戳 Oracle(TSO)和时间滴答发行。

  • 查询协调器(query coord):查询协调器管理查询节点的拓扑和负载均衡,以及从增长段到封闭段的交接。

  • 数据协调器(data coord):数据协调器管理数据节点和索引节点的拓扑,维护元数据,并触发刷新、压缩、索引构建和其他后台数据操作。

3. 工作节点

工作节点是系统的执行单元。工作节点遵循协调服务的指令,执行来自代理的数据操作语言(DML)命令。由于存储和计算的分离,工作节点是无状态的,可以在 Kubernetes 上部署时促进系统的扩展和灾难恢复。工作节点有三种类型:

  • 查询节点:查询节点通过订阅日志代理检索增量日志数据并将其转化为增长段,从对象存储中加载历史数据,并在向量和标量数据之间进行混合搜索。

  • 数据节点:数据节点通过订阅日志代理检索增量日志数据,处理变更请求,并将日志数据打包成日志快照并存储在对象存储中。

  • 索引节点:索引节点构建索引。索引节点不需要驻留在内存中,可以使用无服务器框架实现。

4. 存储

存储是系统的骨干,负责数据持久性。它包括元存储、日志代理和对象存储。

  • 元存储:元存储存储集合模式、消息消费检查点等元数据的快照。由于存储元数据要求极高的可用性、强一致性和事务支持,Milvus 选择 etcd 作为元存储。Milvus 还使用 etcd 进行服务注册和健康检查。

  • 对象存储:对象存储存储日志快照文件、标量和向量数据的索引文件以及中间查询结果。Milvus 使用 MinIO 作为对象存储,并可以在 AWS S3 和 Azure Blob 等流行且成本效益高的存储服务上轻松部署。然而,对象存储具有较高的访问延迟,并按查询次数收费。为提高性能和降低成本,Milvus 计划在基于内存或 SSD 的缓存池上实现冷热数据分离。

  • 日志代理:日志代理是一个支持回放的发布订阅系统。它负责流数据持久化和事件通知,并确保在工作节点从系统故障中恢复时增量数据的完整性。Milvus 集群使用 Pulsar 作为日志代理;Milvus 独立使用 RocksDB 作为日志代理。此外,日志代理可以轻松替换为 Kafka 等流数据存储平台。

在大模型时代,我们如何有效的去学习大模型?

现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述

三、AI大模型经典PDF书籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、AI大模型各大场景实战案例

在这里插入图片描述

结语

【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值