最近,检索增强生成(RAG)技术在AI界引起了广泛关注。作为一种将知识库与生成模型结合的新型架构,RAG大大提升了AI应用的实际表现。而在构建RAG系统时,Milvus作为业界领先的开源向量数据库,扮演着关键角色。本文将通过在Dify平台上使用Milvus,带领大家构建一个高效的RAG系统,探索向量数据库的实际应用场景。
01.Milvus基本原理介绍
1.1 为什么要用向量数据库?
在AI应用场景下,比如图像识别、自然语言处理等,数据往往是非结构化的。传统的关系型数据库很难处理这些高维度的非结构化数据。因此,向量数据库应运而生,专门设计用于存储和管理这种数据,并可以实现高效的相似度检索。
向量数据库通过将复杂的数据(如图片、文本)转化为向量的形式进行存储,每个向量代表数据中的不同特征,方便快速检索相似内容。比如在推荐系统中,可以通过用户行为向量,检索出相似用户的行为进行个性化推荐。
1.2 为什么要用Milvus?
Milvus 是目前领先的开源向量数据库之一,设计之初就针对大规模非结构化数据的存储与检索进行了优化。它具备如下优势:
高性能:Milvus基于诸如FAISS、Annoy和HNSW等先进的向量搜索库,能够处理亿级甚至更大规模的向量数据,适合需要高效检索的应用场景。
可扩展性:Milvus采用了存储和计算分离的架构,支持水平扩展,能够灵活适应从小型应用到大型分布式系统的需求。
广泛的应用场景:Milvus可以应用于各种AI场景,如图像、视频检索,文本检索,推荐系统等,具有广泛的行业适用性
通过使用Milvus,我们能够大大提升在大规模向量检索场景下的处理效率,从而让AI应用变得更加智能、高效。
1.3 Milvus架构概述
Milvus 建立在流行的矢量搜索库(包括 Faiss、HNSW、DiskANN、SCANN 等)之上,旨在对包含数百万、数十亿甚至数万亿矢量的密集矢量数据集进行相似性搜索。
Milvus 采用共享存储架构,存储和计算分离,计算节点可水平扩展。Milvus 遵循数据平面和控制平面分解的原则,包括:接入层、协调器服务、工作节点和存储。在扩展或灾难恢复方面,这些层是相互独立的。
1.4 Milvus 的应用场景
Milvus 的应用场景非常广泛,包括但不限于:
图像和视频检索。我们可以使用 Milvus 存储图像和视频的向量数据,然后使用这些向量数据进行检索。
文本检索。我们可以使用 Milvus 存储文本的向量数据,然后使用这些向量数据进行检索。
推荐系统。我们可以使用 Milvus 存储用户和物品的向量数据,然后使用这些向量数据进行推荐。
自然语言处理。我们可以使用 Milvus 存储文本的向量数据,然后使用这些向量数据进行自然语言处理。
02.Dify 平台的介绍
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
03.Milvus 与 Dify 平台的部署实践
在部署过程中,我发现Milvus提供了三种部署模式,分别适合不同的使用场景。接下来,我会分别介绍这三种模式,并通过简单的示范,带你快速上手。
模式一:Milvus Lite
是一个可以轻松集成到您的应用程序中的 Python 库。作为 Milvus 的轻量级版本,它非常适合在 Jupyter Notebook 中快速原型设计或在资源有限的边缘设备上运行。
3.1.1 设置 Milvus Lite
pip install -U pymilvus
3.1.2 连接Miluvs Lite
在pymilvus
中,指定本地文件名作为 MilvusClient 的 uri 参数将使用 Milvus Lite。
运行下面代码后,将在当前文件夹中生成一个名为milvus_demo.db的数据库文件。
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
模式二:Milvus Standalone
3.2.1 首先,我们需要获取Milvus的部署文件,只需在终端运行以下命令
wget https://github.com/milvus-io/milvus/releases/download/v2.4.5/milvus-standalone-docker-compose.yml -O docker-compose.yml
3.2.2 然后执行以下命令,Milvus就可以启动啦!```
sudo docker compose up -d
3.2.3 等一会儿,就会看到Milvus已经在后台运行
docker ps -a
模式三:Milvus Distributed
如果你的需求是处理大规模数据,比如亿级别的向量检索,那么Milvus Distributed正是为你量身定制。它可以部署在Kubernetes集群中,适合云原生架构的大规模场景。
简单部署示范:
1.配置好Kubernetes集群。
2.使用Helm或Operator进行Milvus的分布式部署。
Milvus在Dify上的实战
说明:请确保系统已安装docker和docker-compose
将dify项目Clone到本地
git clone https://github.com/langgenius/dify.git
拷贝env并修改指定使用Milvus
cp .env.example .env
执行docker-compose启动dify
docker-compose -f docker-compose.yaml up -d
访问dify平台并登录
使用Milvus构建RAG
说明:部署前已准备好模型,此文档中对如何部署本地模型不做赘述
准备数据集创建知识库上传测试文档
验证向量检索是否成功
可以看到dify日志里显示是成功的
Milvus数据库中也有数据了
尝试验证RAG效果
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。