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 的基本流程:
-
检索(Retrieval):
- 使用向量数据库或其他检索机制,根据输入查询检索相关文档或信息片段。
- 向量数据库通常用于存储和检索高维向量,如文本的嵌入表示,以便快速找到最相关的文档。
-
生成(Generation):
- 将检索到的相关文档与原始查询一起输入到语言模型中。
- 语言模型根据这些信息生成回复或答案。
为什么 RAG 优于传统的基于检索的方法:
-
上下文理解:
- 传统的检索方法可能只能提供相关文档的列表,而 RAG 能够结合这些文档的内容生成更连贯和准确的回答。
-
减少幻觉:
- 语言模型有时会产生不准确或不存在的信息(称为“幻觉”),而 RAG 通过引入外部知识来减少这种现象。
-
实时更新:
- 向量数据库可以定期更新,确保检索到的信息是最新和最准确的。
示例流程:
-
用户查询:
- 用户向系统提出一个查询,例如:“Zilliz Cloud 的主要功能是什么?”
-
检索阶段:
- 系统将查询转换为向量,并在向量数据库中查找最相关的文档。
- 假设检索到两个文档:
- 文档1:描述 Zilliz Cloud 是一个全面管理的向量数据库和服务,帮助用户释放非结构化数据的潜力,用于 AI 应用。
- 文档2:描述它能够存储、索引和管理由深度神经网络和其他机器学习模型生成的大量嵌入向量。
-
生成阶段:
- 将检索到的文档与原始查询一起输入到语言模型中。
- 语言模型生成回复,整合从多个文档中获取的信息,提供一个全面的答案。
通过这种方式,RAG 充分利用了向量数据库的强大检索能力以及语言模型的生成能力,为用户提供更准确和有用的信息。
2-RAG和Elasticsearch对比
- Milvus向量数据库03-搜索理论:https://blog.csdn.net/2301_77717148/article/details/144314159
RAG相对于elasticsearch,理念上更先进,替换【传递的倒排索引的查找方式】为【向量距离关系查找方式】,而【向量】天生就和【LLM大模型】就耦合在一起,所以【RAG】在【大模型】场景中更适用
RAG(Retrieval-Augmented Generation,检索增强生成)和Elasticsearch是两种不同的技术,它们在某些应用场景中可以相互配合,但各自有不同的特点和用途。以下是它们之间的一些对比:
-
技术类型和用途:
- RAG:RAG是一种结合了检索(Retrieval)和生成(Generation)能力的自然语言处理技术。它通过从外部知识库中检索相关信息片段,然后将这些片段与用户输入一起送入生成模型,以生成更加准确和上下文相关的回答。
- Elasticsearch:Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,主要用于存储、搜索和分析大量数据。
-
数据处理和检索:
- RAG:RAG模型可以有效地利用外部知识库,提供更深入、准确且有价值的答案,提高了生成文本的可靠性。
- Elasticsearch:Elasticsearch以其快速的搜索能力著称,能够处理PB级数据,服务大公司;也可以运行在单机上,服务小公司。
-
可扩展性和性能:
- RAG:RAG模型具有高扩展性,检索和生成模块可以独立扩展,适应不同规模数据。
- Elasticsearch:Elasticsearch可以在笔记本电脑上运行,也可以在承载了PB级数据的成百上千台服务器上运行,具有很好的水平扩展性。
-
实时性和动态性:
- RAG:RAG能通过外部知识库实时更新内容,避免依赖模型静态知识。
- Elasticsearch:Elasticsearch提供近实时的搜索和分析能力,能够在海量数据下实现秒级响应。
-
成本效益:
- RAG:RAG是一个成本效益较高的选项,因为它需要的计算和存储资源较少,无需拥有自己的大型语言模型(LLM),也无需花费时间和资金对模型进行微调。
- Elasticsearch:Elasticsearch作为一个成熟的搜索引擎,其成本效益取决于部署规模和使用情况,但通常需要一定的硬件和维护成本。
-
安全性和隐私管理:
- RAG:RAG可以通过限制知识库的权限来实现安全控制,确保敏感信息不被泄露。
- Elasticsearch:Elasticsearch提供了跨集群复制功能,可以作为热备份随时投入使用,确保数据的安全性和可用性。
-
应用场景:
- RAG:RAG适用于需要结合检索和生成的场景,如问答系统、内容推荐等。
- Elasticsearch:Elasticsearch适用于需要全文搜索、数据分析和日志分析的场景,如站内搜索、BI系统、商品价格监控等。
总的来说,RAG和Elasticsearch在技术特点和应用场景上有所不同,它们可以单独使用,也可以结合使用以发挥各自的优势。例如,在构建基于RAG的搜索功能时,可以利用Elasticsearch来存储和搜索专有数据,以及搜索可从中提取背景信息的其他外部知识库。
3-RAG和向量数据库之间是什么关系
RAG底层核心就是使用Vector向量的距离计算,所以RAG底层的存储系统不是【传统的数据库】而是【向量数据库】
RAG(Retrieval-Augmented Generation,检索增强生成)与向量数据库之间的关系主要体现在以下几个方面:
-
数据检索与增强:RAG技术通过从外部数据源检索相关信息,并将其作为输入提供给大型语言模型(LLMs),以增强模型在特定任务中的表现。向量数据库因其高效的数据存储和检索能力,成为RAG技术实施的重要支持。
-
语义相似性搜索:向量数据库的核心优势在于能够通过语义相似性算法实现海量非结构化数据的快速检索,这使得它在复杂的知识库构建、客户服务高效搜索等方面展现出显著优势。
-
技术互补性:RAG技术与向量数据库的结合,可以看作是一种技术互补。RAG通过检索系统提供具体、相关的事实和数据,而生成模型则能够灵活地构建回答,并融入更广泛的语境和信息。
-
解决大模型限制:RAG通过检索外部信息作为输入,辅助大型模型回答问题,这种方法能显著减少生成信息不准确的问题,增加回答的可追溯性。
-
私有数据管理:RAG提供了一个安全可落地的实践基础,同时也能更好地管理企业现有和新增的知识,解决知识依赖问题。向量数据库在这方面提供了访问权限控制和数据管理的支持。
-
技术实现:在业界实践中,RAG检索通常与向量数据库密切结合,催生了基于ChatGPT + Vector Database +
Prompt的RAG解决方案,简称为CVP技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs)。 -
信息载体:向量数据库作为存储向量化数据的载体,与RAG技术没有直接关系,但可以作为RAG技术的一种具体实现方式。
综上所述,RAG与向量数据库之间的关系是相互依存和互补的。RAG利用向量数据库的高效检索能力来增强大型语言模型的性能,而向量数据库则提供了存储和检索向量化数据的能力,两者共同作用于提升知识管理和内容生成的效率和准确性。
4-RAG和大模型什么关系
RAG(Retrieval-Augmented
Generation,检索增强生成)是一种结合了信息检索技术与语言生成模型的人工智能技术。它通过从外部知识库中检索相关信息,并将其作为提示(Prompt)输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。RAG模型由Facebook
AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。
RAG与大模型的关系主要体现在以下几个方面:
-
互补性:RAG作为大语言模型(LLM)的应用开发架构,通过拓展访问特定领域数据库或内部知识库,补足通用模型在垂直领域的知识短板。
-
性能提升:RAG通过整合外部数据库的知识,提高了生成内容的准确性和可信度,减少了大模型的幻觉问题和过时知识的问题。
-
数据安全性:RAG对接的私有数据库不参与大模型数据集训练,能在改善模型性能的同时,更好地保证数据隐私和安全。
-
减少模型幻觉:RAG能有效减少模型幻觉的发生,进一步提升大模型检索和生成性能。
-
无需重新训练:RAG使得开发人员无需为每一个特定任务重新训练整个庞大的模型,他们可以简单地给模型加上一个知识库,通过这种方式增加模型的信息输入,从而提高回答的精确性。
-
应用拓展: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
相关文章:
Milvus向量数据库06-RAG检索增强
Milvus向量数据库06-RAG检索增强 文章目录 Milvus向量数据库06-RAG检索增强1-学习目标2-参考网址3-执行过程记录1-到底什么是RAGRAG 的基本流程:为什么 RAG 优于传统的基于检索的方法:示例流程: 2-RAG和Elasticsearch对比3-RAG和向量数据库之…...
信创国产化时代:打造安全高效的信创网站解决方案
在全球科技竞争日益激烈的背景下,信创国产化已经成为中国信息技术领域的重要战略选择。信创国产化,即信息技术应用创新与国产化,旨在通过自主研发和创新,推动核心技术的国产化,减少对外部技术的依赖,确保国…...
python编程Day13-异常介绍捕获异常抛出异常
异常 介绍 1, 程序在运行时, 如果Python解释器遇到到一个错误, 则会停 止程序的执行, 并且提示一些错误信息, 这就是异常. 2, 程序停止执行并且提示错误信息这个动作, 通常称之为: 抛出 (raise) 异常 # f open(aaaa.txt) # FileNotFoundError: [Errno 2] No such file or dire…...
【JAVA高级篇教学】第二篇:使用 Redisson 实现高效限流机制
在高并发系统中,限流是一项非常重要的技术手段,用于保护后端服务,防止因流量过大导致系统崩溃。本文将详细介绍如何使用 Redisson 提供的 RRateLimiter 实现分布式限流,以及其原理、使用场景和完整代码示例。 目录 一、什么是限流…...
力扣-图论-8【算法学习day.58】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
Spring 中的验证、数据绑定和类型转换
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
Github----提交人不是自己
账号用户名都设置对的,但是提交人不是自己 解决 发现是用户名和账号都夹了"号导致 git config --global user.name "Your Name" git config --global user.email "your.emailexample.com"不用引号 git config --global user.name Your Name git …...
常用工具软件
前言 之前汇总过一篇嵌入式开发工具,但是掺杂了一些更偏向于日常使用的软件工具,这里单独提出来分享,都是自己在用的。 1.文件对比工具 BeyondCompare 文件对比利器,添加右键快捷键后。选中两个文件,右键可以直接进…...
Oracle报错ORA-01653: 表xx无法通过 8192在表空间中扩展
向Oracle 19g数据库中批量插入数据,当插入近2亿条数据后,报出如下错误: ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展 查看表空间,发现表空间大小已达到32G,表空间无法进行自动扩展了。(初始…...
【C语言】库函数常见的陷阱与缺陷(3):内存分配函数
目录 一、malloc 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全使用建议 1.4. 安全替代和代码示例 二、calloc 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 安全替代和代码示例 三、realloc 函数 3.1. 功能与常见用法 3.2. 陷阱与缺…...
Vue前端实现预览并打印PDF文档
一. 需求 1. 点击文档列表中的【打印】按钮,获取后台生成的PDF的url,弹窗进行预览: 2. 点击【打印】按钮,进行打印预览和打印: 二. 需求实现 首先后台给的是word文档,研究了一圈后发现暂时无法实现&…...
CSS学习记录07
CSS轮廓 轮廓是在元素周围绘制的一条线,在边框之外,以凸显元素。 CSS拥有如下轮廓属性: outline-styleoutline-coloroutline-widthoutline-offsetoutline 注意:轮廓与边框不同。不同之处在于:轮廓是在元素边框之外…...
喆塔科技携手国家级创新中心,共建高性能集成电路数智化未来
集创新之力成数智之塔 近日,喆塔科技与国家集成电路创新中心携手共建“高性能集成电路数智化联合工程中心”并举行签约揭牌仪式。出席此次活动的领导嘉宾包含:上海市经济和信息化委员会、上海市集成电路行业协会、复旦大学微电子学院、国家集成电路创新中…...
基于单片机的汽车雨刷器装置
摘要 下雨天时道路十分模糊,能见度非常低,司机分散注意力去手动打开雨刷器开关会非常危险。据统计,全世界雨天行车的车祸事故有7%是因为司机手动打开雨刷分心导致的。为了减小司机因为手动打开雨刷发生车祸的概率,所以…...
013-SpringBoot 定义优雅的全局异常处理方式
SpringBoot 定义优雅的全局异常处理方式 一、概述二、定义全局异常接口三、定义全局异常枚举四、定义全局基础异常五、定义全局基础业务异常六、定义全局返回七、定义全局返回工厂八、全局异常处理九、实体类十、Controller十一、效果展示一、概述 在日常项目开发中,异常是常…...
nginx 网页正常访问 F5 404
前端打包部署完,无论pc-web或h5-wap,访问正常,一刷新就会404。 解决方案: 在项目的nginx子配置文件中,加上以下代码 try_files $uri $uri/ /index.html;...
Idea Spring Initializr没有 Java 8选项解决办法
问题描述 在使用IDEA中的Spring Initializr创建新项目时,Java 版本近可选择Java17,21 。不能选择Java8;SpringBoot 版本也只有 3.x 问题原因 Spring 官方( https://start.spring.io/)不再提供旧版本的初始化配置 解决方案 方案 1 使用阿里…...
【Leetcode Top 100】104. 二叉树的最大深度
问题背景 给定一个二叉树 r o o t root root,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 数据约束 树中节点的数量在 [ 0 , 1 0 4 ] [0, 10 ^ 4] [0,104] 区间内。 − 100 ≤ N o d e . v a l ≤ 100 -100 \le Nod…...
C#实现一个HttpClient集成通义千问-开发前准备
集成一个在线大模型(如通义千问),来开发一个chat对话类型的ai应用,我需要先了解OpenAI的API文档,请求和返回的参数都是以相关接口文档的标准进行的 相关文档 OpenAI API文档 https://platform.openai.com/docs/api-…...
使用ssh免密登录实现自动化部署rsync+nfs+lsync(脚本)
单机一键部署sshrsyncnfslsync 执行准备 主机信息 主机角色外网IP内网IP主机名nfs、lsync10.0.0.31176.16.1.31nfs客户端10.0.0.7176.16.1.7web01rsync、nfs10.0.0.41172.16.1.41backup 秘钥信息 #web01可以免密连接nfs和backup [rootweb01 ~]# ssh-keygen [rootweb01 ~]#…...
若依集成更好用的easyexcel
背景 若依使用的是apach poi并在此基础上进行封装apach poi的原生的api是很复杂的,若依简化了了此操作apach poi的上传速率和下载速率都是没有优化的,依赖于文件大小的限制在此前提下,如果没法满足客户的需求(超大型文件的上传&am…...
去除背景 学习笔记
目录 rembg rembg 安装: pip install rembg import os from glob import glob from rembg import remove from argparse import ArgumentParser from PIL import Image if __name__ __main__:parser ArgumentParser()parser.add_argument(--path, typestr, re…...
我们来学mysql -- 隔离级别简介(原理篇)
隔离级别 别记题记隔离级别后记系列文章 别记 烧香拜佛要是有用,还需要我们来过吗…从个人情感角度,巴沙尔阿萨德 辜负了东大对他的期望他可是从正门踏进了灵隐寺 俄乌战争即将进入第三年(此时202412)此时的加沙正成为以色列建国…...
机器学习(4)Kmeans算法
1、简述聚类分析的重要性及其在机器学习中的应用 聚类分析,作为机器学习领域中的一种无监督学习方法,在数据探索与知识发现过程中扮演着举足轻重的角色。它能够在没有先验知识或标签信息的情况下,通过挖掘数据中的内在结构和规律…...
Oracle之表空间迁移
问题背景:一个数据表随着时间的累积,导致所在表空间占用很高,里面历史数据可以清除,保留近2个月数据即可 首先通过delete删除了2个月以前的数据。 按网上的教程进行空间压缩,以下sql在表所在用户执行: -- 允许表重新…...
域渗透入门靶机之HTB-Cicada
easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53,88,389等端口,推测为域控 进一步信息收集,对爆破的端口进行更加详细的扫描 小tips:对于众多的端口&…...
ue5 motion matching
ue5.5 gameanimationsample 先看动画蓝图 核心两个node 第一个是根据数据选择当前的pose 第二个是缓存一段历史记录,为第一个node选择的时候提供数据。 在animinstance的update方法中 每帧都更新这个函数,每帧更新trajectory的数据 看看第一个node的…...
【从零开始的LeetCode-算法】383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#…...
记录模板学习(持续更新)
目的: 学习C模板的编写,使用模板类包装一个可调用对象 可调用对象包括:普通函数, lambda表达式, 类成员函数 可以参考到QtConcurrent::run的实现,可以看到这个函数有非常多重载,其中可以接受类…...
Android hid 数据传输(device 端 )
最近一直在处理hid 数据需求,简而言之就是两台设备直接可以通过usb 线互相传递数据。 项目架构 为什么Device 端要采用HID(人机接口设备)的方式发送和接收数据呢? 主要是速度快,举个例子,就是鼠标移动&am…...
企业网站制作设计公司/网络推广优化
未能加载文件或程序集“log4net, Version1.2.10.0, Cultureneutral, PublicKeyToken1b44e1d426115821”或它的某一个依赖项。系统找不到指定的文件。 把log4net的bll文件复制到bin文件中就行 转载于:https://www.cnblogs.com/kbqLibrary/p/5987851.html...
手机网站底部导航代码/查找关键词的工具叫什么
1. Flume的安装配置 2. flume和kafka整合(转) 3. Flume NG 配置详解(转) 4. Flume-NG一些注意事项(转) 5. FLume监控文件夹,将数据发送给Kafka以及HDFS的配置文件详解 6. 应用FlumeHBase采集和存…...
网站建设常用的开发语言介绍/今天的特大新闻有哪些
2019独角兽企业重金招聘Python工程师标准>>> SCRUM团队的三个角色 Scrum团队中包括三个角色,他们分别是产品负责人、开发团队和 Scrum Master。 Scrum 团队是自组织、跨职能的完整团队。自组织团队决定如何最好地完成他们的工作,而不是由团队外的其他人来…...
网站建设哪家/在哪里找专业推广团队
欢迎关注”生信修炼手册”!框架是为了解决特定的业务场景而开发的一套高质量代码,通过框架避免了重复造轮子的低效模式,可以更加专注于具体业务相关的代码。在python中,scrapy就是一个主流的爬虫框架,可以通过如下方式进行安装pip…...
做蛋糕需要建议网站不/广州推广系统
SEC已经向当地法院提交文件,要求马斯克以藐视法院在2018年10月16日的判决被拘留。 今日最新消息,据外媒报道,美国证券交易委员会(以下简称“SEC”)要求法官拘留特斯拉CEO埃隆马斯克,原因是马斯克藐视法院的…...
重庆微信网站制作公司/个人博客搭建
Swiper常用于移动端网站的内容触摸滑动Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。 Swiper能实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。 Swiper开源、免费、稳定、使用简单、功能强大,是架构移动终端网站的重要…...