type
status
date
slug
summary
tags
category
icon
password
Description
管理上下文长度
传统的 LLMs 有一个上下文长度限制,这是它们的主要限制之一,限制了单次用户-模型交互中处理的信息量。解决这一限制一直是 LLMs 开发社区的主要行动方向之一,提高了人们对增加上下文长度在产生更连贯和准确的响应方面的优势的认识。例如,2020 年发布的 GPT-3 的上下文长度为 2048 个 token,而它更年轻但功能更强大的兄弟 GPT-4 Turbo(2023 年发布)在单个提示中允许高达 128K 个 token。不用说,这相当于在单次交互中处理一整本书,例如对其进行总结。
另一方面,检索增强生成(RAG)会整合从检索到的文档(通常是向量数据库)中获取的外部知识,以增强 LLM 输出的上下文和相关性。然而,在 RAG 系统中管理上下文长度仍然是一个挑战,因为在某些需要大量上下文信息的场景中,需要高效地选择和总结检索到的信息,以便在不丢失关键知识的情况下,保持在 LLM 的输入限制之内。
RAG 中长上下文管理的策略
在将检索到的知识传递给 LLM 之前,RAG 系统有几种策略可以整合尽可能多的相关检索知识,并保持在模型的输入限制之内。以下将从最简单到最复杂介绍其中四种。
1. 文档分块
文档分块通常是最简单的策略,它侧重于将向量数据库中的文档拆分成更小的块。虽然乍一看可能不明显,但该策略通过多种方式帮助克服 RAG 系统中 LLMs 的上下文长度限制,例如降低检索冗余信息的风险,同时保持块内的上下文完整性。
2. 选择性检索
选择性检索包括对大量相关文档应用过滤过程,仅检索最相关部分,从而缩小传递给 LLM 的输入序列的大小。通过智能地过滤要保留的检索文档的部分,其目标是避免包含不相关或无关的信息。
3. 定向检索
与选择性检索类似,定向检索的本质是在心中有一个非常具体的意图或最终响应的情况下检索数据。这是通过针对特定类型的查询或数据源优化检索器机制来实现的,例如为医学文本、新闻文章、近期科学突破等构建专门的检索器。简而言之,它构成了选择性检索的一种演进且更专业的形式,并在其中加入了额外的领域特定标准。
4. 上下文摘要
上下文摘要是管理 RAG 系统中上下文长度的一种更复杂的方法,在该方法中,我们在构建最终上下文的过程中应用文本摘要技术。一种可能的方法是使用一个额外的语言模型——通常更小且经过摘要任务训练——来总结检索到的文档的大块内容。此摘要任务可以是抽取式的或生成式的,前者识别并提取相关的文本段落,后者从头开始生成一个重述和浓缩原始文本块的摘要。或者,一些 RAG 解决方案使用启发式方法来评估文本片段(例如,文本块)的相关性,丢弃相关性较低的片段。
策略 | 摘要 |
文档分块 | 将文档分割成更小、更连贯的块,以保留上下文,同时减少冗余并保持在 LLM 的限制范围内。 |
选择性检索 | 过滤大量相关文档,仅检索最相关部分,最大限度地减少无关信息。 |
定向检索 | 使用专门的检索器优化针对特定查询意图的检索,添加特定领域的标准来优化结果。 |
上下文摘要 | 使用抽取式或生成式摘要技术来浓缩检索到的海量内容,确保关键信息能够传递给 LLM。 |
长上下文语言模型
那么长上下文 LLMs 呢?是不是不需要 RAG 就足够了?
这是一个需要解决的重要问题。长上下文 LLMs(LC-LLMs)是能够接受非常长的输入 token 序列的"超大型"LLMs。尽管研究表明 LC-LLMs 通常优于 RAG 系统,但后者仍然具有独特的优势,尤其是在需要动态实时信息检索和成本效益的场景中。在这些应用中,值得考虑使用一个被 RAG 系统包裹的小型 LLM,该系统采用上述策略,而不是使用 LC-LLM。它们都不是万能的解决方案,两者都能在适合它们的特定场景中大放异彩。
有效的检索优化
在检索增强生成(RAG)系统中,负责从外部知识库中识别相关上下文的检索器组件的性能,与其生成有效响应的语言模型的性能同等重要,甚至更重要。因此,一些改进 RAG 系统的努力将重点放在优化检索过程上也就不足为奇了。
本文介绍了一些从检索方面改进 RAG 系统性能的常用方法。通过实施混合搜索与重排、选择性检索和查询转换等高级检索技术,RAG 系统能更好地应对上下文不相关和信息过载等常见挑战。每种策略都针对检索过程的不同方面,以确保生成更准确、更相关的响应,并且它们都有助于缩小检索数据的范围,从而精确定位最相关、最高质量的上下文片段,从而提高准确性和效率,尤其是在长上下文或专业 RAG 应用中。
常见的检索优化策略
在 RAG 系统中优化检索器性能的广泛实施的方法包括以下三种。
1. 混合搜索与重排
混合搜索结合了两种检索标准,以获得一组相关的文档(或文档块)。一种常见的方法是结合稀疏检索和密集检索。稀疏检索使用基于关键词的方法(如 TF-IDF)来匹配精确的术语,使其在精确术语匹配方面非常有效。相比之下,密集检索利用嵌入(文本的数值表示)来捕捉语义相似性,这在精确术语不同但含义相似的情况下非常理想。当这种混合搜索机制的目标是通过相关性优化检索文档的排名时,我们应用重排来优先处理文档,以便更好地适应原始用户查询的意图。
2. 查询转换
查询转换包括调整或扩展查询,以便考虑更广泛或更具体的检索文档集。例如,可以通过在原始查询中加入术语的同义词,或改写查询的一部分来实现。查询转换可以通过增加捕获高质量上下文的几率来帮助优化检索器的有效性,尤其是在精确术语可能存在显著差异的情况下。
3. 上下文相关性过滤
一旦检索到相关文档,这种简单但通常有效的方法会根据上下文元数据(如日期和时间、地点和作者身份)对文档进行过滤。这有助于优先考虑内容与用户上下文和意图的相关性。
高级检索优化技术
以下三种技术是更专业的方法,需要额外的设置,但推荐用于高风险的 RAG 用例。
1. 特定案例优化
案例特定优化背后的思想是针对特定领域(例如,医疗、金融等)调整或定制检索过程,微调该过程以更好地捕捉目标领域的细微差别。实现这一目标的一个具体解决方案是通过特定领域的加权和排名指标,其中某些术语或实体根据其在目标领域内的相关性进行优先排序。另一种方法是在特定领域的专用数据集上训练或微调检索器。
2. 带反馈循环的主动学习
带反馈循环的主动学习是一种交互式方法,它结合用户反馈来迭代地调整和改进检索结果,随着时间的推移优化模型的检索准确性。与其他 RAG 检索器优化策略不同,这种方法通过整合实时反馈来调整检索过程,促进与用户偏好或不断变化的需求保持一致。
3. 语义哈希
语义哈希通过将文档编码为哈希码(通常是紧凑的二进制向量)来提高检索效率,从而实现更快的基于相似度的检索。当 RAG 效率至关重要时,它是首选解决方案,并且可以与其他上述侧重于检索结果相关性质量的策略结合使用。
技术 | 摘要 |
混合搜索和重排序 | 结合了稀疏(基于关键词)和密集(基于嵌入)的检索方法来获取相关文档,然后应用重排序来优先处理最符合查询意图的结果。 |
查询转换 | 通过整合同义词或重新措辞来调整或扩展查询,以捕获更广泛或更精确的文档集,从而提高检索高质量上下文的机会。 |
上下文相关性过滤 | 根据上下文元数据(例如日期、地点、作者身份)过滤检索到的文档,以确保所选内容与用户的需求紧密匹配。 |
特定案例优化 | 通过领域特定权重和在专业数据集上的微调来定制特定领域的检索过程(例如,医疗、金融),从而提高在细分领域的相关性。 |
带反馈循环的主动学习 | 结合用户反馈迭代优化检索结果,动态适应不断变化的用户偏好,确保随着时间的推移获得更准确的结果。 |
语义哈希 | 将文档编码为紧凑的二进制向量,以实现快速的基于相似度的检索,显著提高了效率,尤其是在高需求的 RAG 场景中。 |
向量数据库与索引策略
在 RAG 系统中高效检索知识是提供准确及时响应的关键。向量数据库和索引策略在增强 RAG 系统的性能方面发挥着至关重要的作用。本文将继续"理解 RAG"系列,介绍 RAG 系统中常用的向量数据库和索引技术的概念。旨在揭示它们的作用,解释它们的工作原理,并说明为什么它们对大多数 RAG 系统至关重要。
什么是向量数据库?
简单来说,向量数据库是一种专门的数据库类型,经过优化,可以存储和检索表示为高维向量的文本。
为什么这些数据库对 RAG 至关重要?因为向量表示能够对大型文档库进行高效的基于相似度的搜索,从而根据用户查询快速检索相关信息。在向量数据库中,语义上相似的文档具有更接近的向量表示。
例如,与两篇地中海餐厅评论相关的向量会比一篇西班牙餐厅评论和一篇关于古典音乐的新闻报道相关的向量更相似。同样,通过点积和余弦相似度等向量运算,可以高效地检索出与用户查询在语义上相关的文档。

在向量数据库中,语义上相似的文档的向量表示彼此靠近。
理解向量数据库和传统数据库的区别非常重要。传统数据库依赖结构化数据和精确匹配,而向量数据库支持非结构化检索,允许进行语义搜索而非基于关键词的查找。
RAG 中索引策略的概述和影响
下一个需要回答的问题是:RAG 系统如何从向量数据库中高效地检索信息?答案在于索引策略,它旨在提高相似性搜索的速度并保持准确性。使用索引策略就像在图书馆里通过查阅目录来找书,而不是手动扫描每一个书架。
以下是 RAG 系统常用的索引策略:
- 近似最近邻 (ANN):一种快速的方法,可显著缩短搜索时间,但为了效率会牺牲一些准确性。
- 分层可导航小世界 (HNSW):一种流行的策略,通过将数据组织成多层图结构来优化最近邻搜索,从而在速度和准确性之间取得平衡。
- IVF(倒排文件索引):该策略通过将高维向量分割成簇来提高大规模搜索效率,从而在处理海量数据集时加快检索过程。
- PQ (产品量化):在高级 RAG 系统中使用,此方法压缩向量数据以减少内存使用,同时实现高效的相似性搜索。
一个实施良好的索引策略,结合强大的向量数据库,可以在多个方面影响 RAG 系统的性能。
首先,检索中的准确性和速度权衡得到了优化,确保搜索既高效又相关。
其次,索引在降低延迟方面发挥着核心作用,同时又不损害 RAG 系统生成的响应质量。这反过来又促进了更快、更具可扩展性的知识检索。
第三,不同的 RAG 应用可能受益于不同的索引策略。例如,实时对话式 AI 助手可能优先选择HNSW 索引以实现快速而准确的检索,而大规模文档搜索引擎可能倾向于使用IVF 索引来高效管理海量数据集。
常见误解
一个常见的误解是认为数据库中的向量越多,检索效果就越好。这从根本上是错误的,因为检索质量取决于数据库中向量的相关性以及索引策略的有效性,而不是存储的数据量。事实上,更多的向量可能会带来更多的噪声,从而更难高效地检索到真正相关的结果。
同时,关于索引策略,虽然像精确最近邻这样的暴力搜索策略——即找到与输入查询最相似的向量——听起来可能太慢而无法使用,但在某些情况下它更可取,例如处理小型数据集时,精确最近邻搜索可以在不显著损失性能的情况下提供最大的准确性。
同样重要的是要澄清,近似搜索本身并不会导致不准确,而是通过精心设计的效率-精度权衡,它们可以帮助显著提高检索效率,同时保持高质量的结果。
理解向量数据库和索引策略对于设计高效且有效的 RAG 系统至关重要。这两个要素直接影响检索速度、准确性和 RAG 系统的性能。我们概述了几种索引策略,并讨论了关于向量检索以及某些搜索和索引方法的误解。



