一文读懂:AI大模型RAG(检索增强生成)含高级方法
一文读懂:AI大模型RAG(检索增强生成)含高级方法
RAG(检索增强生成)是当前最热门的LLM应用方案之一。它通过结合检索技术和LLM提示,有效解决了大模型在知识局限性、幻觉问题和数据安全性等方面的挑战。本文将系统讲解RAG的关键高级技术,帮助读者深入理解这一重要技术。
RAG概述
RAG(Retrieval Augmented Generation)的核心理念是通过自有垂直领域数据库检索相关信息,然后将其合并到提示模板中,供大模型生成更准确的回答。这种方法在2023年成为基于LLM系统的最受欢迎架构之一,广泛应用于从基于Web的问答服务到使用私有数据的聊天应用。
RAG的基本流程包括两个主要步骤:语义搜索和生成输出。在语义搜索阶段,系统从知识库中检索与查询最相关的内容;在生成阶段,系统使用这些内容生成最终答案。
RAG实现过程
RAG通过融合多种技术来提升检索阶段的效果。例如,可以使用LLM生成多个查询,以覆盖问题的各个方面,从而提高检索的全面性和准确性。
RAG架构
完整的RAG应用流程包含两个主要阶段:数据准备阶段和应用阶段。
数据准备阶段
数据准备阶段是一个离线过程,主要包括数据提取、文本分割、向量化和数据入库等环节。
- 数据提取:包括多格式数据加载、数据过滤、压缩、格式化等。
- 文本分割:需要考虑embedding模型的Tokens限制和语义完整性,常见的分割方式有句分割和固定长度分割。
- 向量化:将文本数据转化为向量矩阵,常用的embedding模型包括ChatGPT-Embedding、ERNIE-Embedding、M3E和BGE等。
- 数据入库:将向量化后的数据构建索引并存入数据库,适用于RAG场景的数据库包括FAISS、Chromadb、ES和milvus等。
应用阶段
应用阶段主要包括数据检索和注入Prompt等环节。
- 数据检索:常见的检索方法包括相似性检索和全文检索,可以根据业务需求选择合适的检索方式。
- 注入Prompt:Prompt的设计对模型输出的准确率有重要影响,通常包括任务描述、背景知识和任务指令等部分。
原始RAG
原始RAG管道从文本文档语料库开始,通过Transformer Encoder模型将文本块嵌入向量,然后创建LLM提示,根据搜索步骤中找到的上下文回答用户查询。
高级RAG
高级RAG技术包括分块、向量化、搜索索引、重排和过滤等多个环节,其中搜索索引是关键部分,可以采用faiss、nmslib等工具实现。此外,还有分层索引、假设性问题、内容增强、融合检索等多种优化方法。
RAG融合
RAG融合的主要优点包括提供多样化的上下文、额外的控制层面和自动校正功能。但同时也存在延迟、自动纠错和成本等方面的挑战。在实际应用中,需要根据具体场景选择合适的RAG融合策略。
编码器和LLM微调
编码器和LLM的微调是优化RAG系统的重要手段。编码器影响嵌入质量,LLM负责生成答案。通过微调可以提升检索效果和答案质量。
评估
RAG系统的评估主要关注检索内容相关性、答案基础性和忠实度等指标。常用的评估框架包括Ragas和Truelens,它们提出了RAG三元组评估模式。
总结
RAG作为一种强大的AI技术,已经在多个领域得到广泛应用。通过不断优化检索和生成环节,可以进一步提升RAG系统的性能和用户体验。