RAG应用
为了使计算机能够理解和处理非结构化数据(如文本,图片,视频),通常使用嵌入模型(Embedding)将非结构化数据编码为向量 [6]。可以理解为,向量就是非结构化数据的压缩。因此,在对非结构化数据进行相似性搜索、最近邻搜索(NNS, Nearest Neighbor Search)时,可以使用向量的近似度来表征非结构化数据的语意近似度。
RAG应用组成
1、导入知识库文件,文件做向量化存储
2、用户提问,向量数据库检索,有三种检索模式:
- 全文检索:索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段
- 向量检索:通过生成查询嵌入并查询与其向量表示最相似的文本分段
- 混合检索:同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果
- 重排序模型将根据候选文档列表与用户问题语义匹配度进行重新排序,从而改进语义排序的结果
3、检索结果给LLM处理(识别用户意图,丢掉非用户问题的答案),给出回答
-
- 流程一般有以下几步
-
- 知识文档的准备、嵌入模型(embedding model)、向量数据库、查询检索和生产回答。
-
- 各步骤功能简介
步骤 | 关键点 | 功能简介 | 优化方向 |
---|---|---|---|
知识文档 | 文档加载器、文档切片 | 使用专门的文档加载器(例如PDF提取器)或模型(如OCR技术),将知识源转换为大语言模型可理解的纯文本数据 | 进行数据切块的话,一般可以考虑内容分块、递归分块 对数据块生成假设性问题 |
嵌入模型 | m3e、bge-large-zh | 将文本转换为向量形式 | |
向量数据库 | Faiss、Milvus、ES | 用于存储和检索向量数据的数据库系统 | 存储时可增加元数据,比如日期、分层索引 |
查询检索 | 语句窗口检索、父文档搜索 | 在向量数据库中搜索与该问题向量语义上相似的知识文本或历史对话记录并返回。 | 查询转换, 即生成多个相似query分别进行向量检索, 重排、过滤(召回多个文档啦) |
问答生成 | prompt、llm | 将用户提问和上一步中检索到的信息结合,构建出一个提示模版,输入到大语言模型中,获得答案 | 检索到的上下文和缓存区的聊天记录压缩一起提供给llm |
以下为RAG的具体优势:
1.外部知识的利用: RAG模型可以有效地利用外部知识库,它可以引用大量的信息,以提供更深入、准确且有价值的答案,这提高了生成文本的可靠性。
2.数据更新及时性: RAG模型具备检索库的更新机制,可以实现知识的即时更新,无需重新训练模型。说明RAG模型可以提供与最新信息相关的回答,高度适配要求及时性的应用。
3.回复具有解释性: 由于RAG模型的答案直接来自检索库,它的回复具有很强的可解释性,减少大模型的幻觉。用户可以核实答案的准确性,从信息来源中获取支持。
4.高度定制能力: RAG模型可以根据特定领域的知识库和prompt进行定制,使其快速具备该领域的能力。说明RAG模型广泛适用于的领域和应用,比如虚拟伴侣、虚拟宠物等应用。
5.安全和隐私管理: RAG模型可以通过限制知识库的权限来实现安全控制,确保敏感信息不被泄露,提高了数据安全性。
6.减少训练成本: RAG模型在数据上具有很强的可拓展性,可以将大量数据直接更新到知识库,以实现模型的知识更新。这一过程的实现不需要重新训练模型,更经济实惠。
RAG应用技术痛点
在实际应用中,RAG技术经常遇到以下几个痛点:
- 入门容易,表现不够好:
- RAG系统的基本搭建相对简单,但实际应用中效果往往不尽如人意,难以达到预期的性能水平
- 改进方向不明确!
- 在面对性能不佳的RAG系统时,缺乏明确的改进方向和方法,不知道该选择哪种技术来优化系统。
- 缺乏有效的评估体系:
- 系统建成后,通过简单测试看似效果不错,但缺乏系统化的评估手段来判断其实际性能和应用价值。
对RAG(Retrieval-Augmented Generation)的最佳实践中,通常会涉及以下关键问题和优化策略:
1. 数据如何处理的?
- 清洗和预处理:在使用数据之前,确保数据是干净和结构化的。这可能包括去除噪音、处理缺失值、标准化格式等。
- 分段和标注:将长文档分成较小的段落(chunks),并为每个段落添加相关标签或元数据,以便更好地进行检索和生成。
2. chunk-size如何设置的?
- 优化长度:chunk-size的设置需要平衡信息量和检索效率。一般来说,较短的chunk可以提高检索的准确性,但可能会丢失上下文信息;较长的chunk可以保留更多的上下文,但可能会增加冗余信息。常见的chunk大小在100到300个词之间,根据具体应用场景进行调整。
3. Embedding模型使用的什么?
- 选择合适的模型:常用的embedding模型包括BERT、RoBERTa、Sentence-BERT等。选择时需要考虑模型的性能、训练数据和计算资源。
4. Prompt如何设计?
- Prompt设计:设计有效的prompt以引导生成模型产生所需的回答。Prompt应尽量清晰、具体,避免模糊或开放性太强。
5. 检索的topN如何设置?
- 检索的topN设置:topN设置决定了在生成过程中使用多少个最相关的文档段落。常见的topN值在3到10之间,根据检索效果和生成质量进行调整。
6. LLM模型选择的什么?
- 选择合适的生成模型:常用的大语言模型(LLM)包括GPT-3.5、GPT-4、4o等。选择时需要考虑模型的生成能力、推理速度和计算资源。
- 混合使用模型:在一些场景下,可以同时使用多个模型来提高生成效果,例如结合检索模型和生成模型的优势。
7. RAG检索生成效果优化策略
-
选择更大的模型:如果现有模型的生成效果不理想,可以尝试使用更大的预训练模型,这通常会带来更好的生成质量和上下文理解能力。
-
使用不同的embedding模型:根据实际应用场景和数据特点,尝试使用不同的embedding模型,以找到最适合的模型来提高检索精度。
-
调整chunk-size:重新评估和调整chunk的大小,以找到信息量和检索效率之间的最佳平衡点。
通过不断地实验和优化,可以找到最适合特定应用场景的RAG配置,从而实现更好的检索和生成效果。
解决这些痛点的关键在于建立一个完善的RAG评估系统,如果您也遇到了上述问题,说明您没有建立起一个有效的RAG评估系统。评估系统的建立至关重要,因为它能够帮助我们系统性地分析和优化RAG的各个环节,确保其在实际应用中的可靠性和有效性,以下是构建RAG评估系统的一些建议:
- 定义评估指标:
明确评价标准,例如准确性、召回率、生成质量、响应时间等。 - 测试数据集的准备
准备包含多样化问题和答案的测试数据集,涵盖不同场景和难度, - 自动化评估工具:
使用自动化工具对RAG系统进行持续评估,生成详细报告,帮助发现系统弱点和改进方向。 - 用户反馈和A/B测试:
收集真实用户的反馈,结合A/B测试进行实验,验证不同优化方案的效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具