Milvus×Dify半小时轻松构建RAG系统

前言
"最近,检索增强生成(RAG)技术在AI界引起了广泛关注。作为一种将知识库与生成模型结合的新型架构,RAG大大提升了AI应用的实际表现。而在构建RAG系统时,Milvus作为业界领先的开源向量数据库,扮演着关键角色。本文将通过在Dify平台上使用Milvus,带领大家构建一个高效的RAG系统,探索向量数据库的实际应用场景。"
一、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.png
1.4 Milvus 的应用场景
Milvus 的应用场景非常广泛,包括但不限于:
图像和视频检索。我们可以使用 Milvus 存储图像和视频的向量数据,然后使用这些向量数据进行检索。
文本检索。我们可以使用 Milvus 存储文本的向量数据,然后使用这些向量数据进行检索。
推荐系统。我们可以使用 Milvus 存储用户和物品的向量数据,然后使用这些向量数据进行推荐。
自然语言处理。我们可以使用 Milvus 存储文本的向量数据,然后使用这些向量数据进行自然语言处理。
二、Dify 平台的介绍
2.1 什么是 Dify 平台?
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
三、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
2.png
模式三:Milvus Distributed
如果你的需求是处理大规模数据,比如亿级别的向量检索,那么Milvus Distributed正是为你量身定制。它可以部署在Kubernetes集群中,适合云原生架构的大规模场景。
简单部署示范:
1.配置好Kubernetes集群。
2.使用Helm或Operator进行Milvus的分布式部署。
Milvus在Dify上的实战
说明:请确保系统已安装docker和docker-compose
4.1.1 将dify项目Clone到本地
git clone https://github.com/langgenius/dify.git
4.1.2 拷贝env并修改指定使用Milvus
cp .env.example .env
3.png
4.1.3 执行docker-compose启动dify
docker-compose -f docker-compose.yaml up -d
4.png
4.1.4 访问dify平台并登录
5.png
4.1.5 使用Milvus构建RAG
说明:部署前已准备好模型,此文档中对如何部署本地模型不做赘述
6.png
4.1.6 准备数据集创建知识库上传测试文档
7.png
8.png
9.png
4.1.7 验证向量检索是否成功
可以看到dify日志里显示是成功的
10.png
Milvus数据库中也有数据了
11.png
4.1.8 尝试验证RAG效果
12.png
四、未来展望
想象一下,未来我们可以用Milvus处理数以亿计的图像或文本,并在几秒内完成检索。而且,Milvus不断进化,未来的版本可能在数据安全性、可视化、性能扩展等方面做得更加出色。
技术干货
LLMs 诸神之战:LangChain ,以【奥德赛】之名
毫无疑问,大语言模型(LLM)掀起了新一轮的技术浪潮,成为全球各科技公司争相布局的领域。诚然,技术浪潮源起于 ChatGPT,不过要提及 LLMs 的技术发展的高潮,谷歌、微软等巨头在其中的作用不可忽视,它们早早地踏入 AI 的技术角斗场中,频频出招,势要在战斗中一争高下,摘取搜索之王的桂冠。而这场大规模的 AI 之战恰好为 LLMs 技术突破奏响了序曲。LangChain 的加入则成为此番技术演进的新高潮点,它凭借其开源特性及强大的包容性,成为 LLMs 当之无愧的【奥德赛】。
2023-5-17技术干货
GPTCache 悬赏令!寻找最佳捉虫猎手,豪华赏格等你来拿!
捉虫数量越多,奖品越丰厚!
2023-8-2技术干货
如何在 Jupyter Notebook 用一行代码启动 Milvus?
本文将基于 Milvus Lite,为大家介绍如何在 Jupyter Notebook 中使用向量数据库。
2023-6-12