Milvus向量数据库06-RAG检索增强

Milvus向量数据库06-RAG检索增强

文章目录

  • Milvus向量数据库06-RAG检索增强
    • 1-学习目标
    • 2-参考网址
    • 3-执行过程记录
      • 1-到底什么是RAG
        • RAG 的基本流程:
        • 为什么 RAG 优于传统的基于检索的方法:
        • 示例流程:
      • 2-RAG和Elasticsearch对比
      • 3-RAG和向量数据库之间是什么关系
      • 4-RAG和大模型什么关系
      • 5-如何将输入Embedding向量化
      • 6-RAG的具体实现方案

网上关于RAG的讲解太多,导致内容不聚焦,大家说的越来越不具象了,在此进行整理,各位按需取用

鸣谢:感谢每一位无私奉献的传道者,在此不一一具名!


1-学习目标

  • 1)到底什么是RAG
  • 2)RAG和Elasticsearch对比
  • 3)RAG和向量数据库之间是什么关系
  • 4)RAG和大模型什么关系
  • 5)如何将输入Embedding向量化
  • 6)RAG的具体实现方案

2-参考网址

  • 个人尝试代码仓库:XXXXXX
  • 彻底搞懂大模型RAG(检索、增强、生成):https://blog.csdn.net/a2875254060/article/details/142468037
  • Milvus向量数据库03-搜索理论:https://blog.csdn.net/2301_77717148/article/details/144314159

3-执行过程记录

1-到底什么是RAG

检索增强生成(Retrieval-augmented Generation),简称RAG

查询向量数据库(Vector Database)是 Retrieval-Augmented Generation (RAG) 流程中的一部分,但并不等同于整个 RAG 流程。RAG
是一种结合了检索和生成的技术,旨在提高语言模型的性能,特别是在需要处理大量上下文或实时数据更新的场景中。

RAG 的基本流程:
  1. 检索(Retrieval):

    • 使用向量数据库或其他检索机制,根据输入查询检索相关文档或信息片段。
    • 向量数据库通常用于存储和检索高维向量,如文本的嵌入表示,以便快速找到最相关的文档。
  2. 生成(Generation):

    • 将检索到的相关文档与原始查询一起输入到语言模型中。
    • 语言模型根据这些信息生成回复或答案。
为什么 RAG 优于传统的基于检索的方法:
  • 上下文理解:

    • 传统的检索方法可能只能提供相关文档的列表,而 RAG 能够结合这些文档的内容生成更连贯和准确的回答。
  • 减少幻觉:

    • 语言模型有时会产生不准确或不存在的信息(称为“幻觉”),而 RAG 通过引入外部知识来减少这种现象。
  • 实时更新:

    • 向量数据库可以定期更新,确保检索到的信息是最新和最准确的。
示例流程:
  1. 用户查询:

    • 用户向系统提出一个查询,例如:“Zilliz Cloud 的主要功能是什么?”
  2. 检索阶段:

    • 系统将查询转换为向量,并在向量数据库中查找最相关的文档。
    • 假设检索到两个文档:
      • 文档1:描述 Zilliz Cloud 是一个全面管理的向量数据库和服务,帮助用户释放非结构化数据的潜力,用于 AI 应用。
      • 文档2:描述它能够存储、索引和管理由深度神经网络和其他机器学习模型生成的大量嵌入向量。
  3. 生成阶段:

    • 将检索到的文档与原始查询一起输入到语言模型中。
    • 语言模型生成回复,整合从多个文档中获取的信息,提供一个全面的答案。

通过这种方式,RAG 充分利用了向量数据库的强大检索能力以及语言模型的生成能力,为用户提供更准确和有用的信息。


2-RAG和Elasticsearch对比

  • Milvus向量数据库03-搜索理论:https://blog.csdn.net/2301_77717148/article/details/144314159

RAG相对于elasticsearch,理念上更先进,替换【传递的倒排索引的查找方式】为【向量距离关系查找方式】,而【向量】天生就和【LLM大模型】就耦合在一起,所以【RAG】在【大模型】场景中更适用

RAG(Retrieval-Augmented Generation,检索增强生成)和Elasticsearch是两种不同的技术,它们在某些应用场景中可以相互配合,但各自有不同的特点和用途。以下是它们之间的一些对比:

  1. 技术类型和用途

    • RAG:RAG是一种结合了检索(Retrieval)和生成(Generation)能力的自然语言处理技术。它通过从外部知识库中检索相关信息片段,然后将这些片段与用户输入一起送入生成模型,以生成更加准确和上下文相关的回答。
    • Elasticsearch:Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,主要用于存储、搜索和分析大量数据。
  2. 数据处理和检索

    • RAG:RAG模型可以有效地利用外部知识库,提供更深入、准确且有价值的答案,提高了生成文本的可靠性。
    • Elasticsearch:Elasticsearch以其快速的搜索能力著称,能够处理PB级数据,服务大公司;也可以运行在单机上,服务小公司。
  3. 可扩展性和性能

    • RAG:RAG模型具有高扩展性,检索和生成模块可以独立扩展,适应不同规模数据。
    • Elasticsearch:Elasticsearch可以在笔记本电脑上运行,也可以在承载了PB级数据的成百上千台服务器上运行,具有很好的水平扩展性。
  4. 实时性和动态性

    • RAG:RAG能通过外部知识库实时更新内容,避免依赖模型静态知识。
    • Elasticsearch:Elasticsearch提供近实时的搜索和分析能力,能够在海量数据下实现秒级响应。
  5. 成本效益

    • RAG:RAG是一个成本效益较高的选项,因为它需要的计算和存储资源较少,无需拥有自己的大型语言模型(LLM),也无需花费时间和资金对模型进行微调。
    • Elasticsearch:Elasticsearch作为一个成熟的搜索引擎,其成本效益取决于部署规模和使用情况,但通常需要一定的硬件和维护成本。
  6. 安全性和隐私管理

    • RAG:RAG可以通过限制知识库的权限来实现安全控制,确保敏感信息不被泄露。
    • Elasticsearch:Elasticsearch提供了跨集群复制功能,可以作为热备份随时投入使用,确保数据的安全性和可用性。
  7. 应用场景

    • RAG:RAG适用于需要结合检索和生成的场景,如问答系统、内容推荐等。
    • Elasticsearch:Elasticsearch适用于需要全文搜索、数据分析和日志分析的场景,如站内搜索、BI系统、商品价格监控等。

总的来说,RAG和Elasticsearch在技术特点和应用场景上有所不同,它们可以单独使用,也可以结合使用以发挥各自的优势。例如,在构建基于RAG的搜索功能时,可以利用Elasticsearch来存储和搜索专有数据,以及搜索可从中提取背景信息的其他外部知识库。


3-RAG和向量数据库之间是什么关系

RAG底层核心就是使用Vector向量的距离计算,所以RAG底层的存储系统不是【传统的数据库】而是【向量数据库】

RAG(Retrieval-Augmented Generation,检索增强生成)与向量数据库之间的关系主要体现在以下几个方面:

  1. 数据检索与增强:RAG技术通过从外部数据源检索相关信息,并将其作为输入提供给大型语言模型(LLMs),以增强模型在特定任务中的表现。向量数据库因其高效的数据存储和检索能力,成为RAG技术实施的重要支持。

  2. 语义相似性搜索:向量数据库的核心优势在于能够通过语义相似性算法实现海量非结构化数据的快速检索,这使得它在复杂的知识库构建、客户服务高效搜索等方面展现出显著优势。

  3. 技术互补性:RAG技术与向量数据库的结合,可以看作是一种技术互补。RAG通过检索系统提供具体、相关的事实和数据,而生成模型则能够灵活地构建回答,并融入更广泛的语境和信息。

  4. 解决大模型限制:RAG通过检索外部信息作为输入,辅助大型模型回答问题,这种方法能显著减少生成信息不准确的问题,增加回答的可追溯性。

  5. 私有数据管理:RAG提供了一个安全可落地的实践基础,同时也能更好地管理企业现有和新增的知识,解决知识依赖问题。向量数据库在这方面提供了访问权限控制和数据管理的支持。

  6. 技术实现:在业界实践中,RAG检索通常与向量数据库密切结合,催生了基于ChatGPT + Vector Database +
    Prompt的RAG解决方案,简称为CVP技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs)。

  7. 信息载体:向量数据库作为存储向量化数据的载体,与RAG技术没有直接关系,但可以作为RAG技术的一种具体实现方式。

综上所述,RAG与向量数据库之间的关系是相互依存和互补的。RAG利用向量数据库的高效检索能力来增强大型语言模型的性能,而向量数据库则提供了存储和检索向量化数据的能力,两者共同作用于提升知识管理和内容生成的效率和准确性。


4-RAG和大模型什么关系

RAG(Retrieval-Augmented
Generation,检索增强生成)是一种结合了信息检索技术与语言生成模型的人工智能技术。它通过从外部知识库中检索相关信息,并将其作为提示(Prompt)输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。RAG模型由Facebook
AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。

RAG与大模型的关系主要体现在以下几个方面:

  1. 互补性:RAG作为大语言模型(LLM)的应用开发架构,通过拓展访问特定领域数据库或内部知识库,补足通用模型在垂直领域的知识短板。

  2. 性能提升:RAG通过整合外部数据库的知识,提高了生成内容的准确性和可信度,减少了大模型的幻觉问题和过时知识的问题。

  3. 数据安全性:RAG对接的私有数据库不参与大模型数据集训练,能在改善模型性能的同时,更好地保证数据隐私和安全。

  4. 减少模型幻觉:RAG能有效减少模型幻觉的发生,进一步提升大模型检索和生成性能。

  5. 无需重新训练:RAG使得开发人员无需为每一个特定任务重新训练整个庞大的模型,他们可以简单地给模型加上一个知识库,通过这种方式增加模型的信息输入,从而提高回答的精确性。

  6. 应用拓展:RAG作为大模型在垂直领域的应用拓展,允许持续知识更新和集成领域特定信息,推动其成为各类大模型落地项目不可缺少的技术组件。

综上所述,RAG通过检索外部信息来增强大模型的能力,解决大模型在知识更新、准确性和数据安全性方面的挑战,是大模型应用中的一个重要方向。


5-如何将输入Embedding向量化

Embedding示例如下,输出embedding维度就是embedding列表的个数;如果是768位,列表就是768个向量

  • Embedding后的数据示例如下:
{"data": [{"embedding": [-0.013840336352586746,0.050973281264305115],"index": 0,"object": "embedding"}],"model": "embedding-2","object": "list","usage": {"completion_tokens": 0,"prompt_tokens": 9,"total_tokens": 9}
}

6-RAG的具体实现方案

当前使用【Milvus向量数据库】进行实现,在下一篇文档中进行详细补充

  • Milvus向量数据库07-向量数据库实战:https://blog.csdn.net/2301_77717148/article/details/144383257

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

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

相关文章

Oracle定位行锁的数据行

背景 今天上午在查询行锁的事后发现v$lock的id1和id2,阻塞的和被阻塞的会话一样,这能说明什么? 既然是被阻塞了,那争用的应该是同一块数据,但是一个事务已经修改了,没提交数据块上还有前镜像的指针&#…

力扣-图论-8【算法学习day.58】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

jenkins安装(jdk1.8已安装)

1. 下载对应jenkins版本 https://mirrors.jenkins.io/war/ 2. 上传至服务器目录并启动 mkdir -p /root/jenkins cd /root/jenkins 上传文件 启动:nohup java -jar jenkins.war --httpPort9090 &> jenkins.log & 访问:http://ip:9090 选…

异步操作、Promise和axios

1.Javascript是单线程的 什么是进程,什么是线程? 进程:进程是操作系统分配资源和调度的基本单位。它是一个程序的实例,包含了运行程序所需的代码和数据以及其它资源。 线程:线程是进程中的实际运行单位,也是…

python基础:(八)文件

目录 一.从文件中读取数据1.1读取整个文件1.2文件路劲1.3逐行读取 二.写入文件 一.从文件中读取数据 各位小伙伴,文件这一块得好好学,多看多敲代码,以后处理数据,写爬虫少不了这个,先从基础(简单的&#x…

基于视觉的3D占用网络汇总

综述文章:https://arxiv.org/pdf/2405.02595 基于视觉的3D占用预测方法的时间线概述: 自动驾驶中基于视觉的3D占用预测的分层结构分类 2023年的方法: TPVFormer, OccDepth, SimpleOccupancy, StereoScene, OccupancyM3D, VoxFormer, OccFormer, OVO, UniOcc, MiLO, Multi-…

IDEA创建Spring Boot项目配置阿里云Spring Initializr Server URL【详细教程-轻松学会】

1.首先打开idea选择新建项目 2.选择Spring Boot框架(就是选择Spring Initializr这个) 3.点击中间界面Server URL后面的三个点更换为阿里云的Server URL Idea中默认的Server URL地址:https://start.spring.io/ 修改为阿里云Server URL地址:https://star…

2024-12-06 Unity Addressables3——资源加载

文章目录 1 引用加载1.1 Addressables 的资源引用类1.2 加载资源1.3 加载场景1.4 释放资源 2 Label 介绍3 动态加载3.1 加载单个资源3.2 加载多个资源 Unity 版本:6000.0.26f1c1Addressables 版本:2.3.1 1 引用加载 1.1 Addressables 的资源引用类 Ass…

详解RabbitMQ在Ubuntu上的安装

​​​​​​​ 目录 Ubuntu 环境安装 安装Erlang 查看Erlang版本 退出命令 ​编辑安装RabbitMQ 确认安装结果 安装RabbitMQ管理界面 启动服务 查看服务状态 通过IP:port访问 添加管理员用户 给用户添加权限 再次访问 Ubuntu 环境安装 安装Erlang RabbitMq需要…

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析:功能说明:示例输出:使用场景: yarn list --pattern element-ui 是一个 Yarn 命令,用于列出项目中符合指定模式( element-ui)的依赖包信息。 命令解析: yarn list…

IO进程 学习笔记

……接上文 fputs(输入字符串) int fputs(const char *s, FILE *stream);功能:向指定文件中输入一串字符参数:s:输入字符串的首地址stream:文件流指针返回值:成功返回输出字符个数失败返回EOF文件指针偏移函…

Ubuntu压缩打包解压

ubuntu压缩打包 上图,压缩当前目录svn 为svn.tar.gaz,解压后再当前解压目录生成svn文件 在Ubuntu中,你可以使用tar命令来创建一个压缩包,或者使用zip命令来创建一个.zip压缩文件。以下是两种常见的压缩方法: 下图&am…

支付宝租赁小程序助力便捷生活新方式

内容概要 支付宝租赁小程序为现代人带来了许多惊喜,它不仅仅是一个简单的租赁平台,更是生活中不可或缺的好帮手。想象一下,无论你缺少什么,从工具到家居用品,只需轻轻一点,便能轻松找到需要的物品。这个小…

springboot413福泰轴承股份有限公司进销存系统(论文+源码)_kaic

摘 要 使用旧方法对福泰轴承股份有限公司进销存系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在福泰轴承股份有限公司进销存系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不…

y3编辑器文档3:物体编辑器

文章目录 一、物体编辑器简介1.1 界面介绍1.2 复用(导入导出)1.3 收藏夹(项目资源管理)1.4 对象池二、单位2.1 数据设置2.2 表现设置2.3 单位势力和掉率设置2.4 技能添加和技能参数修改2.5 商店2.5.1 商店属性设置2.5.2 商店物品设置三、装饰物3.1 属性编辑3.2 碰撞体积四、…

C++作业3(类)

1、思维导图 2、类中存在引用成员情况下有参构造 #include <iostream>using namespace std; class Cy {float &r; public:Cy(float &r):r(r){cout<<"类中存在引用成员情况下有参构造"<<endl;};float set_r(float);void show(); }; float…

【开源】一款基于SpringBoot 的全开源充电桩平台

一、下载项目文件 下载源码项目文件口令&#xff1a;动作璆璜量子屏多好/~d1b8356ox2~:/复制口令后&#xff0c;进入夸克网盘app即可保存&#xff08;如果复制到夸克app没有跳转资源&#xff0c;可以复制粘贴口令到夸克app的搜索框也可以打开&#xff08;不用点搜索按钮&#…

定制链接类名,两类跳转传参,vue路由重定向,404,模式设置

router-link-exact-active 和 router -link-active两个类名都太长&#xff0c;可以在router路由对象中定制进行简化 // index.js// 路由的使用步骤 52 // 1.下载 v3.6.5 // 2.引入 // 3.安装注册Vue.use(Vue插件) // 4.创建路由对象 // 5.注入到new Vue中&#xff0c;建立关联…

鼠标右键单击Git Bash here不可用

最近在学习git时突然发现右键的git bash没反应&#xff0c;但是去点击应用图标就能正常运行&#xff0c;通常是因为你在安装git之后改变了它的目录名称或者位置&#xff0c;我就是因为安装后改变了一个文件夹的文件名导致不可用 在安装git时系统会默认给鼠标右键选项的git Bas…

探索Web3:从去中心化应用到全球数字化未来

Web3 是互联网发展的下一步&#xff0c;它通过去中心化的理念重新定义了数字世界。与传统的Web2相比&#xff0c;Web3将数据主权交还给用户&#xff0c;让每个人都可以在没有中介的情况下安全地交换信息和价值。本文将探索Web3的基本概念&#xff0c;去中心化应用&#xff08;D…