RAG 修炼手册|揭秘 RAG 时代的新向量数据库
随着对大型模型应用探索的深入,检索增强生成技术(Retrieval-Augmented Generation)受到了广泛关注,并被应用于各种场景,如知识库问答、法律顾问、学习助手、网站机器人等。
不过,有很多朋友对于向量数据库和 RAG 的关系及技术原理并不清楚,本文将带大家深入了解 RAG 时代的新向量数据库。
01.RAG 的广泛应用及其独特优势
一个典型的 RAG 框架可以分为检索器(Retriever)和生成器(Generator)两块,检索过程包括为数据(如 Documents)做切分、嵌入向量(Embedding)、并构建索引(Chunks Vectors),再通过向量检索以召回相关结果,而生成过程则是利用基于检索结果(Context)增强的 Prompt 来激活 LLM 以生成回答(Result)。
https://arxiv.org/pdf/2402.19473
RAG 技术的关键在于其结合了这两种方法的优点:检索系统能提供具体、相关的事实和数据,而生成模型则能够灵活地构建回答,并融入更广泛的语境和信息。这种结合使得 RAG 模型在处理复杂的查询和生成信息丰富的回答方面非常有效,在问答系统、对话系统和其他需要理解和生成自然语言的应用中非常有用。相较于原生的大型模型,搭配 RAG 可以形成天然互补的优势:
避免“幻觉”问题:RAG 通过检索外部信息作为输入,辅助大型模型回答问题,这种方法能显著减少生成信息不准确的问题,增加回答的可追溯性。
数据隐私和安全:RAG 可以将知识库作为外部附件管理企业或机构的私有数据,避免数据在模型学习后以不可控的方式泄露。
信息的实时性:RAG 允许从外部数据源实时检索信息,因此可以获取最新的、领域特定的知识,解决知识时效性问题。
虽然大型模型的前沿研究也在致力于解决以上的问题,例如基于私有数据的微调、提升模型自身的长文本处理能力,这些研究有助于推动大型模型技术的进步。然而在更通用的场景下,RAG 依然是一个稳定、可靠且性价比高的选择,这主要是因为 RAG 具有以下的优势:
白盒模型:相较于微调和长文本处理的“黑盒”效应,RAG 模块之间的关系更为清晰紧密,这在效果调优上提供了更高的可操作性和可解释性;此外,在检索召回内容质量和置信度(Certainty)不高的情况下,RAG 系统甚至可以禁止 LLMs 的介入,直接回复“不知道”而非胡编乱造。
成本和响应速度:RAG 相比于微调模型具有训练时间短和成本低的优势;而与长文本处理相比,则拥有更快的响应速度和低得多的推理成本。在研究和实验阶段,效果和精确程度是最吸引人的;但在工业和产业落地方面,成本则是不容忽视的决定性因素。
私有数据管理:通过将知识库与大型模型解耦,RAG 不仅提供了一个安全可落地的实践基础,同时也能更好地管理企业现有和新增的知识,解决知识依赖问题。而与之相关的另一个角度则是访问权限控制和数据管理,这对 RAG 的底座数据库来说是很容易做到的,但对于大模型来说却很难。
因此,在我看来,随着对大型模型研究的不断深入,RAG 技术并不会被取代,相反会在相当长的时间内保有重要地位。这主要得益于其与 LLM 的天然互补性,这种互补性使得基于 RAG 构建的应用能在许多领域大放异彩。而 RAG 提升的关键一方面在 LLMs 能力的提升,而另一方面则依赖于检索(Retrieval)的各类提升和优化。
02.RAG 检索的底座:向量数据库
在业界实践中,RAG 检索通常与向量数据库密切结合,也催生了基于 ChatGPT + Vector Database + Prompt 的 RAG 解决方案,简称为 CVP 技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs),通过将 LLMs 生成的查询转换为向量,使得 RAG 系统能在向量数据库中迅速定位到相应的知识条目。这种检索机制使 LLMs 在面对具体问题时,能够利用存储在向量数据库中的最新信息,有效解决 LLMs 固有的知识更新延迟和幻觉的问题。
尽管信息检索领域也存在选择众多的存储与检索技术,包括搜索引擎、关系型数据库和文档数据库等,向量数据库在 RAG 场景下却成为了业界首选。这一选择的背后,是向量数据库在高效地存储和检索大量嵌入向量方面的出色能力。这些嵌入向量由机器学习模型生成,不仅能够表征文本和图像等多种数据类型,还能够捕获它们深层的语义信息。在 RAG 系统中,检索的任务是快速且精确地找出与输入查询语义上最匹配的信息,而向量数据库正因其在处理高维向量数据和进行快速相似性搜索方面的显著优势而脱颖而出。
以下是对以向量检索为代表的向量数据库与其他技术选项的横向比较,以及它在 RAG 场景中成为主流选择的关键因素分析:
首先在实现原理方面,向量是模型对语义含义的编码形式,向量数据库可以更好地理解查询的语义内容,因为它们利用了深度学习模型的能力来编码文本的含义,不仅仅是关键字匹配。受益于 AI 模型的发展,其背后语义准确度也正在稳步提升,通过用向量的距离相似度来表示语义相似度已经发展成为了 NLP 的主流形态,因此表意的 embedding 就成了处理信息载体的首选。
其次在检索效率方面,由于信息可以表示成高维向量,针对向量加上特殊的索引优化和量化方法,可以极大提升检索效率并压缩存储成本,随着数据量的增长,向量数据库能够水平扩展,保持查询的响应时间,这对于需要处理海量数据的 RAG 系统至关重要,因此向量数据库更擅长处理超大规模的非结构化数据。
至于泛化能力这个维度,传统的搜索引擎、关系型或文档数据库大都只能处理文本,泛化和扩展的能力差,向量数据库不仅限于文本数据,还可以处理图像、音频和其他非结构化数据类型的嵌入向量,这使得 RAG 系统可以更加灵活和多功能。
最后在总拥有成本上,相比于其他选项,向量数据库的部署都更加方便、易于上手,同时也提供了丰富的 API,使其易于与现有的机器学习框架和工作流程集成,因而深受许多 RAG 应用开发者的喜爱。
向量检索正凭借其对于语义的理解能力、高效的检索效率、以及对多模态的泛化支持等优势,成为了大模型时代理想的 RAG 检索器,而随着 AI 和 embedding 模型的进一步发展,这些优势在未来或将更加突出。
03.RAG 场景对向量数据库的需求
虽然向量数据库成为了检索的重要方式,但随着 RAG 应用的深入以及人们对高质量回答的需求,检索引擎依旧面临着诸多挑战。这里以一个最基础的 RAG 构建流程为例:检索器的组成包括了语料的预处理如切分、数据清洗、embedding 入库等,然后是索引的构建和管理,最后是通过 vector search 找到相近的片段提供给 prompt 做增强生成。大多数向量数据库的功能还只落在索引的构建管理和搜索的计算上,进一步则是包含了 embedding 模型的功能。
但在更高级的 RAG 场景中,因为召回的质量将直接影响到生成模型的输出质量和相关性,因此作为检索器底座的向量数据库应该更多的对检索质量负责。为了提升检索质量,这里其实有很多工程化的优化手段,如 chunk_size 的选择,切分是否需要 overlap,如何选择 embedding model,是否需要额外的内容标签,是否加入基于词法的检索来做 hybrid search,重排序 reranker 的选择等等,其中有不少工作是可以纳入向量数据库的考量之中。而检索系统对向量数据库的需求可以抽象描述为:
高精度的召回:向量数据库需要能够准确召回与查询语义最相关的文档或信息片段。这要求数据库能够理解和处理高维向量空间中的复杂语义关系,确保召回内容与查询的高度相关性。这里的效果既包括向量检索的数学召回精度也包括嵌入模型的语义精度。
快速响应:为了不影响用户体验,召回操作需要在极短的时间内完成,通常是毫秒级别。这要求向量数据库具备高效的查询处理能力,以快速从大规模数据集中检索和召回信息。此外,随着数据量的增长和查询需求的变化,向量数据库需要能够灵活扩展,以支持更多的数据和更复杂的查询,同时保持召回效果的稳定性和可靠性。
处理多模态数据的能力:随着应用场景的多样化,向量数据库可能需要处理不仅仅是文本,还有图像、视频等多模态数据。这要求数据库能够支持不同种类数据的嵌入,并能根据不同模态的数据查询进行有效的召回。
可解释性和可调试性:在召回效果不理想时,能够提供足够的信息帮助开发者诊断和优化是非常有价值的。因此,向量数据库在设计时也应考虑到系统的可解释性和可调试性。
RAG 场景中对向量数据库的召回效果有着严格的要求,不仅需要高精度和快速响应的召回这类基础能力,还需要处理多模态数据的能力以及可解释性和可调试性这类更高级的功能,以确保生成模型能够基于高质量的召回结果产生准确和相关的输出。在多模态处理、检索的可解释性和可调试性方面,向量数据库仍有许多工作值得探索和优化,而 RAG 应用的开发者也急需一套端到端的解决方案来达到高质量的检索效果。
评论