《基于 RAG 构建生成式 AI 应用最佳实践与 避坑指南-李元博.pdf》由会员分享,可在线阅读,更多相关《基于 RAG 构建生成式 AI 应用最佳实践与 避坑指南-李元博.pdf(40页珍藏版)》请在三个皮匠报告上搜索。
1、基于RAG构建生成式AI应用最佳实践与“避坑指南”亚马逊云科技人工智能技术专家/李元博个人简介互联网从事算法工作多年,目前在亚马逊云科技负责AIML/GenAI/Analytic跨领域的端到端产品方案最佳实践研究和应用落地李元博亚马逊云科技人工智能技术专家目录RAG场景及技术特点RAG实践经验总结RAG场景中的亚马逊云产品亮点RAG场景及技术特点RAG概念流程图企业知识文档EmbeddingLLM文档片段1文档片段2文档片段3FAQ 1FAQ 2Embedding1Embedding2Embedding3Embedding4EmbeddingNAmazon Cleanrooms最多支持多少个参
2、与方?请根据以下内容进行回答,如果无法回答不要编造,回答不知道即可。上下文:Knowledge问题:Amazon Cleanrooms最多支持多少个参与方?答案:私有知识库知识构造知识问答答案:最多5个参与方相似内容召回构建Prompt知识文档向量注入RAG适用典型的木桶理论场景知识质量知识质量检索效果检索效果LLM理解能力理解能力走通流程走通流程落地生产落地生产难度系数难度系数OpenAI 关于RAG的分享RAG场景分类维度维度分类分类描述描述Tips按使用场按使用场景景Chatbot一问一答聊天交互召回topK记录给到LLM归纳总结,返回答案对于置信度高的召回,可以直接返回top one而
3、不走LLM归纳总结(避免LLM幻觉或自由发挥)。比如某车企的Chatbot通过此方式获得95%的准确率误答容忍度低智能检索知识检索形式交互除了返回LLM总结的答案,可选择展示top K的召回记录以及知识源语料因为返回多条记录,对知识相关性容忍度相对较高可使用引导式检索,逐步获取精准答案按知识类按知识类型型FAQ对按问答对的方式构建知识知识信息量完整,知识质量高按FAQ对进行切片,保证语义完整性现有客服场景通常都有语料积累,知识构建相对高效上线相对容易PDF/word等各类文档原始文档格式多样,比如各类wiki,产品说明书等,含有表格、图文等信息知识质量可能参差不齐,密度低通常按句子,段落等进行
4、切片,较FAQ对切片方式复杂,需要结合实际文档来保证语义完整性表格需要额外处理,暂时不建议对图片处理按使用对按使用对象象服务内部用户比如企业内部知识库,IT/HR 知识库内部人员和并发等因素可控,上线相对容易服务外部用户比如各行业对外的智能客服,游戏的NPC对并发/吞吐等性能指标有较高要求,另外需要考虑内容风控比如屏蔽涉黄/涉恐/涉暴话题RAG实践经验总结技术层面经验总结知识构建 知识质量不好咋办?格式复杂还有表格咋办?量大注入慢咋办?核心工作 知识召回效果差咋办?LLM幻觉咋办?怎么判断超出知识库范围?上线必备 如何判断LLM能支持多少QPS?中国区GPU选型问题?经验洞察 大模型选哪个?大
5、模型微调有用吗?Streaming response咋支持?Badcase 怎么排查?Bedrock怎么集成?知识构建知识构建 知识质量不好咋办?知识质量不好咋办?利用商业LLM做知识增强(原始FAQ/文档都适用),建议结合人审问:什么是 Amazon EMR?答:Amazon EMR 是行业领先的云大数据平台,适用于使用多种开源框架进行数据处理、交互分析和机器学习,例如 Apache Spark、Apache Hive、Presto。借助 EMR,您可以用不到传统本地解决方案一半的成本运行 PB 级分析,并且其速度比标准 Apache Spark 快 1.7 倍以上。问:Amazon EMR
6、适用于哪些开源框架进行数据处理、交互分析和机器学习?,答:Amazon EMR适用于使用多种开源框架进行数据处理、交互分析和机器学习,例如 Apache Spark、Apache Hive、Presto。问:通过使用Amazon EMR,可以以什么样的成本运行PB级分析?,答:通过使用Amazon EMR,可以用不到传统本地解决方案一半的成本运行PB级分析。问:Amazon EMR相比标准Apache Spark有什么优势?,答:Amazon EMR相比标准Apache Spark的速度更快,快速度比标准Apache Spark快1.7倍以上。参考实现:Enhance_FAQ.py Enhan
7、ce_Doc.py 参考效果:核心目的:知识点更加具体。生成多角度提问,利于召回。实践检验某制造业的相关项目投标中作为一个独立价值展示,助力项目投标成功。缓解了招标方对于知识质量方面的担忧 解决手段:知识构建知识构建 格式复杂还有表格咋办?格式复杂还有表格咋办?解决方案o利用Langchain开源代码实现PDF转HTML,可保留字号和像素位置信息,按字号进行合并,提高分段质量o利用Textract提取表格,实现Textract输出到Json信息的转换o利用前两步结果进行位置映射,克服Textract不支持中文的问题o其他手段(NSP模型&Layout分析)参考效果:使用说明:oPDF SPLI
8、TER READMEoWorkshop(第三步实验)实践检验:解决海外一个金融POC中,针对基金相关PDF的表格信息提问的问题结合开源代码+Amazon AIML SAAS服务核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?有效手段 多路召回:向量召回+倒排召回 BM25打分调优 更优的向量模型选型 多种召回范式:对称召回(Query-Question)+非对称召回(Query-Document)微调向量模型 引入Rerank模型 添加IUR步骤(Incomplete utterance rewrite)技术总结1.基于大语言模型知识问答应用落地实践 知识召回调优(上)2.基于大语言
9、模型知识问答应用落地实践 知识召回调优(下)面临问题:o正确的知识没召回,导致回答没有引用到知识o召回了不正确的知识导致LLM产生了误解核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?多路召回:向量召回+倒排召回 面临问题:o向量模型不理解垂直领域专词o向量模型有时出现语义相似但主题不相似情况o可解释性弱,不易通过补丁解决bad caseo倒排召回,缺乏语义信息,仅靠关键词匹配 工程实现:o重载Langchain Retriaver接口,融合多路召回结果 优势样例:用户的原始问题中“城市外观粉色城市外观粉色”的信息,在向量召回的结果中并没有(前面2条 score 1)的知识中,含有相
10、关信息。核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?BM25打分调优 面临问题:o用户的垂直数据中可能某些专词与停用词词频差不多导致IDF失真,引起得分计算有误o有些特定黑话,数据不足时语义向量也无法解决 技术输出1.blog 基于大语言模型知识问答应用落地实践 知识召回调优(上)有效手段:o构建停用词表,使得停用词均不参与BM25得分o构建同义词表,定向解决黑话问题 视频Demo如何调整BM25倒排优化知识召回效果核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?更好的向量模型选型 面临问题:o公开数据集上的表现,在垂直领域没有特别大的参考性o在自己数据场景中,通过少量
11、case手工测试无法获取全面信息,难以客观比较 技术输出1.代码实现 bge_zh_research.ipynb2.Blog 基于大语言模型知识问答应用落地实践 知识召回调优(下)价值提供:o给出标准化的评估方式和可视化方法 基本结论:o优选bge-large-zh-v1.5o优选bge-large-en-v1.5sbert-multilingualbge-v1.5Query-Questionsbert-multilingualbge-v1.5Query-Document核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?多种召回范式:对称召回(Query-Question)+非对称召回
12、(Query-Document)面临问题:o两种形式各有弊端对于垂直领域做QD召回需要向量模型具备很强的理解能力,需要用这个领域数据的训练过用户query中的一些信息只出现在知识的Document/Answer中,通过Query-Question匹配难度大 例子:用户的发问角度,或者query-Question的语义相似性不一定高 视频Demo知识问答中的对称召回+非对称召回策略核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?向量模型微调 面临问题:o场景数据过于垂直,通用的模型表现不佳 技术输出1.代码实现 bge_zh_research.ipynb,包含训练数据构造,训练部署2.
13、blog 基于大语言模型知识问答应用落地实践 知识召回调优(下)价值解读:o在训练集上效果非常好,意味着后续可以通过持续收集用户反馈,并纳入到训练集以更新模型,使得这个效果不断扩大覆盖范围。o测试集上效果没有下降,反而有小幅提升,意味着训练没有破坏模型原有语义能力,对于未被训练集覆盖到的场景,模型仍能以优于原模型的性能进行服务原始微调后训练集微调后测试集核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?引入Rerank模型 面临问题:o向量召回与倒排召回的评分体系不一致,只能随便各取TopK,缺乏依据 技术输出1.代码实现 bge_zh_research.ipynb,包含难样本挖掘,训
14、练部署等2.blog 基于大语言模型知识问答应用落地实践 知识召回调优(下)价值解读:o解决两路合并各取多少的问题。o进一步提高知识召回质量,作为一个独立插拔模块解决向量模型微调解决不了的问题无Rerank的正例排名有Rerank的正例排名核心工作核心工作 知识召回效果差咋办?知识召回效果差咋办?添加IUR步骤(Incomplete utterance rewrite)面临问题:o在多轮对话情形下,用户的当前输入会存在一些隐含的指代关系和信息省略。缺乏上下文信息的语义缺失严重无法有效召回 技术输出1.参考代码 query_rewrite.py2.IUR 可用模型及部署方法 https:/hug
15、gingface.co/csdc-atl/dialogue-rewriter 解决思路:o利用LLM进行当前query的重写,对上下文隐含信息重新纳入到新生成的query中。重写效果好,但多调用一次LLM,会加重全流程latency问题o部署一个独立的IUR模型。重写效果没有前者好,但收集到数据后,可以基于采集数据进行微调,更加适应特定场景。例子:User:有戴森的吹风机吗?”Bot:没有哦亲亲”User:戴森都没有”Bot:不好意思,看看其他品牌呢”那有松下的吗”有松下品牌的吹风机吗?根据多级召回阈值采取灵活降级策略并结合意图识别 面临问题:o由于LLM幻觉编造一些内容可能误导用户,在某些情
16、景下造成的负面影响非常大(跟钱,账单相关的)o通过Prompt提示LLM,要它依据知识不要胡说的方法是不靠谱o用户可能还会问一些不在服务范围的话题,滥用服务引起GPU浪费。有效手段:o通过收集反馈数据,微调向量模型叠加微调Rerank模型,拉开相关召回和非相关召回的得分的值域分布。得分分为多级采用不同策略o最置信的走LLMo次置信的提示LLM如果不相关进行拒答o不置信的仅返回召回TopK或直接拒答o意图识别进行场景分流,敏感场景避免LLM介入直接走预制答案。意图识别避免敏感场景幻觉的示意图拉开值域分布核心工作核心工作 LLM幻觉咋办?幻觉咋办?怎么判断超出知识库范围?怎么判断超出知识库范围?核
17、心工作核心工作 意图识别模块意图识别模块 实践检验采用bge_large_en向量模型+Bedrock Claude大模型结合这个技术方案。在一个IOT领域的的意图识别场景的POC中,把之前基于OpenAI的准确率从80%+提升到90%+实现方式 优势特点o简单易用,不太需要太多算法能力o随着积累example越多越准,越不需要LLM参与,性能越好o生活场景的用户输入比较易用,非生活场景可能需要向量微调 技术输出1.使用说明 README.md2.参考代码 intention.py 视频Demo知识问答中的意图识别方案核心工作核心工作 如何找出那个阈值?如何找出那个阈值?实现步骤o收集所有的用
18、户正负反馈,找出应该拒答的query集合o计算这些query和知识库内所有知识的相似分,统计其分布,比如可参考下图设定多级阈值(红色为拒答query的相似分分布)o可见区分度不足,如果上图是Rerank分数则微调Rerank模型,如果是向量模型分则微调向量模型 技术输出1.参考代码 HowToFindThreshold.ipynb2.Blog 基于大语言模型知识问答应用落地实践 知识召回调优(下)视频Demo知识问答中拒答策略及实现方式经验洞察经验洞察 BadCase 怎么排查?怎么排查?参考实现:workshop构造的构造的Prompt识别识别的意图的意图用户的用户的query各路召回的知识
19、各路召回的知识&打分打分LLM 版本版本全流程日志输出并自动回流+AOS做日志检索+前端信息显示 面临问题:oRAG项目不是一蹴而就的,需要长期的优化调优o链路中多阶段的中间结果需要独立调优 前端信息显示:o主要用于快速了解召回质量,提升排查速度 Amazon OpenSearch Dashboard Discover 日志分析o查询完整日志,获得更全面信息,包括LLM版本,LLM输入,用户输入,识别意图,以及各路完整召回的内容以及打分经验洞察经验洞察 BadCase 怎么排查?怎么排查?通过用户在线反馈,对知识库进行修正,补充 提供用户反馈搜集接口,对反馈问题进行排查。用户纠正过的答案可以作
20、为新的FAQ知识,补充进知识库RAG场景中的亚马逊云产品亮点建议的整体技术方案LLM结合私有知识库,保证知识内容的准确性和时效性方案中的组件可灵活插拔,可根据业务需求可选择不同的大语言和embedding模型,例如Bedrock采用全托管服务或serverless,有效降低用户管理和运维成本基于CDK快速部署*PoC阶段使用SageMaker,实际生产客户基于成本考量,将SageMaker替换为在EC2上 host LLM和Embedding模型Front-End Web&MobileAPI GatewayAWS Lambda-1VerticalKnowledgeS3 bucketAmazon
21、 GlueAmazon OpenSearch ServiceVectorIndexDocIndexEndpoint-1Embedding ModelEndpoint-2LLM Model”Online Question”Answer”AWS Lambda-2AdminUsersDynamoDBAmazon KinesisData Firehose知识构造知识问答SageMakerBedrockBedrock 在在RAG上的优势上的优势 Claude-V2 更强的语义理解和指令执行能力(长窗口,拒答,Agent,富文本)Claude-V2.1 支持200k token 470页 能够覆盖大部分的
22、企业内完整文档,绝大部份(99%+)的文章章节都能被覆盖 召回阶段,可以支持文档粒度的输入,比chunk的召回更加简单 数据处理阶段,可以把难以切分的上下文依赖严重的文章整体作为Claude-V2.1输入,让大模型进行知识整理和增强 经过Prompt优化后,在200k的长窗口中可以高准确率的内容定位,具体参考报告claude-2-1-promptingBedrock 在在RAG上的优势上的优势 Claude-V2 更强的语义理解和指令执行能力(长窗口,拒答,Agent,富文本)Bedrock 在在RAG上的优势上的优势 Claude-V2更强的语义理解和指令执行能力(长窗口,拒答,Agent,
23、富文本)Bedrock 在在RAG上的优势上的优势 Claude更强的语义理解和指令执行能力(长窗口,拒答,Agent,富文本)Claude Instant的响应速度(大小模型结合,实现能力,价格,延迟之间的平衡)Bedrock 在在RAG上的优势上的优势With Claude-V2应对复杂的上下文输入和指令举例:RAG问答With Claude-Instant-V1应对简单的/容易定义的任务举例:1.Few-shot 意图分类2.IUR 任务-Query重写LatencyP50P75P90P99Input/1koutput/1kClaude-V22.65s4.68s7.99s14.40s0.
24、01102$0.03268$Claude-Instant1.34s1.54s1.95s2.02s0.00163$0.00551$IUR 任务User:”MSK能和哪些服务集成?”Bot:“与IAM和.”“那EMR呢”EMR能和哪些服务集成?意图识别Prompt:参考下列Example,回答下列选择题:Query:what is Free slots in baywatch?,这个问题的提问意图是啥?可选项QA,PriceAnswer:知识问答Query:Baywatch里Free slots是什么意思?,这个问题的提问意图是啥?可选项QA,PriceAnswer:Cohere Embeddin
25、g(100+Multilingual能力)Bedrock 在在RAG上的优势上的优势效果优秀英文上超过bge-en-large-v.15METB Leaderboard 排名第二多语言能力均衡具备跨语言对齐效果,可以通过中文召回类似语义的英文 Bedrock内置的 knowledge base&Agent功能 Bedrock 在在RAG上的优势上的优势优势能力支持多种向量数据库:1.OpenSearch Serverless2.Pinecone3.Redis Enterprise Cloud4.Document DB(coming soon)5.PostgreSQL(coming soon)自
26、动的数据源检测和文件预处理简单方便,持续优化可以提供来源归因有效缓解幻觉担忧KnowledgeKnowledge BaseBase Bedrock内置的 knowledge base&Agent功能 Bedrock 在在RAG上的优势上的优势选择您的基础模型提供agent的指示描述选择知识召回的数据源开发特定的Lamba函数1234低代码开发 中间结果可视化观测性轻松集成knowledge base对基础设施的封装和抽象 Amazon Titan Multimodal Embeddings modelBedrock 在在RAG上的优势上的优势主要能力通过文本/图像/文本+图像生成embeddi
27、ng,实现跨模态搜索支持Finetune,提供image-text pair即可参考做法1.商品自动打标(Blog链接)使用商品图像,和对应的一系列描述或者标签,构建embedding。新的商品图通过embedding召回所有可能的类别,商品标签2.多模态RAG(github参考代码)使用商品图像+描述构建embedding。召回后,让Claude判别保留相关的图文response 优缺点互补:o 向量模型不理解垂直领域专词o 向量模型有时出现语义相似但主题不相似情况o 可解释性弱,不易通过补丁解决bad caseo 倒排召回,缺乏语义信息,仅靠关键词匹配 多路召回(向量+关键字)Hybird
28、召回(Reference Doc)Sparse Vector RetrievalOpenSearch 在在RAG上的优势上的优势80%20%召回比例向量召回关键字召回 多路召回(向量+关键字)Hybird召回(Reference Doc)Sparse Vector RetrievalOpenSearch 在在RAG上的优势上的优势POST my_index/_search?search_pipeline=query:hybrid:,/First Query ,/Second Query ./Other Queries PUT/_search/pipeline/my-pipeline descr
29、iption:Post-processor for hybrid search,phase_results_processors:normalization-processor:normalization:“technique”:“l2”#min-max ,combination:technique:arithmetic_mean”#geometric mean or harmonic mean Step1:创建Search pipeline Step2:搜索时指定search pipeline好处:简单的内置多路召回,无需在客户端实现融合逻辑1.是Dense Vector召回的重要补充,目前
30、不支持多语言2.从NDCG10和Lantecy上都超过 ELSER of Elasticsearch 1.多路召回(向量+关键字)2.Hybird召回 3.Sparse Vector RetriBi-encoderDoc-onlyData SetNDCG10 RankNDCG10 RankNDCG10 RankNDCG10 RankNDCG10 RankTrec Covid0.68
31、840.48150.69830.77110.7072NFCorpus0.32740.31950.33530.3610.3522NQ0.32650.46330.41840.55310.5212HotpotQA0.60240.57950.63630.69710.6772FiQA0.25450.340.32230.37610.3442ArguAna0.47220.42740.37850.50810.4613Touche0.34710.16250.31320.27840.2943DBPedia0.28750.38340.38730.44710.4122SCIDOCS0.16520.14950.17410.16430.1544FEVER0.64950.69740.7720.82110.7433Climate FEVER0.18650.22830.25120.26310.2024SciFact0.6930.64350.67240.72310.7162Quora0.78940.83530.86410.85620.7885Amazon ESCI0.08130.07150.08620.07740.0951Average0.4193.710.414.290.452.710.4921.640.4622.64利用深度模型扩词(原理)性能评估