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