在大语言模型(LLM)应用中,连接外部数据是一个核心需求。尽管LLM具备强大的语言理解和生成能力,但它们本身无法访问占据全球约95%的“私有”数据。为了解决这一限制,检索增强生成(Retrieval-Augmented Generation,RAG)技术应运而生。RAG通过将外部知识库中的相关信息动态检索并输入给LLM,实现了模型与实时或私有数据的结合,从而显著提升了模型在问答、分析和决策等任务中的准确性与实用性。
1. RAG的概述
RAG(Retrieval-Augmented Generation)是一种结合检索与生成的大语言模型增强机制,它通过三个阶段实现外部知识的有效利用:首先对问题及相关文档进行索引;然后在文档中检索出与问题相关的内容;最后将检索结果作为上下文输入大语言模型,生成更加准确、可靠的回答,从而突破模型知识更新慢、无法访问私有数据等限制。
1.1 内容索引
内容索引:首先,系统将用户问题和原始文档切分后的片段分别转换为向量表示(Embedding),这些向量被存入一个向量数据库(Vectorstore)中。随后,系统利用如HNSW(Hierarchical Navigable Small World)等高效的近似最近邻算法,在向量空间中检索与问题向量相近的文档片段,从而获取与问题高度相关的内容,为后续的大语言模型生成提供精准的上下文支持。
1.2 内容检索
内容检索:内容检索是 RAG 工作流程中的关键步骤。在用户提出问题后,系统会将该问题转化为向量表示,并与预先构建的文档向量索引进行相似度匹配。该过程通常采用高效的向量搜索技术,如 Faiss、Weaviate 或 Milvus,快速定位与问题语义最接近的若干文档片段。这些片段即构成了问题的“候选知识上下文”,为后续的语言模型生成阶段提供了定制化、动态更新的知识基础。
1.3 内容查询
内容查询:在完成内容检索后,系统会将最相关的文档片段作为额外上下文,与用户问题一同拼接成输入,传递给大语言模型(如GPT、BERT衍生模型等)。在这一阶段,LLM结合原始问题与上下文信息,进行自然语言理解与生成,输出更具针对性、事实支持更充分的回答。通过内容查询,RAG 实现了“生成前先检索”的闭环机制,不仅增强了模型对私有知识和最新信息的调用能力,还大大提升了输出内容的可解释性和准确率。
2. 优化原始提问(Query Translation)
优化原始提问(Query Translation)旨在提升检索效果与答案质量。常见策略包括:向上抽象生成“反向提问”(Step-back prompting),帮助模型把握问题本质;向下拆解为子问题(Least-to-Most),分步解决复杂任务;以及横向重写问题(如RAG-Fusion、Multi-Query),生成多个等价表达以覆盖更多检索视角。这些方法共同增强了模型对问题的理解与信息获取能力。
2.1 Multi-Query 介绍
Multi-Query 是一种通过生成多个语义等价但表达方式不同的问题版本,来增强检索效果的方法。相比单一查询,它能从多个角度覆盖知识库中的潜在相关内容,提升信息召回率。这些改写后的查询将共同用于向量检索,从而为大语言模型提供更全面、丰富的上下文支持,有助于生成更准确、更具依据的回答。
2.2 RAG-Fusion 介绍
RAG-Fusion 会对原始问题生成多个变体查询,分别检索对应文档片段后进行聚合,最终统一输入到生成模型中。该方法显著提升了系统在多样化问法下的鲁棒性与上下文覆盖能力,适用于复杂查询或信息密度较高的应用场景。
2.3 Decomposition 介绍
Decomposition 是检索增强生成(RAG)中的一种关键策略,其目标是将一个复杂或开放性的问题拆解为多个更具体、更易检索的小问题(子查询)。通过生成与原始问题相关的多个子问题,Decomposition 能够提升检索过程的覆盖面和精度,从而为生成模型提供更全面的上下文支持。在实践中,它通常以模板方式引导大语言模型生成三条不同但相关的检索查询,从多个角度辅助理解和回答用户的初始问题,适用于信息密集型和多方面问题的场景。
2.4 Step Back 介绍
Step Back 是一种反向抽象策略,旨在提升检索增强生成(RAG)系统对复杂语义的把握能力。与 Decomposition 强调“拆分”不同,Step Back 方法通过对原始问题进行抽象概括,生成一个更通用、更高层次的查询,以捕捉问题背后的核心主题或广义语境。这种策略有助于引导检索系统获取更具代表性或覆盖范围更广的文档,从而为生成模型提供全局视角,特别适用于原始问题语义模糊或背景知识缺失的场景。
3. 路由和高级查询
3.1 路由
路由机制在检索增强生成(RAG)系统中扮演着关键角色,负责在多种数据源或提示策略之间进行智能选择,从而提升信息召回的相关性与生成质量。无论是逻辑路由基于问题内容将查询导向最相关的数据库,还是语义路由通过嵌入匹配选出最优提示模板,它们的核心目标都是实现问题与资源之间的高效对接。通过引入路由机制,RAG 系统不仅具备更强的上下文理解能力,还能在多源异构环境下灵活应对复杂查询需求,大幅增强模型的可扩展性与通用性。
3.1.1 逻辑路由
逻辑路由:用于根据用户问题的内容,将其路由至最相关的数据源以提升检索效果。上述图示展示了逻辑路由的工作流程:首先,大语言模型(LLM)接收用户输入的问题,并基于结构化输出对问题进行分类;随后,它在多个可用数据源(如图数据库、向量数据库等)之间进行判断,选出最相关的数据库(如 Vectorstore)进行检索。这种方式能够实现针对性更强的内容召回,特别适用于多源异构数据环境下的高效问答系统。
3.1.2 语义路由
语义路由:用于自动为用户问题匹配最合适的提示模板(Prompt)。如图所示,系统首先将用户提出的问题进行嵌入(Embed),并与预定义的一组提示模板(如 Prompt #1 和 Prompt #2)进行语义相似度对比。随后,大语言模型根据匹配结果选出最相关的提示,利用该模板引导模型生成最终答案。语义路由提升了模型对不同任务或语境的适应能力,尤其适用于多任务、多场景的生成系统中。
3.2 高级查询
高级查询扩展了大语言模型对结构化数据的访问能力。Text-to-SQL 可将自然语言转为 SQL,实现对关系型数据库的查询;Text-to-Cypher 支持查询图数据库,适用于复杂关系场景;Self-query 则将自然语言转为元数据过滤条件,提升向量检索精度。这些技术增强了 RAG 系统在多种数据形态下的检索与问答能力。
3.2.1 Text-to-SQL 介绍(自然语言查关系型数据库)
Text-to-SQL: 是一种将自然语言问题自动转换为结构化 SQL 查询的技术,能够让用户以口语化方式访问关系型数据库中的数据。在 RAG 系统中,Text-to-SQL 能有效桥接语言模型与表格数据之间的鸿沟,使模型能够在无需手写查询语句的前提下,准确提取数据库中与问题相关的信息。这种能力特别适用于面向业务数据分析、报表生成和自动问答等场景,显著提升了数据查询的效率与可用性。
3.2.2 Text-to-Cypher 介绍(自然语言查图数据库)
Text-to-Cypher 是将自然语言转换为图数据库查询语言 Cypher 的技术,适用于处理实体间关联密集的复杂问题。在 RAG 系统中,Text-to-Cypher 可帮助大语言模型理解用户意图,并自动生成对应的图结构查询,访问如 Neo4j 等图数据库中的关系数据。这种方式特别适合知识图谱、社交网络和推荐系统等场景,有助于挖掘深层次的语义关系,提高查询的精度与解释性。
3.2.3 Self-query 介绍(自然语言转换为metadata)
Self-query 是一种将自然语言问题自动转换为元数据过滤条件的技术,主要应用于向量数据库的精确检索。在 RAG 系统中,Self-query 通过语言模型解析用户意图,从中提取出可结构化的属性值(如文档类型、时间范围、来源等),并将其转化为过滤器,配合向量相似度搜索共同作用。这一机制提升了检索的可控性与准确度,尤其适用于需要多维条件筛选的场景,如企业文档管理、法律文本搜索和医疗数据分析等。
4. 丰富索引结构
丰富索引结构通过多种优化策略提升 RAG 系统的检索效果与语义理解能力。Chunk Optimization 优化文本切片以保留语义完整性,Multi-representation Indexing 引入多视角嵌入增强语义覆盖,Specialized Embeddings 针对特定领域定制表示,Hierarchical Indexing 则以层级结构组织内容,提升长文档或复杂数据的检索效率。这些方法共同增强了系统对多样化信息的处理能力。
4.1 Chunk Optimization 介绍(文本切片)
Chunk Optimization: 是指通过优化文本切片方式,将原始文档划分为更符合语义逻辑的片段,以提升检索准确性与生成质量。传统固定长度切片容易打断语义,导致信息丢失或上下文不连贯。Chunk Optimization 通常结合语法、语义或段落结构进行智能分段,确保每个片段具有清晰的主题和完整的上下文,进而为向量索引和生成模型提供更高质量的输入,适用于新闻、报告、技术文档等语义密集型内容。
4.2 Multi-representation indexing 介绍
Multi-representation Indexing: 是指为同一文本片段构建多个不同视角的向量表示,以提升语义覆盖范围和检索鲁棒性。这种方法通常结合不同的嵌入模型、任务视角或语言风格(如摘要式表示、关键句提取、上下文重写等),将多种语义层级的信息统一纳入索引中。在 RAG 系统中,Multi-representation Indexing 能显著提高在复杂查询或表述变化下的匹配准确率,适用于对语义理解要求较高的多样化问答任务。
4.3 Specialized Embeddings 介绍(特定领域)
Specialized Embeddings: 是指针对特定领域或专业语料训练得到的专用向量表示,用于提升模型在专业场景下的理解能力与检索效果。相比通用嵌入,Specialized Embeddings 更能捕捉领域术语、表达习惯和知识结构,常应用于法律、医疗、金融、科技等高专业性场景。在 RAG 系统中引入此类嵌入,有助于实现更精准的语义匹配和上下文理解,显著提升在垂直领域中的问答准确率与生成质量。
4.4 Hierarchical Indexing 介绍
Hierarchical Indexing: 是一种分层组织文本内容的索引方式,旨在提升对长文档或结构化数据的检索效率与上下文理解能力。该方法通过构建从章节、段落到句子的多级索引结构,使系统能够根据查询粒度灵活定位信息,同时保留上下文层次关系。在 RAG 系统中,Hierarchical Indexing 有助于快速定位核心内容并维持语义连贯性,特别适用于技术文档、法律文本、研究报告等结构清晰、内容复杂的场景。
5. Retrieval
在检索阶段的重排序主要针对从向量数据库中返回的多个候选片段,系统会根据与用户查询的相关性对这些片段进行初步排序。常见的方法包括基于余弦相似度、BM25 等传统打分机制,或结合轻量级神经网络进行语义排序。此阶段的目标是从大量候选中筛选出语义上最贴近用户意图的内容,为后续生成阶段提供更优质的上下文输入。有效的检索重排序有助于提高系统整体的召回精度与上下文覆盖度。
6. Generation
在生成阶段的重排序主要关注如何从经过检索和初步筛选的多个上下文片段中,进一步优化其组织顺序和输入结构,以最大化对生成结果的支持。常用方法包括基于语言模型的评分机制(如对每个片段与问题的匹配度打分)、上下文窗口优先级排列、或融合多片段生成候选答案并再评分选优。该阶段重排序的核心目标是确保生成模型接收到的信息既相关又连贯,从而提升最终回答的准确性、逻辑性和表达质量。