AI学习笔记整理(48)——大模型中的向量工程RAG系统
RAG(Retrieval-Augmented Generation)即检索增强生成,为 LLM 提供了从某些数据源检索到的信息,并基于此修正生成的答案。RAG 基本上是 Search + LLM 提示,可以通过大模型回答查询,并将搜索算法所找到的信息作为大模型的上下文。查询和检索到的上下文都会被注入到发送到 LLM 的提示语中。RAG技术是一种结合了检索和生成能力的机器学习架构,它在大型语言模型
大模型中的向量工程
向量工程概念
向量工程是人工智能大模型中的核心技术,专注于将原始数据(如文本、图像或声音)转换为数值向量,以便模型高效处理和理解。这一过程称为嵌入(Embedding),其核心是将离散的、高维的数据映射到连续的低维向量空间,捕捉数据的内在语义和特征关系。
向量工程的核心在于向量化过程, 通过嵌入模型(如Word2Vec、GloVe或BERT)将输入数据转换为稠密向量,其中每个维度代表数据的抽象特征,例如在文本处理中,相似语义的词会被映射到向量空间中的相近位置,从而实现语义相似性计算。
向量工程的关键组成部分包括:
- 向量表示:使用预训练嵌入模型生成数据的向量表示。
- 向量存储:利用向量数据库高效存储大规模向量数据。
- 向量相似度计算:通过计算向量间的距离(如余弦相似度)衡量数据相似性。
- 向量索引:采用近似最近邻搜索算法(如HNSW或LSH)加速大规模向量检索。
在实际应用中,向量工程广泛用于信息检索、推荐系统和自然语言理解等领域。 例如,在智能客服中,用户查询和文档库被转换为向量后,通过相似度匹配快速检索相关信息;在多模态任务中,图像或声音数据也能被向量化以支持跨模态理解。
向量工程与提示工程和微调工程紧密协作, 共同提升大模型性能:提示工程通过设计输入指令引导模型行为,微调工程则通过参数调整优化模型特定任务能力,而向量工程为两者提供高效的数据表示和检索基础,形成技术协同。
为什么要使用向量工程
向量工程在大模型中至关重要,因为它将非数值数据(如文本、图像、音频)转换为数值向量,使计算机能够高效处理和理解这些信息。这一过程是大模型运行的基础,因为模型内部的所有计算都依赖于数值运算,向量表示不仅简化了数据格式,还能捕捉数据的语义特征和内在关系。
向量工程的核心作用在于提升计算效率和实现语义理解。 向量将复杂数据映射到高维空间中的点,相似数据在向量空间中距离更近,从而便于快速比较和检索,例如在信息检索或推荐系统中,通过计算向量相似度能高效匹配相关内容。同时,向量表示支持大规模并行计算,显著提高处理速度,降低资源消耗。
在实际应用中,向量工程支撑多种关键功能。 例如,在自然语言处理中,文本嵌入技术将词语或句子转换为向量,保留其上下文含义,使模型能生成连贯、相关的输出;在多模态任务中,图像或音频向量化后可与文本数据融合,实现跨模态理解。此外,向量工程是检索增强生成(RAG)等技术的基础,通过向量数据库存储和检索知识,提升模型响应的准确性和时效性。
大模型应用新范式RAG
RAG 是2023年最流行的基于 LLM 的应用系统架构。有许多产品几乎完全建立在 RAG 之上,覆盖了结合网络搜索引擎和 LLM 的问答服务,到成千上万个数据聊天的应用程序。很多人将RAG和Agent 作为大模型应用的两种主流架构。
参考链接:https://cloud.tencent.com/developer/article/2387798
什么是RAG
RAG(Retrieval-Augmented Generation)即检索增强生成,为 LLM 提供了从某些数据源检索到的信息,并基于此修正生成的答案。RAG 基本上是 Search + LLM 提示,可以通过大模型回答查询,并将搜索算法所找到的信息作为大模型的上下文。查询和检索到的上下文都会被注入到发送到 LLM 的提示语中。
RAG技术是一种结合了检索和生成能力的机器学习架构,它在大型语言模型(LLM)的基础上增加了检索能力,以提高模型在特定任务上的表现和准确性,有效缓解模型幻觉和知识停滞问题。这种技术主要用于增强大型语言模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。RAG的核心思想是让语言模型在生成回答或文本时能够动态地从外部知识库中检索相关信息,从而提高生成内容的准确性、可靠性和透明度。
RAG技术的构建
构建一个RAG系统通常包括以下几个主要组成部分:
-
语言模型:这是一个预先训练好的模型,能够根据给定的上下文生成文本。在RAG中,语言模型使用检索到的信息来生成更加准确和丰富的回答。
-
知识库:这是一个包含大量信息的数据库或文档集合,可以是结构化的数据、非结构化的文本或多模态内容。知识库中的信息以向量形式存储,便于快速检索和匹配。
-
检索机制:这个组件负责在语言模型生成回答时检索相关的信息片段。检索机制通常使用某种形式的嵌入技术,将语言模型的输入和知识库中的条目进行比较,找出最相关的部分。
在实际操作中,构建RAG系统的步骤包括选择或训练语言模型、构建知识库、设计检索机制以及整合与训练。通过这些步骤,可以构建出一个能够高效处理知识密集型任务的RAG系统。
RAG开发流是什么
RAG开发流(检索增强生成)指构建RAG应用的系统化流程,核心是将外部知识库检索与大语言模型(LLM)生成结合,以提升回答的准确性与可信度。
RAG工作流的核心在于将检索与生成步骤无缝衔接: 首先,外部数据源(如文档或数据库)被分割成离散文本块,并通过Embedding模型转换为向量表示,这些向量被存储于向量数据库中以构建索引;当接收到用户查询时,系统会将查询同样编码为向量,并在向量数据库中检索与之最相似的文本块,从而动态获取相关上下文;最后,检索到的文本块与原始查询共同作为输入传递给生成模型,模型据此合成基于真实证据的响应。
该流程通常包括以下关键阶段:
-
数据准备与连接:
首先通过文档加载器(如PDF、网页或数据库加载器)从多种来源获取原始数据,并使用文本分块工具(如RecursiveCharacterTextSplitter)将内容分割为小段,便于后续处理。 -
向量化与索引构建:
将分块后的文本输入嵌入模型(如OpenAI Embedding或Hugging Face模型)转换为向量,并存入向量数据库(如Chroma或FAISS),建立高效检索索引。 -
检索与上下文增强:
用户查询时,系统先将问题转换为向量,在向量数据库中查找最相关的文档片段,再将这些片段与原始问题组合成增强后的提示上下文。 -
生成与后处理:
将增强上下文输入LLM生成最终回答,并通过输出解析、去重或可信度评估等步骤优化结果。
框架与工具支持: 开发中常使用LangChain、LlamaIndex等框架自动化上述流程,提供模块化组件加速原型构建。
RAG开发流的意义
RAG开发流(检索增强生成)通过将外部知识检索与语言模型生成相结合,为AI系统带来根本性改进,其意义体现在多个关键方面。
-
提升响应准确性与减少幻觉:RAG通过从外部知识库检索实时、可靠的上下文来增强生成内容,有效缓解大语言模型(LLM)的“幻觉”问题。例如,研究显示RAG可将幻觉率从3%-27%(甚至科学任务中33%)显著降低,因为生成结果基于可追溯的证据源,而非仅依赖模型内部参数化记忆。
-
增强知识时效性与可扩展性:传统模型受限于静态训练数据,而RAG允许动态接入最新外部数据(如数据库或文档),无需重新训练即可扩展知识边界。这种灵活性使系统能快速适应新领域或实时信息更新,例如在医疗或金融场景中保持答案时效性。
-
优化个性化与上下文感知能力:RAG开发流支持构建针对用户偏好、历史交互或特定场景定制的检索机制,生成更贴合需求的响应。通过整合用户上下文与外部知识,系统能处理复杂开放式查询,提供连贯且个性化的交互体验。
-
保障数据安全与隐私保护:RAG可通过限制检索范围至受控数据集,并将敏感操作本地化,帮助满足严格合规要求。这种设计使系统仅访问授权信息,降低数据泄露风险。
-
提高开发效率与系统可维护性:RAG采用模块化架构,将检索与生成解耦,便于独立优化各组件(如升级向量数据库或调整检索策略)。开源框架(如LangChain或LlamaIndex)进一步简化了流水线构建,支持快速迭代和多源数据整合。
基础的 RAG 技术
RAG 系统的起点一般是一个文本文档的语料库,简单看起来是这样的: 把文本分割成块,然后把这些分块嵌入到向量与transformer编码器模型,把所有这些向量建立索引,最后创建一个 LLM 提示语,告诉模型回答用户的查询,给出在搜索步骤中找到的上下文。在运行时,我们用相同的编码器模型完成用户查询的向量化,然后执行这个查询向量的索引搜索,找到top-k 的结果,从数据库中检索到相应的文本块,并提供给 LLM 提示语Prompt作为上下文。
RAG中的高级技术
尽管并不是所有RAG系统中的高级技术都可以轻松地在一张图中可视化,但给出一个描述核心步骤和算法的方案还是有意义的。
-
分块和矢量化
首先,要创建一个向量索引表示我们的文档内容,然后在运行时搜索所有这些向量和查询向量之间最小距离对应的最接近语义。
由于transformer模型有固定的输入序列长度,即使输入上下文的窗口很大,一个或几个句子的向量也比一个在几页文本上取平均值的向量更能代表它们的语义意义 ,所以数据分块是一个有意义的技术。把初始文档分成一定大小的块,同时又不失去它们的意义,也就是把文本分成句子或段落,而不是把一个句子分成两部分。而且,已经有了各种能够执行此任务的文本分割器实现。
下一步是选择一个模型来生产所选块的嵌入,同样有很多方法,例如搜索优化的模型( bge-large 或者E5 系列),MTEB 排行榜可以得到最新的一些方法信息。 -
搜索的索引
面向RAG的大模型应用的关键部分是用于搜索的索引,它存储前面得到的向量化内容。当然,查询总是首先向量化,对于 top k 分块也是一样的。最简单的实现使用一个平铺的索引,在查询向量和所有块向量之间进行距离计算并遍历。 -
Rerank和过滤
在得到了检索结果后,需要通过过滤来重新排序。LlamaIndex 提供了多种可用的后处理程序,根据相似度评分、关键词、元数据过滤掉结果,或者用其他模型对结果进行重新排序,比如基于句子transformer的交叉编码器、 根据元数据(比如日期最近性)内聚重新排序等等。这是将检索到的上下文提供给 LLM 以获得结果答案之前的最后一步。 -
query变换
查询转换是一系列使用 LLM 作为推理引擎来修改用户输入以提高检索质量的技术,有很多不同的技术选择。 -
query 路由
Query路由是由 LLM 驱动的决策步骤,在给定用户查询的情况下,决定接下来做什么。这些选项通常是总结、针对某些数据索引执行搜索或尝试多种不同的路由,然后在一个答案中综合它们的输出。
Query路由还可以用于选择索引,或者更广泛的数据存储,将用户查询发送到何处,例如,经典的向量存储和图形数据库或关系数据库。对于多文档存储来说,一个非常经典的情况是一个摘要索引和另一个文档块向量索引。 -
RAG中的智能体Agent
智能体Agent几乎自第一个 LLM API 发布以来就一直存在,其想法是为一个能够推理的 LLM 提供一套工具以及需要完成的任务。这些工具可能包括一些确定性函数,比如任何代码函数或外部 API,甚至包括其他代理,这种 LLM 链接思想就是 LangChain 来源。 -
响应合成
响应合成是任何 RAG 流水线的最后一步,根据检索的所有上下文和初始用户查询生成一个答案。最简单的方法是将所有获取的上下文(高于某个相关性阈值)与查询一起连接并提供给 LLM。但是,还有其他更复杂的选项涉及多个 LLM 调用,以细化检索到的上下文并生成更好的答案。响应合成的主要方法有:- 通过逐块向LLM发送检索到的上下文来迭代地细化答案;
- 总结检索到的上下文以适应提示;
- 根据不同的上下文块生成多个答案,然后将其连接或总结。
RAG开发流与向量数据库关系
RAG开发流程(检索增强生成)与向量数据库之间存在紧密的依赖关系,向量数据库作为核心基础设施支撑RAG系统的检索环节,其性能直接影响整个流程的效率和效果。
RAG开发流程的核心环节包括数据准备、检索和生成三个阶段,向量数据库贯穿其中。
在数据准备阶段,原始文档需经过文本切分、嵌入向量化(通过embedding模型转换为向量)并存储至向量数据库,构建语义索引;这一过程要求向量数据库具备高效批量导入、索引优化和存储管理能力,以处理大规模非结构化数据。
检索阶段是流程的关键,当用户查询输入时,系统将查询同样转换为向量,并在向量数据库中执行相似性搜索(如近似最近邻搜索),快速召回相关文档片段;向量数据库的查询响应速度、召回率和可扩展性直接决定了检索结果的质量和实时性。
生成阶段则利用检索到的文档作为上下文,增强大语言模型(LLM)的输入提示(Prompt),生成更准确、可追溯的回答;向量数据库在此过程中通过提供高质量检索结果间接提升生成内容的可靠性,帮助减少模型幻觉。
向量数据库在RAG系统中的作用体现在多个方面: 其核心优势包括:
- 语义理解能力:通过向量表示捕获文本深层语义,支持超越关键词匹配的语义检索,提升召回相关性。
- 高效检索性能:针对高维向量设计索引结构(如倒排索引、哈希索引),结合量化技术压缩存储,实现大规模数据下的快速查询。
- 多模态支持与扩展性:不仅限于文本,还可处理图像、音频等多模态嵌入向量,并通过水平扩展适应数据增长。
- 成本效益与易集成性:提供API接口简化开发,降低部署复杂度,适合企业级应用。
在实际开发中,向量数据库的选择需匹配RAG场景需求。 例如,在医疗或金融领域,对实时性和准确性要求高,需优先考虑向量数据库的索引策略优化(如调整向量维度、相似度度量方式)和与embedding模型的协同调优;同时,向量数据库还需支持私有数据管理、访问控制等功能,以增强数据安全性。
向量数据库原理:HSNW
向量数据库的核心在于高效处理高维向量数据的存储与相似性检索,其中分层导航小世界(Hierarchical Navigable Small World, HNSW)算法是一种关键的索引技术,旨在平衡查询速度与精度。
HNSW算法通过分层图结构实现高效检索: 它构建一个多层有向图索引,底层图包含所有数据点并模拟小世界网络,确保高连接性;上层图则通过随机抽样减少节点数量,形成更粗粒度的导航结构。这种分层设计允许搜索过程从顶层粗略导航逐步下钻至底层精确定位,显著减少需访问的节点数。
算法的核心优势在于近似最近邻搜索: HNSW属于近似最近邻(ANN)算法范畴,在高维空间中通过牺牲部分精度换取查询效率,避免穷举计算所有向量距离。其搜索流程从顶层图开始,通过贪婪策略选择当前节点的邻居中距离查询点最近的节点进行跳转,逐层下钻直至底层,最终返回最相似的向量集合。
HNSW在实际应用中展现出高性能与可扩展性: 该算法广泛集成于向量数据库系统(如Elasticsearch的Lucene底层),支持动态数据更新和分布式部署。优化技术如标量量化进一步降低了内存开销,使其适用于大规模场景(如图像检索、推荐系统),但索引构建时需重新计算图结构可能带来额外开销。
向量数据库介绍
向量数据库是专为高效存储和检索高维向量数据而设计的系统,广泛应用于语义搜索、推荐系统和知识图谱等AI场景。以下介绍几种主流向量数据库的技术特点和适用场景。
开源向量数据库 以灵活性和可定制性见长,适合需要深度控制底层架构的项目。
- Milvus (Zilliz):支持动态数据更新和混合查询(向量与标量过滤),提供云原生版本,适用于大规模语义搜索和推荐系统,在10亿级数据下可实现高查询吞吐量。
- Weaviate:集成图向量混合查询和检索增强生成(RAG)功能,支持多模态搜索,适用于智能问答系统和知识图谱构建。
- Qdrant:基于Rust语言开发,提供HTTP API和动态过滤功能,适用于电商推荐和内容安全过滤,在1亿级数据下可实现低延迟高QPS。
- FAISS(Facebook AI):作为高性能库支持多种索引类型(如HNSW、IVF),但需自行封装为服务,缺乏分布式支持,适用于离线批量处理和学术研究。
商业云服务向量数据库 提供全托管解决方案,降低运维复杂度,适合企业级应用。
- Pinecone:全托管SaaS服务,支持实时索引更新和GPU加速,适用于低延迟实时推荐系统,单节点可支持数千QPS且延迟低于10毫秒。
- Azure Vector Search:与Azure AI服务深度集成,支持混合查询和实时更新,适用于需高合规性的金融或医疗领域,提供SLA保障。
- Amazon OpenSearch Service(含KNN插件):基于Elasticsearch扩展,支持向量与文本混合搜索,适用于日志分析和电商搜索。
- Google Vertex AI Vector Search:与Vertex AI流水线无缝集成,支持自动扩缩容,适用于Google Cloud用户构建端到端AI应用。
向量数据库安装
参考链接:https://cloud.tencent.com/developer/article/2338320
更多推荐

所有评论(0)