e2f05a69924be89051290f2caf4a87d9.png

e01a50990b6b5a3164bbe6a98ed89eea.png

检索增强生成(RAG)

概述检索增强生成(Retrieval Augmented Generation,简称 RAG)是一种技术,它通过整合外部数据源来增强大型语言模型(LLM)的能力。RAG 技术的核心应用流程包括索引创建和检索生成两个主要步骤。

索引流程

  1. 数据获取:从各种数据源中获取所需数据。
  2. 数据索引:在 Milvus 中创建数据索引,这通常包括数据加载、分割和排序。

检索与生成

  • 用户查询处理:RAG 应用接收用户查询。
  • 相关数据检索:从 Milvus 索引中检索与查询相关的数据。
  • 上下文生成:形成丰富的上下文信息。
  • 响应生成:LLM 基于上下文生成回答。

性能提升方法本文将探讨几种方法,以提升 RAG 应用的性能,特别是通过利用 Milvus 向量数据库的功能。

元数据过滤

  • 数据插入:在 Milvus 中插入数据时,建议同时存储元数据,例如页码、文件名、作者等。
  • 搜索优化:利用存储的元数据进行搜索时的数据过滤,以提高检索速度和效率。
  • 匹配方式:Milvus 支持 full-string 元数据匹配,包括前缀、中缀、后缀匹配,以及使用通配符进行搜索。

功能特性

  • Hybrid Search:结合向量相似性搜索和元数据过滤,提高搜索的准确性。
  • Agent 功能:使用 Agent 功能来自动化和优化检索流程。 通过上述方法,RAG 应用能够更高效地处理用户查询,提供更准确和丰富的信息。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Prefix example, matches any string starting with The.

expression='title like "The%"'

# Infix example, matches any string with the word the anywhere in the sentence.

expression='title like "%the%"'

# Postfix example, matches any string ending with Rye.

expression='title like "%Rye"'

# Single character wildcard example, matches any one single character at a specific position.

expression='title like "Flip_ed"'

Milvus是一个支持元数据过滤的向量搜索引擎,它允许使用数组值进行精确匹配或通过contains_any()函数检查数组中是否存在匹配的元素。以下是Milvus的一些关键特性:

  1. 多向量字段支持:Milvus允许在单个集合(Collection)中最多创建10个向量字段,这意味着用户可以在多个向量列中同时进行搜索。

  2. 多模态搜索:通过多向量查询,Milvus支持多模态搜索,即用户可以在不同的向量列中搜索,这些列可能代表数据的不同方面。

  3. 稀疏与稠密向量混合搜索:Milvus支持稀疏向量和稠密向量的混合搜索,提供了更灵活的搜索能力。

  4. 密集向量和全文混合搜索:Milvus还支持密集向量与全文搜索的结合,进一步增强了搜索的多样性。

  5. Embedding模型:不同列中的向量可以由不同的Embedding模型生成,用于从不同角度表示同一条数据。

  6. 搜索结果重排:使用Hybrid Search后,搜索结果会根据各种重排策略进行重新排序和整合,以提高搜索结果的相关性。 这些特性使得Milvus成为一个功能强大且灵活的搜索引擎,适用于多种搜索场景。
    2d8798da22d893081480d0338be058af.png
    Milvus Hybrid Search 技术通过综合利用多种信息表示方法,为电子商务和刑事调查等领域提供了强大的搜索能力。以下是对这一技术原理的详细解读:

Milvus Hybrid Search 技术原理

1. 多角度信息表示

  • 在电子商务中,产品图片通常从正面、侧面和顶部等不同角度进行拍摄,以提供全面的视角。

2. 多类型 Embedding 向量

  • 利用BERT、Transformers等模型生成的稠密向量,以及BM25、BGE-M3、SPLADE等算法生成的稀疏向量。

3. 多模态向量支持

  • 支持图像、视频、音频和文本等非结构化数据类型的向量,例如在刑事调查中使用指纹、声纹和面部识别等生物特征。

4. 向量搜索与全文搜索结合

  • 支持将向量搜索和全文搜索相结合,提高搜索的准确性和效率。

RAG 应用中的 Agent

Agent 在RAG(Retrieval-Augmented Generation)应用中起到了至关重要的作用。以下是Agent的主要功能:

1. 任务执行与LLM协同

  • Agent使用LLM作为引擎,确定执行哪些行动,以及如何向LLM传递内容。

2. 多样化任务执行

  • Agent可以执行搜索网页、浏览电子邮件、纠正RAG等任务。

3. 自我反思与自我评分

  • 根据检索文档,Agent可以对RAG进行自我反思和自我评分,以优化性能。 Agent与LLM的结合,为RAG应用提供了更智能和自动化的解决方案。
    411e7c5dbaf00e42b209d5e054f07267.png

利用 Milvus 增强 RAG 系统性能

1. 元数据过滤元数据过滤是一种高效的数据筛选方法,它允许用户根据特定的信息快速定位所需的数据。这种方法可以显著提高搜索的精确度和效率。

2. 混合搜索混合搜索功能扩展了传统的搜索能力,它允许用户跨多个向量列进行查询。这为用户提供了更广泛的搜索维度,从而能够更全面地检索数据。

3. Agent 功能Agent 功能通过自动化操作提升了 RAG 系统的功能。它可以基于 LLM(Large Language Model)的输出自动执行任务,例如将数据添加到 Milvus 或检索数据。

4. 数据更新Milvus 支持使用 upsert() 函数轻松更新数据,这使得数据维护变得更加便捷。

5. 整合最新知识通过使用 Agent,您的 RAG 系统能够始终整合最新知识,确保系统的数据和信息保持最新状态。

推荐阅读

  • Milvus 官方文档:深入了解 Milvus 的功能和最佳实践。
  • RAG 系统架构:探索 RAG 系统的工作原理及其在不同场景下的应用。 通过上述方法,您可以有效地提升 RAG 应用的性能,实现更加精准和高效的数据处理。
    13ed1bb0bb2a5f88f43c4156464f82ea.png

b10e0ac261c64c0ee9a0df17f2d53634.png

cecafb97a3b8d337214bba6ecd974117.png

31b685a6c7a4bfe9c7f583276353bffd.png