通过阿里云Milvus与PAI搭建高效的检索增强对话系统

阿里云Milvus现已无缝集成于阿里云PAI平台,一站式赋能用户构建高性能的RAG(Retrieval-Augmented Generation)对话系统。您可以利用Milvus作为向量数据的实时存储与检索核心,高效结合PAI和LangChain技术栈,实现从理论到实践的快速转化,搭建起功能强大的RAG解决方案。

背景信息

EAS简介

模型在线服务EAS(Elastic Algorithm Service)是一种模型在线服务平台,可支持您一键部署模型为在线推理服务或AI-Web应用。它提供的弹性扩缩容和蓝绿部署等功能,可以支撑您以较低的资源成本获取高并发且稳定的在线算法模型服务。此外,EAS还提供了资源组管理、版本控制以及资源监控等功能,方便您将模型服务应用于业务。EAS适用于实时同步推理、近实时异步推理等多种AI推理场景,并具备完整运维监控体系等能力。

更多信息,请参见EAS模型服务概述。

RAG简介

随着AI技术的飞速发展,生成式人工智能在文本生成、图像生成等领域展现出了令人瞩目的成就。然而,在广泛应用大语言模型(LLM)的过程中,一些固有局限性逐渐显现:

  • 领域知识局限:大语言模型通常基于大规模通用数据集训练而成,这意味着它们在处理专业垂直领域的具体应用时可能缺乏针对性和深度。

  • 信息更新滞后:由于模型训练所依赖的数据集具有静态特性,大模型无法实时获取和学习最新的信息与知识进展。

  • 模型误导性输出:受制于数据偏差、模型内在缺陷等因素,大语言模型有时会出现看似合理实则错误的输出,即所谓的“大模型幻觉”。

为克服这些挑战,并进一步强化大模型的功能性和准确性,检索增强生成技术RAG应运而生。这一技术通过整合外部知识库,能够显著减少大模型虚构的问题,并提升其获取及应用最新知识的能力,从而实现更个性化和精准化的LLM定制。

RAG技术架构的核心为检索和生成。其中,检索部分采用了高效的向量检索引擎和向量数据库技术,例如基于开源库Faiss、Annoy以及HNSW算法优化构建的Milvus系统,极大地提升了对大规模数据进行快速检索和精确分析的能力。这样的设计使得RAG能够在必要时即时调用相关领域或最新信息,有效弥补了传统大语言模型的不足之处。

前提条件

  • 已创建Milvus实例,并配置了公网访问。具体操作请参见快速创建Milvus实例和网络访问与安全设置。

  • 已开通PAI(EAS)并创建了默认工作空间。具体操作,请参见开通PAI并创建默认工作空间。

使用限制

Milvus实例和PAI(EAS)须在相同地域下。

操作流程

步骤一:通过PAI部署RAG系统

  1. 进入模型在线服务页面。

    1. 登录PAI控制台。

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入模型在线服务(EAS)页面。

      image

  2. PAI-EAS模型在线服务页面,单击部署服务

  3. 部署服务页面,选择大模型RAG对话系统部署

  4. 部署大模型RAG对话系统页面,配置以下关键参数,其余参数可使用默认配置,更多参数详情请参见大模型RAG对话系统。

    参数

    描述

    基本信息

    服务名称

    您可以自定义。

    模型来源

    使用默认的开源公共模型

    模型类别

    本示例以Qwen1.5-1.8b为例。

    资源配置

    实例数

    使用默认的1。

    资源配置选择

    按需选择GPU资源配置。例如,ml.gu7i.c16m30.1-gu30。

    向量检索库设置

    版本类型

    选择Milvus

    访问地址

    Milvus实例的内网地址。您可以在Milvus实例的实例详情页面查看。

    代理端口

    Milvus实例的Proxy Port。您可以在Milvus实例的实例详情页面查看。默认为19530。

    账号

    配置为root。

    密码

    配置为创建Milvus实例时,由您自定义的root用户的密码。

    数据库名称

    配置为已创建的数据库名称,例如default。

    Collection名称

    输入新的Collection名称。

    专有网络配置

    VPC

    创建Milvus实例时选择的VPC、交换机和安全组。您可以在Milvus实例的实例详情页面查看。

    交换机

    安全组名称

  5. 单击部署

    服务状态变为运行中时,表示服务部署成功。

步骤二:通过RAG WebUI上传知识库

  1. 配置RAG对话系统。

    1. 模型在线服务(EAS)页面,单击查看Web应用,进入WebUI页面。

    2. 配置Embedding模型。

      在RAG服务WebUI界面的Settings选项卡中,系统已自动识别并应用了部署服务时配置的向量检索库设置。

      • Embedding Model Name:系统内置四种模型供您选择,将自动为您配置最合适的模型。

      • Embedding Dimension:选择Embedding Model Name后,系统会自动进行配置,无需手动操作。

      image

    3. 测试向量检索库连接是否正常。

      系统已自动识别并应用了部署服务时配置的向量检索库设置,并且该设置不支持修改。您可以单击Connect Milvus,来验证Milvus连接是否正常。

  2. 上传知识库。

    在RAG服务WebUI界面的Upload选项卡中,可以上传知识库文档。

    1. 设置语义切块参数。

      通过配置以下参数来控制文档切块粒度的大小和进行QA信息提取:

      参数

      描述

      Chunk Size

      指定每个分块的大小,单位为字节,默认为500。

      Chunk Overlap

      表示相邻分块之间的重叠量,默认为10。

      Process with QA Extraction Model

      通过选中Yes复选框启动QA信息提取功能,系统将在您上传业务数据文件后自动抽取出QA对,以获得更好的检索和回答效果。

    2. Files页签下上传业务数据文件(支持多文件上传)。

      本文以唐诗三百首的poems.txt文档作为示例数据,您可以直接使用。

    3. 单击Upload,系统会先对上传的文件进行数据清洗(文本提取、超链接替换等)和语义切块,然后进行上传。

步骤通过RAG WebUI对话

在RAG服务WebUI界面的Chat选项卡中,提供了多种不同的Prompt策略,您可以选择合适的预定义Prompt模板或输入自定义的Prompt模板以获得更好的推理效果。

配置LLM问答策略

配置Retrieval问答策略

配置RAG(Retrieval + LLM)问答策略

  1. 在RAG服务WebUI界面的Chat选项卡中,选择LLM

  2. 直接与LLM对话,返回大模型的回答。

    image

步骤查看知识库切块

Attu是一款专为Milvus向量数据库打造的开源数据库管理工具,提供了便捷的图形化界面,极大地简化了对Milvus数据库的操作与管理流程。下面,我们将使用Milvus的Attu工具,查看向量数据库的存储内容。

  1. 进入安全配置页面。

    1. 登录阿里云Milvus控制台。

    2. 在左侧导航栏,单击Milvus实例

    3. 在顶部菜单栏处,根据实际情况选择地域。

    4. Milvus实例页面,单击目标实例名称。

    5. 单击安全配置页签。

  2. 配置公网访问。

    1. 安全配置页签,单击开启公网

      image

    2. 输入当前服务器的公网访问IP地址或符合CIDR定义的IP地址段。

      多个IP条目以半角逗号(,)隔开,不可重复。您可以通过访问IP地址,获取当前服务器的公网访问IP地址。

      image

    3. 单击确定

  3. 访问Attu页面。

    1. 单击页面上方的Attu manager

      image

    2. 在弹出的对话框中输入所要访问的数据库、用户名和密码,单击连接,即可打开Attu管理页面。

      实例创建完成后,系统会自动创建一个名为default的默认数据库,并为您创建一个名为root的用户,该用户的密码由您在创建实例时自行设置。

      image

  4. 在Attu页面,您可以看到RAG服务自动创建的Collection。

    image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/55739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第69期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

react 知识点汇总(非常全面)

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它的核心理念是“组件化”,即将用户界面拆分为可重用的组件。 React 的组件通常使用 JSX(JavaScript XML)。JSX 是一种 JavaScript 语法扩展,…

HCIP——GRE和MGRE

目录 VPN GRE GRE环境的搭建 GRE的报文结构 GRE封装和解封装报文的过程 GRE配置​编辑 R1 R2 GRE实验​​​​​​​​编辑 MGRE 原理 MGRE的配置 R1 R2 R3 R4 查看映射表 抓包 MGRE环境下的RIP网络 综合练习​编辑 VPN 说到GRE,我们先来说个大…

Http 协议和 RPC 协议有什么区别?

Http 协议和 RPC 协议有什么区别? 三个层面来述说: 从功能特性来说: HTTP是一个属于应用层的超文本传输协议,是万维网数据通信的基础,主要服务在网页端和服务端的数据传输上。 RPC是一个远程过程调用协议&#xff0…

AI+视频监控:EasyCVR安防平台赋能火电制造行业的视频智能管理方案

随着信息技术的飞速发展和智能制造的深入推进,火电制造行业作为国民经济的重要组成部分,正面临着智能化转型的迫切需求。为了提升生产效率、保障设备安全、优化管理流程,火电制造企业迫切需要引入先进的视频监控与人工智能技术。EasyCVR安防监…

TinyOS 点对基站通信

文章目录 一、前言1.1 发包的BlinkToRadio的数据包格式 二、混淆基站源码分析2.1 Makefile2.2 组件连接2.3 主逻辑代码 一、前言 1.1 发包的BlinkToRadio的数据包格式 如下,注意:AM层类型(1byte)即handlerID使可以在组件中修改的。 二、混淆基站源码…

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频,一期视频将常用配置和用法梳理清楚&#xff0…

【Mybatis篇】Mybatis的注解开发

🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 文章目录 🎯 Select注解 …

自动猫砂盆有必要买吗?高性价比的自动猫砂盆怎么选通通看这篇

最近市面上又新出了很多款式的自动猫砂盆,有些铲屎官蠢蠢欲动,但又在犹豫,自己真的需要自动猫砂盆吗?作为养猫4年的资深铲屎官,在买过这么多猫咪智能用品的里面,最不后悔的就是自动猫砂盆了!要知…

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十五章 Source Insight 的安装和使用

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

ElasticSearch备考 -- Multi match

一、题目 索引task有3个字段a、b、c,写一个查询去匹配这三个字段为mom,其中b的字段评分比a、c字段大一倍,将他们的分数相加作为最后的总分数 二、思考 通过题目要求对多个字段进行匹配查询,可以考虑multi match、bool query操作。…

RabbitMQ的相关题

一、 MQ的作⽤及应⽤场景 类似问题: 项⽬什么场景下使⽤到了MQ, 为什么需要MQ? RabbitMQ 的作⽤?使⽤场景有哪些? RabbitMQ…

【JWT安全】portswigger JWT labs 全解

目录 1.利用有缺陷的 JWT 签名验证 ①接受任意签名 lab1:通过未验证的签名绕过 JWT 身份验证 ②接受无签名的token lab2:通过有缺陷的签名验证来绕过 JWT 身份验证 2.暴力破解密钥 ①使用hashcat lab3:通过弱签名密钥绕过 JWT 身份验证 3.JWT 标头参数注入 ①通过 jwk…

多模态大语言模型(MLLM)-InstructBlip深度解读

前言 InstructBlip可以理解为Blip2的升级版,重点加强了图文对话的能力。 模型结构和Blip2没差别,主要在数据集收集、数据集配比、指令微调等方面下文章。 创新点 数据集收集: 将26个公开数据集转换为指令微调格式,并将它们归类…

大数据新视界 --大数据大厂之 GraphQL 在大数据查询中的创新应用:优化数据获取效率

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【C++】--类和对象(3)

🤑个人主页: 起名字真南 🤑个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 深入构造函数2 类型转换3 static成员4 友元函数5 内部类6 匿名对象 1 深入构造函数 之前我们实现构造函数的时候,初始化成员变量都是在函数体内赋值&#xff0c…

selenium有多个frame页时的操作方法(5)

之前文章我们提到,在webdriver.WebDriver类有一个switch_to方法,通过switch_to.frame()可以切换到不同的frame页然后才再定位某个元素做一些输入/点击等操作。 比如下面这个测试网站有2个frame页:http://www.sahitest.com/demo/framesTest.h…

5.toString()、构造方法、垃圾回收、静态变量与静态方法、单例设计模式、内部类

文章目录 一、toString()1. 优缺点2. 使用方法举例① Dos类里更省事的方法 ② Application里 二、构造方法1. 导入2. 什么是构造方法3. 怎么写构造方法① 无参的构造方法(无参构造器)② 有参的构造方法(有参构造器)③ 注意 4. 构造方法的重载 三、再探this1. 给成员变量用2. 给…

【用户管理 添加用户 超级用户 用户和组】

用户管理 添加用户超级用户用户和组 添加用户 介绍用户的管理操作 比如,添加一个用户 sudo useradd -m test1 其中,sudo表示管理员身份运行 修改用户密码 sudo passwd test1 删除用户 sudo userdel test 超级用户 1.首次使用时,需要给roo…

快速区分 GPT-3.5 与 GPT-4

问:鲁迅为什么暴打周树人? GPT3.5回答 各种稀奇古怪的理由 GPT4回答 正确区分鲁迅和周树人是同一个人 国内GPT入口 https://ai-to.cn/url/?ulihaimao