首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LLM 系列(十):RAG 番外篇-向量检索

LLM 系列(十):RAG 番外篇-向量检索

作者头像
磊叔的技术博客
发布2025-09-02 10:34:43
发布2025-09-02 10:34:43
2040
举报

引言

在之前的系列文章中,我介绍了 RAGEmbedding,本篇文章将侧重在梳理整个向量检索技术体系。

检索的演进:从关键词到语义

信息检索(Information Retrieval, IR)的历史是一部不断追求更精准、更智能地匹配用户意图的演进史。早期的检索系统严重依赖于关键词匹配,即词法搜索(Lexical Search)。这种方法通过寻找查询词在文档中的精确出现来判断相关性,虽然高效,但其局限性也显而易见:它无法理解同义词、多义词或更深层次的语义关联。随着深度学习,特别是自然语言处理(NLP)技术的发展,我们进入了语义搜索(Semantic Search)的时代。语义搜索的核心思想是理解查询和文档背后的意义,而非仅仅是字面上的字符串。通过将文本、图像甚至音频等非结构化数据转换为高维向量(即嵌入,Embeddings),我们可以在一个数学空间中捕捉它们的语义关系,使得“动物”和“猫”在空间中彼此靠近。

向量检索

本篇文章目的是为大家提供一份关于向量检索的详尽介绍,系统性地梳理从经典理论到前沿实践的完整知识图谱。我将从信息检索的基石——以BM25为代表的稀疏检索方法出发,为后续的讨论奠定理论基础。随后,我将深入探讨语义革命的核心——稠密向量检索,详细解析其背后的近似最近邻(ANN)搜索算法,特别是 HNSW 和 IVF。在此基础上,我将介绍混合检索与多级检索等高级策略,它们是构建现代高性能检索系统的关键。最后,我会介绍如何通过 Embedding 调优、查询优化和引入反馈机制等手段,极限提升召回精度,并展望向量检索技术的未来发展趋势。无论是刚接触 RAG 的开发者,还是寻求深度优化的资深工程师,希望在阅读完本篇之后能够对向量检索整个技术领域有个完整的理解。

稀疏检索

在深入探讨现代向量检索之前,我们必须首先理解其前身:稀疏检索方法。这些基于关键词统计的经典算法,至今仍在许多高性能系统中扮演着不可或缺的角色。它们之所以被称为 稀疏(sparse),是因为其生成的向量表示维度极高(通常与词汇表大小相当),但其中绝大多数元素为零。

词频-逆文档频率(TF-IDF)

TF-IDF 是信息检索领域最具里程碑意义的算法之一。它的核心思想是:一个词在一个文档中的重要性,与其在该文档中出现的频率成正比,但与其在整个语料库中出现的频率成反比。这个简单的原则能够有效地过滤掉像“的”、“是”这类普遍存在但信息量低的“停用词”,同时提升那些能代表文档语义的关键词的权重。

核心原理

TF-IDF的分数是通过将 词频(Term Frequency, TF)逆文档频率(Inverse Document Frequency, IDF) 相乘得出的。

  • 词频 (Term Frequency, TF):衡量一个词在特定文档中出现的频繁程度。最常见的计算方式是归一化频率,即用一个词在文档中出现的次数除以该文档的总词数,这样做可以避免对长文档的偏袒。
  • 逆文档频率 (Inverse Document Frequency, IDF):衡量一个词的稀有度或信息量。一个词在越多的文档中出现,其IDF值就越低,说明它的区分能力越弱。其计算方法通常涉及取一个对数,对数内的数值是语料库中的总文档数除以包含该词的文档数。
实践案例与局限性

这里通过一个简单的例子来理解TF-IDF的计算过程。假设我们有两份文档:

  • • 文档A: "The car is driven on the road"
  • • 文档B: "The truck is driven on the highway"

对于词 "car" 在文档 A 中的 TF-IDF 分数,计算过程如下:

  • 词频 (TF): "car" 在文档A中出现了一次,所以它的词频分数相对较高。
  • 逆文档频率 (IDF): 在我们的两份文档中,"car" 只出现在一份文档里,说明它比较独特。因此,它的逆文档频率分数是一个正数。
  • 最终TF-IDF分数: 将两者相乘,"car" 获得了一个正向的权重分数,表明它对于文档A是重要的。

对于词 "the" 在文档A中的TF-IDF分数:

  • 词频 (TF): "the" 同样在文档A中出现了一次。
  • 逆文档频率 (IDF): "the" 在两份文档中都出现了,说明它是一个非常常见的词。因此,它的逆文档频率分数计算结果为零。
  • 最终TF-IDF分数: 任何数乘以零都等于零,所以 "the" 的最终TF-IDF分数为零,表明这个词信息量低。

尽管TF-IDF非常有效,但其局限性也十分明显:

  1. 1. 忽略语义信息:它将词语视为独立的单元,无法理解 "car""automobile" 之间的语义相似性。
  2. 2. 忽略词序:作为一个词袋模型,它丢失了词语的顺序信息,因此无法区分 "not pay the bill""pay the bill" 这样含义截然相反的短语。
  3. 3. 偏向长文档:尽管 TF 的归一化在一定程度上缓解了这个问题,但长文档仍然有更多机会包含更多种类的词,从而可能获得不公平的高分。

Okapi BM25

为了克服TF-IDF的诸多限制,大佬们开发了Okapi BM25(Best Matching 25)算法。BM25不仅仅是TF-IDF的一个简单改进,它代表了从启发式的向量空间模型到更严谨的概率信息检索模型的范式转变。它在两个核心方面对TF-IDF进行了根本性的优化。

  • 词频饱和度 (Term Frequency Saturation)TF-IDF模型假设词频对相关性的贡献是线性增长的。然而,BM25 认识到一个更符合直觉的现实:当一个词在文档中出现的次数达到一定程度后,其对相关性的贡献会逐渐饱和,即收益递减。一份包含 200 次“大象”的文档,其相关性并不必然是一份包含100次“大象”的文档的两倍。
  • 文档长度归一化 (Document Length Normalization)TF-IDF 缺乏一个内置的、有效的文档长度归一化机制。BM25 则明确地将文档长度与其在整个语料库中的平均长度进行比较,并据此对分数进行调整,从而更公平地惩罚那些仅仅因为篇幅长而导致词频较高的文档 。
BM25的评分机制与参数

BM25 通过一个综合性的评分机制来评估文档与查询的相关性,该机制由可调参数 k1 和 b 控制:

  • k1:词频饱和度参数。它决定了词频分数增长曲线的陡峭程度。k1 的值通常设置在1.22.0 之间。一个较高的 k1 值会延迟饱和点的到来,使得高频词获得更高的权重。
  • b:文档长度归一化参数。它的值域在 01 之间,通常取 0.75。当 b 设为1时,系统会应用完全的长度归一化;当设为0时,则完全不考虑文档长度的影响。
为何 BM25 成为标准

凭借其在词频饱和度和文档长度归一化方面的精妙设计,以及可调参数带来的灵活性,BM25 在各种信息检索任务中都表现出比TF-IDF更优越且更稳定的性能。它在简单性和性能之间取得了出色的平衡,使其成为现代搜索引擎(如 Elasticsearch)和向量数据库(如Milvus)中默认的稀疏检索算法,构成了许多复杂检索系统(包括混合检索)的基础。

表1:TF-IDF vs. BM25:一项对比分析

特性

TF-IDF

BM25

理论模型

向量空间模型 (Vector Space Model)

概率信息检索模型 (Probabilistic Model)

词频处理

线性或对数增长,无上限

非线性增长,具有饱和效应

文档长度归一化

无内置机制,通常需要外部归一化

内置归一化,通过参数 b 调节

核心参数

k1 (饱和度), b (长度归一化)

计算成本

较低

略高

典型用例

基础的关键词权重计算、文本分析入门

现代搜索引擎、RAG系统中的稀疏检索标准

稠密向量检索

随着深度学习的兴起,信息检索领域经历了一场从词法到语义的深刻革命。这场革命的核心,是将文本、图像等非结构化数据转化为能够捕捉其深层含义的稠密向量(Embeddings),并在此基础上进行高效的相似性搜索。

从词语到向量:Embedding

TF-IDFBM25生成的稀疏向量不同,Embedding 是通过神经网络模型(如BERT或Sentence-BERT)学习到的低维、稠密的实数向量。这些向量的每一个维度并不直接对应某个特定的词,而是共同编码了输入数据的复杂语义特征。这种表示方式的巨大优势在于,语义上相近的内容,即使使用的词语完全不同,其对应的向量在向量空间中的位置也会非常接近 。例如,“夏季服装”和“短裤与T恤”的向量会比它们和“冬季大衣”的向量更近。这使得计算机能够超越关键词匹配,实现真正意义上的“理解” 。

然而,这种强大的表示能力也带来了新的挑战:我们如何在包含数百万甚至数十亿个高维向量的数据库中,快速找到与给定查询向量最相似的几个向量?传统的精确最近邻(k-NN)搜索算法需要计算查询向量与数据库中每一个向量的距离,在海量数据面前,这种暴力搜索的计算成本是无法接受的

近似最近邻(ANN)搜索

为了解决规模化搜索的难题,近似最近邻(Approximate Nearest Neighbor, ANN)搜索应运而生。ANN 的核心思想是一种工程上的权衡:放弃寻找绝对精确的最近邻,以换取搜索速度的指数级提升。对于绝大多数应用场景,如推荐系统或语义搜索,找到“足够相似”的结果已经完全满足需求,而牺牲的微小精度损失通常可以忽略不计。ANN 算法通过构建巧妙的数据结构(索引),在搜索时能够跳过大量不相关的向量,从而避免了全局的暴力比较 。

从空间划分到关系导航的理念飞跃

ANN算法的发展历程体现了一种核心理念的转变,即从试图对整个高维空间进行“划分”转变为在数据点之间建立“导航”网络。这一转变是应对 维度灾难 的根本性策略。

早期的ANN算法,如KD树,其工作原理是通过递归地用超平面将向量空间进行划分。这种方法在低维空间中非常直观有效。然而,随着维度的增加,空间的体积会呈指数级增长,数据点变得极其稀疏,“附近”这个概念也变得模糊不清。

相比之下,现代的基于图的ANN算法,如HNSW,采取了截然不同的策略。它不再试图去理解和划分整个宏观空间,而是在数据点之间构建一个连接网络(图),其中边代表了数据点之间的邻近关系。搜索过程不再是遍历一个刚性的树状结构,而是在这个关系网络中,从一个入口点开始,沿着边“导航”到查询向量的最近邻。这种方法更加鲁棒,因为它依赖的是数据本身的局部邻域结构,而这种结构即使在高维空间中也依然存在。

表2:ANN 算法版图:HNSW vs. IVF

在众多ANN算法中,基于图的HNSW和基于聚类的IVF是当今向量数据库中最主流的两种索引策略。它们代表了两种不同的ANN实现哲学:HNSW 侧重于构建可导航的邻近图,而IVF则通过聚类来裁剪搜索空间。

维度

HNSW (Hierarchical Navigable Small World)

IVF (Inverted File)

底层算法

基于图的导航

基于聚类的划分

数据结构

多层邻近图

倒排文件(聚类中心 -> 向量列表)

索引构建时间

较慢,需要构建复杂的图结构

较快,主要耗时在k-means聚类训练

查询速度

极快,对数级别复杂度

快,但速度依赖于 nprobe 参数

内存占用

高,需要存储图的连接信息

较低,主要存储向量和聚类中心

核心参数

M, ef_construction, ef_search

nlist, nprobe

优势

查询速度快,召回率高,无需训练

内存效率高,索引构建快

劣势

内存消耗大,索引构建耗时

召回率对 nprobe 敏感,可能错过边缘向量

HNSW 解析

HNSW 是目前公认的性能最佳的 ANN 算法之一,它巧妙地结合了两种思想:可导航小世界图和概率跳表。

  • 算法原理HNSW 构建了一个分层的图结构。顶层图最稀疏,连接最长,像“高速公路”,负责全局的快速导航;底层图最密集,包含了所有向量,像“本地道路”,负责局部的精确搜索。
  • 构建与搜索过程
    • 构建 (Construction):向量被逐一插入图中。算法从顶层图开始,为新向量在每一层都寻找最近的邻居,并根据参数 M(每个节点的最大连接数)和 ef_construction(构建时的搜索范围大小)建立连接。
    • 搜索 (Search):搜索同样从顶层的某个入口点开始。在当前层,算法沿着图的边进行贪婪搜索,不断走向离查询向量更近的节点。然后,算法将这个局部最优解作为下一层的入口点,重复此过程,逐层向下,直到在最底层找到最终的近似最近邻。

IVF 解析

IVF 系列索引是另一种广泛使用的 ANN 技术,其核心思想借鉴了传统文本检索中的倒排索引,通过聚类来减少需要比较的向量数量。

  • 算法原理
    1. 1. 训练 (Training):在构建索引之前,算法(通常是k-means)将整个向量空间划分为 nlist 个聚类(或称为“桶”)。每个聚类的中心点被称为“质心”(Centroid)。
    2. 2. 索引 (Indexing):训练完成后,将数据集中的每一个向量分配到其最近的质心所对应的聚类中。
    3. 3. 查询 (Querying):当一个查询向量到来时,系统首先找出最近的 nprobe 个质心。然后,搜索范围被限定在这 nprobe 个聚类所包含的向量中,从而大大减少了计算量。
  • IVF-PQ变体:为了进一步优化内存占用和查询速度,IVF经常与**乘积量化(Product Quantization, PQ)**结合使用。PQ是一种向量压缩技术,它将一个高维向量切分成多个低维的子向量,然后对每个子向量空间分别进行量化,极大地降低了存储需求。

高级检索策略

在掌握了单一的稀疏或稠密检索方法后,构建一个真正强大的、生产级的检索系统还需要更高级的架构设计。这些策略通过组合不同的技术,取长补短,以应对真实世界中复杂多变的查询需求。

混合检索

混合检索(Hybrid Search)是一种将关键词检索(稀疏)与语义检索(稠密)相结合的强大策略,旨在同时利用两者的优势,提供更精准、更鲁棒的搜索结果。

混合检索

纯粹的语义检索虽然在理解用户意图方面表现出色,但在处理需要精确关键词匹配的场景时却常常力不从心。例如,用户搜索一个特定的产品型号(如“SKU-12345”)、一个专有品牌名或一个技术缩写时,向量模型可能无法准确捕捉其独特性。这恰恰是稀疏检索(以BM25为代表)的强项。因此,混合检索的出现并非锦上添花,而是一种务实的修正,它承认了在真实应用中,上下文理解和关键词精度同等重要。

架构与结果融合

一个典型的混合检索系统的工作流程如下:

  • 并行查询:当接收到用户查询后,系统会同时将其发送给稀疏检索管道(如BM25)和稠密检索管道(ANN搜索)。
  • 结果融合:两个管道各自返回一个排序后的文档列表。由于两者分数范围和分布截然不同,直接加权融合效果不佳。因此,业界普遍采用倒数排名融合(Reciprocal Rank Fusion, RRF)。RRF不关心每个结果的原始分数,只关心它在各自列表中的排名(rank)。一个结果在原始列表中排名越靠前,它在最终融合结果中的权重就越大。

多级检索

多级检索,特别是 检索-重排Retrieve-and-Rerank)架构,是另一种在精度和效率之间取得极致平衡的高级策略。它将检索过程分解为两个阶段:

  • 第一阶段:召回(Retrieval): 目标是高召回率(High Recall),此阶段的目标是从海量的文档库中,快速、广泛地筛选出一个较小的候选集(例如,前100个文档),确保尽可能多的相关文档被包含在内。通常使用速度快的模型,如基于ANN索引的向量检索(Bi-encoder)或 BM25
  • 第二阶段:重排(Reranking):目标是高精确率(High Precision)。此阶段接收来自第一阶段的候选集,并使用一个更强大、计算更密集的模型对这个小集合进行精细的重新排序。这个阶段的主要是**Cross-Encoder(交叉编码器)**模型。
Cross-Encoder

Cross-Encoder之所以在重排阶段表现卓越,其根本原因在于其独特的处理机制。与Bi-Encoder(双编码器)将查询和文档独立编码为向量再计算相似度不同,Cross-Encoder查询和单个文档拼接成一个输入对,然后将这个组合输入到一个完整的Transformer模型中进行处理 。

这种“共同处理”的方式允许模型内部的自注意力机制在查询和文档的每个词元之间进行深度、细粒度的交互建模,从而输出一个远比向量相似度更精准的相关性分数。然而,这种高精度是有代价的。Cross-Encoder的联合处理过程必须在查询时对每一个候选文档都执行一次完整的、耗时的前向传播,因此它无法被预计算,速度要慢得多。

正是这种“快而粗”的Bi-Encoder和“慢而精”的Cross-Encoder之间的特性互补,使得 检索-重排 范式成为构建顶级信息检索系统的黄金标准。

优化与性能调优

构建一个向量检索系统不仅仅是选择算法和架构,更关键的是如何根据具体应用场景对系统进行细致的调优,以在查询速度、召回精度和资源消耗这三个维度上找到最佳平衡点。

索引优化

索引是向量检索性能的核心。对索引参数的精细调整,是决定系统最终表现的关键一步。

HNSW参数调优

HNSW索引的性能主要由三个参数控制:

  • m:定义了每个节点允许拥有的最大连接数。增加 m 会使图更密集,通常能提高召回率,但代价是内存占用和构建时间增加 35。
  • ef_construction:索引构建时的搜索范围大小。一个更大的值可能构建出质量更高的图,有助于提升查询召回率,但这会显著增加索引构建时间。
  • ef_search:查询时的搜索范围大小。这是在查询速度和召回率之间进行权衡的主要调节旋钮。增加 ef_search 会提高召回率,但也会直接导致查询延迟增加。
IVF参数调优

IVF系列索引的性能主要由两个参数控制 :

  • nlist:定义了向量空间被划分成的聚类数量。一个较大的 nlist 值意味着每个聚类中的向量数量较少,可以提高查询速度,但过多的聚类也可能降低召回率。经验法则是,对于百万级向量,nlist 可以设为 4 * sqrt(向量总数)
  • nprobe:查询时需要探查的聚类数量。这是直接控制查询速度和召回率之间平衡的关键。增加 nprobe 会提高召回率,但会线性增加查询的计算量和延迟。

表3:HNSW与IVF索引调优参数

索引类型

参数

描述

增加该参数的影响

HNSW

m

每个节点的最大连接数

召回率 ↑, 查询速度 ↓, 索引大小 ↑, 构建时间 ↑

ef_construction

构建索引时的搜索范围

召回率 ↑, 查询速度 ↔, 索引大小 ↔, 构建时间 ↑

ef_search

查询时的搜索范围

召回率 ↑, 查询速度 ↓, 索引大小 ↔, 构建时间 ↔

IVF

nlist

聚类中心的数量

召回率 ↓, 查询速度 ↑, 索引大小 ↑, 构建时间 ↑

nprobe

查询时探查的聚类数量

召回率 ↑, 查询速度 ↓, 索引大小 ↔, 构建时间 ↔

查询优化

  • 元数据过滤:在许多应用中,向量搜索需要与传统的元数据过滤结合。预过滤 在向量搜索前应用过滤器,缩小搜索范围但可能降低ANN效率;**后过滤 **先执行向量搜索再过滤,更简单快速,但可能需要“过采样”以确保过滤后仍有足够结果。
  • 降维与量化维度约减(如PCA)可以减少存储和计算成本,但可能损失精度。量化(如PQ)通过压缩向量来减少内存占用和加速计算,是在精度和资源消耗之间进行权衡的有效手段。

高吞吐系统的缓存策略

对于查询量巨大的系统,引入缓存层是降低延迟、节省计算资源的关键。

  • 查询与结果缓存:将频繁出现的、完全相同的查询及其结果存储在高速缓存中(如 Redis)。
  • 语义缓存:这是一种更高级的策略,它不仅仅匹配精确的查询字符串,而是理解查询的“语义”。当一个新查询到来时,系统会将其嵌入为向量,并在缓存中搜索是否存在语义上足够相似的、已经处理过的查询。如果找到,系统就直接返回其对应的答案,这可以极大地减少对下游昂贵的LLM API的调用次数。
  • 向量缓存:将系统中被频繁访问的“热点”向量缓存在内存中,可以加速检索过程。

Milvus 中的索引技术

Milvus 提供了丰富多样的索引类型,以适应不同场景下的性能、精度和资源消耗需求。

表4:Milvus 浮点向量索引类型

索引类型

分类

理想场景与权衡

FLAT

暴力搜索

数据集规模较小(百万级以内),且要求100%精确召回率的场景。速度最慢。

IVF_FLAT

基于量化(聚类)

追求高查询速度和尽可能高的召回率之间的平衡。

IVF_SQ8

基于量化(聚类+标量量化)

对内存资源有限制,同时追求高查询速度,可以接受轻微召回率损失的场景。

IVF_PQ

基于量化(聚类+乘积量化)

内存资源非常有限,追求极高的查询速度,可以接受更明显召回率损失的场景。

HNSW

基于图

对查询速度和召回率有极高要求,且拥有充足内存资源的场景。

GPU_CAGRA

GPU优化

适用于需要利用GPU进行大规模并行计算加速的负载,以获得极致的查询性能。

数据操作

Milvus 提供了一套完整的 API,用于对向量数据进行全生命周期的管理,支持标准的 CRUD(创建、读取、更新、删除)操作。所有的数据修改操作都会先写入日志代理,确保了操作的持久性和可恢复性。

在 Milvus 的 API 中,理解searchquery的区别至关重要:

  • search:特指向量相似性搜索。它的输入是一个或多个查询向量,输出是与之最相似的向量及其元数据。
  • query:特指基于标量字段的元数据过滤。它的工作方式类似于传统SQL数据库中的WHERE子句,用于根据非向量字段的条件来精确检索实体。

在实际应用中,这两者经常结合使用,实现混合搜索,从而在满足特定标量条件的数据子集中进行高效的向量相似性搜索 。

提升召回与精度

一个检索系统的构建,不仅依赖于底层的索引和架构,更取决于对系统“两端”——即输入端的 Embedding 模型和用户查询——的精细打磨。

Embedding 模型调优

Embedding 模型是整个语义检索系统的基石,其质量直接决定了检索效果的天花板。

模型选择

**海量文本嵌入基准(Massive Text Embedding Benchmark, MTEB)**及其多语言版本(MMTEB)已成为业界公认的权威资源,它对数百个模型在多种任务和上千种语言上进行了全面评估。开发者应当优先考虑在MTEB上表现优异的、与自己应用场景相匹配的模型。

当前,Embedding 模型领域呈现出两大趋势:

  1. 1. 指令微调(Instruction-Tuned)模型:如multilingual-e5-large-instruct等模型,通过在训练中加入任务指令,使得模型能够更好地理解任务意图。
  2. 2. 领域专用(Domain-Specific)模型:通用模型在处理特定领域(如法律、医疗、金融)的专业术语时往往表现不佳。因此,针对特定领域数据进行微调的模型能够取得远超通用模型的效果。
领域微调

当现成的模型无法满足特定业务需求时,对基础模型进行领域专属的微调(Fine-tuning)就显得至关重要。

  • 策略与损失函数:微调通常采用 **对比学习(Contrastive Learning)**的范式,其核心思想是,在Embedding空间中,拉近“相似”样本对的距离,推远“不相似”样本对的距离。常用的损失函数包括 **Triplet Loss(三元组损失)**和更高效的 Multiple Negatives Ranking Loss (MNR Loss)
  • 数据准备:微调的成败很大程度上取决于训练数据的质量。特别是 “困难负样本(Hard Negatives)”,即那些与查询非常相关但实际上是错误答案的样本,Hard Negatives 对于训练出具有高区分度的模型非常重要。
评估 Embedding 质量

如何科学地衡量 Embedding 的质量?评估方法可分为 内在评估(评估向量本身性质)和 外在评估(将Embedding 应用于下游任务并衡量其性能)两大类。对 RAG 系统而言,外在评估最有实际意义。

表5:检索任务核心评估指标

指标

定义

解读

适用场景

Recall@k

在返回的前k个结果中,包含了多少比例的“所有”相关文档。

衡量系统的“查全率”或覆盖能力。

文档检索、商品推荐等需要尽可能多地发现相关项的场景。

Mean Reciprocal Rank (MRR)

多个查询的倒数排名(第一个正确答案所在位置的倒数)的平均值。

衡量系统将第一个相关结果排在多靠前的位置。高分(接近1)表示系统总能把正确答案放在最前面。

问答系统、事实查找等用户期望快速找到唯一正确答案的场景。

Precision@k

在返回的前k个结果中,有多少比例是相关的。

衡量返回结果的“准确率”。高分表示返回的顶部结果相关性很高。

网页搜索等用户主要关注顶部结果质量的场景。

NDCG@k

归一化折损累计增益,同时考虑了结果的相关性等级和位置。

最全面的排名质量指标之一,奖励将更相关的结果排在更前面。

任何对结果排序质量有精细化要求的场景。

查询优化

用户输入的原始查询往往是模糊的,在检索前对查询进行优化也非常重要。

  • 使用 LLM 进行查询重写与扩展:大型语言模型强大的语言理解和生成能力使其成为优化查询的理想工具。具体方法包括 查询重写(将模糊查询改写为精确查询)、查询扩展(补充同义词或相关概念)和 生成假设性文档(让LLM生成一个“虚拟”的理想答案文档,并使用其 Embedding 进行搜索)。
  • 传统查询扩展技术:包括利用同义词库(如WordNet)进行扩展,以及经典的**伪相关反馈(Pseudo-Relevance Feedback, PRF)**技术,即利用初次检索结果中的高频词来扩展原始查询。

负反馈

传统的 RAG 系统是静态的,通过引入用户反馈循环,特别是负反馈,我们可以将 RAG 系统从一个静态的信息处理器转变为一个能够持续学习和自我改进的动态系统。这一演进过程可以分为几个阶段:

  • 引入反馈信号:系统开始收集用户的显式反馈(如“赞”或“踩”)或隐式反馈(如点击行为)。负反馈信号尤其强大,因为它能明确地告诉模型哪些内容是“不应该”检索的,从而更有效地帮助模型划定决策边界。
  • 离线模型迭代:收集到的反馈数据可被用来定期地、离线地对Embedding模型或Reranker模型进行微调,创建了一个手动的改进循环。
  • 在线自适应学习:最终的进化形态是利用 **基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)**来构建一个闭环的、自适应的 RAG 系统。在这个框架中,用户的交互被视为环境提供的“奖励”信号。一个强化学习智能体可以学习一个策略,来优化其检索行为(例如,决定是否检索、检索多少文档),其目标是最大化长期累积的奖励。

总结

本文系统地梳理了向量检索技术从经典稀疏模型到现代稠密模型的演进脉络,深入探讨了从底层算法、高级架构到系统优化的全栈知识体系。

核心要点回顾

  • 稀疏与稠密的协同BM25 的关键词精度与向量模型的语义理解能力高度互补。混合检索已成为业界共识,是构建鲁棒、高精度检索系统的基石。
  • 多级架构的必要性:面对效率与精度的两难,"检索-重排"范式提供了一个优雅的工程解决方案,通过快速召回和精确重排实现高性能检索。
  • Embedding模型的中心地位:检索系统的上限由 Embedding 模型的质量决定。模型选择、领域微调以及科学的评估是提升系统性能的根本途径。
  • 端到端的系统优化:一个生产级的检索系统是算法、架构、工程和数据协同作用的结果。从索引参数调优、查询理解到缓存策略,每一个环节的优化都至关重要。

一些思考

向量检索技术的发展已进入深水区。构建下一代人工智能应用,要求我们必须采取一种系统性的、端到端的视角。这不仅意味着要关注单个算法的创新,更要着眼于如何将数据、模型、架构和用户反馈融合成一个高效、智能、可持续演进的闭环生态系统

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磊叔的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
    • 检索的演进:从关键词到语义
    • 向量检索
  • 稀疏检索
    • 词频-逆文档频率(TF-IDF)
    • Okapi BM25
  • 稠密向量检索
    • 从词语到向量:Embedding
    • 近似最近邻(ANN)搜索
    • HNSW 解析
    • IVF 解析
  • 高级检索策略
    • 混合检索
    • 多级检索
  • 优化与性能调优
    • 索引优化
    • 查询优化
    • 高吞吐系统的缓存策略
  • Milvus 中的索引技术
    • 数据操作
  • 提升召回与精度
    • Embedding 模型调优
    • 查询优化
    • 负反馈
  • 总结
    • 核心要点回顾
    • 一些思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档