微信扫码
与创始人交个朋友
我要投稿
什么是RAG?
Retrieval Augmented Generation (RAG)是通过整合外部知识源增强大型语言模型(LLM)的过程。这使得LLM能够生成更准确和上下文感知的答案,同时减少虚构内容。
在回答问题或生成文本时,首先从现有的知识库或大量文档中检索相关信息。然后使用LLM生成答案,通过整合这些检索到的信息来提升响应的质量,而不是完全依赖LLM自行生成答案。
典型的RAG工作流程如上图所示。其中包含了RAG的三个主要步骤:
索引化:索引化过程是一个重要的初始步骤,它从清理和提取原始数据开始,将各种文件格式如PDF、HTML和Word转换为标准化的纯文本。为了适应语言模型的上下文约束,这些文本被划分为更小和更易管理的块,这个过程称为分块。然后,利用嵌入模型将这些块转换为向量表示。最后,创建一个索引来存储这些文本块及其向量嵌入作为键值对,实现高效且可扩展的搜索能力。
检索:用户查询用于从外部知识源检索相关上下文。为了实现这一目标,用户查询首先通过编码模型进行处理,生成语义相关的嵌入。然后,在向量数据库上进行相似性搜索,以检索最接近的相关数据对象。
生成:用户查询和从检索步骤中检索到的额外上下文填入提示模板中。将来自检索步骤的增强提示输入到LLM中,从而得到LLM的回复。
最终大模型生成的效果取决于各个环节,每个环节都有自己的挑战,针对性优化和解决问题,有效提升AI应答效果。
本文讲RAG系统中检索模块的关键技术之一。
一、文本向量化
文本向量化是将文本数据转换为数值向量,便于计算机进行信息检索。
针对上图,可知Documents和Query都要进行向量化,因此向量的质量直接影响到检索效果。
二、挑战与问题
我们在大量应用落地的过程中,发现和解决了非常多RAG系统中的检索问题,这些问题会影响系统的性能和最终生成的答案质量。虽然部分问题可以通过数据清洗或系统设计来解决,但以下三个问题仍非常棘手,难以根治:
1. 语义鸿沟
用户提问的方式与知识中的表达方式存在差异,导致检索系统无法精准匹配到相关知识。主要表现有:
①用户提问口语化而知识采用书面语或专业术语;如用户提问(口语化):"校园卡丢了怎么办",知识库中的表达(专业术语):"校园卡补办需要携带身份证到指定地点办理"
②用户可能用不同词汇、短语描述同一个概念,而知识库使用特定术语;
比如校园用户会用“校卡”、“饭卡”,“学生卡”来指代知识库中的“校园卡”。
③用户问题涉及多个知识点,但分散在知识库中的不同文档中。
2. 语言多样性和复杂性
用户的问题可能涉及语言的多样性和复杂性,如同义词(国家奖学金,国奖)、多义词(包袱,水分)、语法结构(如陈述句,倒装句)等,使得检索难以准确匹配。
3. 长尾问题
指的是某些问题或知识点出现频率极低,但仍需要被准确检索到。这种情况在垂直场景知识库中尤为常见。比如“双一流”,“三位一体”等,这些词汇只有在特定场景中才会用到,但是一旦提到就要求能检索到。
三、解决方案
针对上述挑战,星火科技进行了深入研究,并取得了突破性进展,应用到实际场景中。星火科技在向量方面,融合了稠密向量、低维向量和稀疏向量三种向量表示,分别从不同角度优化信息检索和生成的效果。
1. 稠密向量
定义:稠密向量是通过深度学习模型训练得到的,能够捕捉文本的深层语义信息。
局限性: 现有的向量模型一般都是在通用语料库上训练得到,会有以下局限性:
①缺少区分度:两个语义相同的句子由稠密向量计算相似度可能是0.95,而语义相似但不相同的句子也可能大于0.9。这就给检索结果的筛选带来了很大困扰。
②缺少相关性:现有向量模型的训练目的是找句子相似性,而现实中需求却是相关性。如用户提到“考试挂科了怎么办”时,真正希望AI给出的建议是“补考的申请方法”,而不是找到相似的“考试没有通过怎么办”。
星火实践:在我们的实践中,提升向量区分度和检索的精准度是同步进行的。
①利用多年积累的行业数据进行场景化训练,提升向量区分度。
②通过大量语料分析,理解用户检索意图,对数据进行再加工,提升检索精准度。
③选定区分度更高、更符合用户需求的向量模型,为后续的二次检索和兜底处理提供依据。
2. 稀疏向量
定义:稀疏向量是高维向量(30K+),其中大多数元素都是零,只有少数元素为非零。通常用于高维数据的处理,常用的算法有TF-IDF/BM25等。
局限性:
①缺乏泛化能力,稀疏嵌入方法主要基于词频统计,缺乏对词语之间语义关系的理解。这样一来,语义相近的词(如“留学”和“出国”)在稀疏嵌入中会有不同的表示,限制了模型的泛化能力。
②缺乏上下文能力,稀疏嵌入方法无法捕捉词语在不同上下文中的不同含义。比如,"苹果" 在不同的上下文中可能指代“苹果手机”或“吃的苹果”,但稀疏嵌入无法区分这些不同的指代。
星火实践:和稠密向量不同的是,稀疏向量不依赖模型,必须通过搜索语料,从0开始建设,上述问题体现了语料的大小和质量对稀疏向量至关重要,因此星火的主要工作在语料库建设上。
①平行语料库建设,在不同场景下建立场景同义词库,提升泛化能力。
②垂直语料库建设,通过NLP工具,对文档做POS/NER处理,建立针对词性和实体的权重分布,加强对上下文的理解。
③结合①和②建立分场景、分词性的稀疏向量,在应用上,利用稀疏向量进行兜底处理,有效解决长尾问题。
3. 低维向量
定义:低维向量通过降维技术(如PCA/t-SNE/UMAP等)从高维向量中提取数据的主要特征,将高维稠密向量(如768维)降低到低维(如3维),降低计算复杂度,方便可视化,剔除离群点。
星火实践:在向量训练过程中,总会遇到一些数据存在于模糊区间中,就算人工也无法识别应该所属的分类。
①利用低维向量进行可视化,快速识别和修正错误数据,持续提升语料库质量,用于训练向量模型。
②对高维分布集中的数据进行降维后,保留关键特征,进一步增加区分度,进行二次检索。
四、实践成果
经过不断地实践,向量检索的效果得到有效提升。f1值为通过精确率及召回率共同计算的结果,f1值越高,整体效果更优,可以看到训练后提升了12个百分点。
小 结
融合稠密向量、稀疏向量和低维向量三种向量表示,星火科技构建的RAG系统通过高维稠密向量捕捉复杂语义,通过低维向量进行二次筛选,通过稀疏向量处理长尾问题,从不同角度优化信息检索和生成的效果,实现了全面且高效的检索能力。在这个过程中,不断积累和优化的场景语料是我们的向量质量持续提升的关键。这也是我们行业竞争优势的来源。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-23
FastRAG半结构化RAG实现思路及OpenAI O1-long COT蒸馏路线思考
2024-11-23
检索增强生成(RAG):解密AI如何融合记忆与搜索
2024-11-23
如何提高RAG系统准确率?12大常见痛点及巧妙解!
2024-11-23
RAG 2.0性能提升:优化索引与召回机制的策略与实践
2024-11-22
RAG技术在实际应用中的挑战与解决方案
2024-11-22
从普通RAG到RAPTOR,10个最新的RAG框架
2024-11-22
如何使用 RAG 提高 LLM 成绩
2024-11-21
提升RAG性能的全攻略:优化检索增强生成系统的策略大揭秘 | 深度好文
2024-07-18
2024-05-05
2024-07-09
2024-05-19
2024-07-09
2024-06-20
2024-07-07
2024-07-07
2024-07-08
2024-07-09
2024-11-06
2024-11-06
2024-11-05
2024-11-04
2024-10-27
2024-10-25
2024-10-21
2024-10-21