利用元数据过滤、Hybrid Search、 Agent 等功能提升您的 RAG 应用

文摘   2024-08-26 18:30   中国香港  


01

什么是 RAG?

检索增强生成(Retrieval Augmented Generation,简称 RAG)是一种通过整合外部数据源来增强大语言模型(LLM)的技术。典型的 RAG 应用包含以下几个步骤:

索引流程:从数据源获取数据并创建索引。这个流程通常包括在 Milvus 中加载数据、切分数据,以及对数据进行排序。

检索和生成:在运行时,RAG 应用处理用户的查询,从存储在 Milvus 中的索引中获取相关数据形成上下文,然后 LLM 基于丰富的上下文生成响应。

有多种方法可以改进 RAG 应用。本文将介绍如何利用 Milvus 向量数据库的元数据过滤、Hybrid Search 和 Agent 功能来提升 RAG 应用的性能。

02

元数据过滤

在将数据插入 Milvus 时,建议同时包含元数据。例如,如果您需要在 Milvus 中插入 PDF 文件的向量,您可以同时插入页码、PDF 文件名、作者等元数据信息。

通过在 Milvus 中存储元数据,您可以在搜索时过滤掉不相关的数据,从而提升检索的速度和效率。元数据过滤特别适合 RAG 应用,因为您可以确保只将与用户查询相关的内容传入 LLM。

Milvus 支持 full-string 元数据匹配,系统会通过 prefix、infix、postfix,甚至字符通配符(wildcard)搜索来匹配字符串。


# 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() 检查数组中的是否有匹配的元素。

03

Hybrid Search

Milvus 单个 Collection 中最多可创建 10 个向量字段。换言之,Milvus 支持多向量查询,用户能够同时在多个向量列中进行搜索。这一功能促进了多模态搜索、稀疏和稠密向量混合搜索,以及密集向量和全文混合搜索,提供了多样化和灵活的搜索能力。

不同列中的向量由不同的 Embedding 模型生成,可以用于从不同方面表示同一条数据。使用Hybrid Search 后,搜索结果会根据各种重排 (rerank)策略进行重新排序和整合。

04
Milvus Hybrid Search 的原理
从多个角度表示信息。例如,在电子商务行业中,产品图片会包含产品的正面、侧面和顶部。不同视角的图片可以用不同类型或维度的向量来表示。
利用各种类型的 Embedding 向量,包括由 BERT 和 Transformers 等模型生成的稠密向量,以及由 BM25、BGE-M3 和 SPLADE 等算法生成的稀疏向量。
支持来自各种非结构化数据类型(如图像、视频、音频和文本文件)的多模态向量。例如,在刑事调查中,可以用指纹、声纹和面部识别等多模态的生物特征来表示嫌疑人。多模态数据有助于跨不同模态识别目标。
支持将向量搜索和全文搜索相结合。
05
RAG 应用中的 Agent
LLM 无法单独使用,它们只能输出文本。而 Agent 可以通过使用 LLM 作为引擎来确定采取哪些行动以及向 LLM 传入哪些内容。在执行任务后,Agent 可以将结果传回 LLM,从而确定结束任务还是执行更多任务。
Agent 可以用来执行许多任务,如搜索网页、浏览您的电子邮件、纠正 RAG、根据检索文档对 RAG 添加自我反思(Self-reflection)或自我评分(Self-grading)等。
设置完成后,Agent 可以将新的数据添加到 Milvus 中,或检索数据并将其传入您的 LLM。通过使用 Agent,您的 RAG 系统中能够始终整合最新知识。Milvus 还支持通过 upsert() 函数轻松更新数据。
06
总结
通过使用 Milvus 中的元数据过滤、Hybrid Search 和 Agent 功能,您可以提升您的 RAG 应用性能。
元数据过滤帮助您根据特定信息过滤数据,实现精确和高效的搜索。混合搜索通过允许跨多个向量列进行查询,扩展了搜索能力。Agent 通过基于 LLM 输出自动执行操作来提升 RAG 功能。
推荐阅读



Zilliz
Simply The Fastest Vector Database for AI. Period.
 最新文章