文章速读-2023年10月15
1. 《问答场景常用大模型解决方案》
原始链接 https://mp.weixin.qq.com/s/rojniYJ3PViO3uix0hIKFQ
文章概括
LLM落地智能客服中的问题和解法。
1、落地有哪几种方案
包括微调行业大模型、角色设定、嵌入和插件。
2、落地遇到的挑战有哪些
- 版面复杂多样:需要解析各种文件类型,处理页眉页脚、分栏、列表等信息,并结合OCR能力。
- 文本分块:通过规则进行分块,但可能存在知识点被分割或不完整的情况。
- 内容复杂、组织多样:需要识别段落和列表关系,并提取内容。
- 多因素影响内容召回效果:如文档相似度高和长段落导致与查询核心信息匹配困难。
- 有监督样本构造困难:需要强大的业务知识,且大模型存在prompt敏感性和不准确结果的问题。
3、有哪些优化方法
- 向量化、关键信息和多场景prompt的优化方法。
- 向量化上的优化:传统模型基于Query训练,而优化目标是提升Query与段落的相关性。采用sbert、cosent等模型进行训练,并构造包含匹配和不匹配文档段落的数据结构作为困难负样本。
- 关键信息上的优化:对文档内容进行信息压缩,提取关键词和摘要。可使用keybert算法、大模型生成关键词、进行微调以及提取摘要。基于成分句法分析提取名词短语生成关键词列表,将完整语句的Embedding切换为关键词Embedding,提升召回精准度。
- 多场景prompt上的优化:2B领域问答需求更复杂,对话轮次较多。针对具体业务梳理相对独立的场景问题,每个场景下有不同的处理流程,如硬盘不识别问题可能由配Raid、驱动安装和硬件故障三个分支处理。
2. 《LangChain+通义千问+AnalyticDB向量引擎保姆级教程》
原始链接 https://mp.weixin.qq.com/s/GiOTpJOK5tr1Bat3R-Jbyg
文章概括
基于通义千问,使用LangChain和AI Agent方法构建LLM的ChatBot
1、LangChain是什么
LangChain是一个基于语言模型开发应用程序的框架。其通过串联开发应用需要的各个模块和组件,简化和加速程序的构建和开发。
2、LangChain有哪些模块?
- LLM模块:提供统一的大语言模型调用接口,屏蔽了不同大语言模型的差异。需要实现基类的call和generate接口。
- Embedding模块:提供统一的embedding能力接口,与LLM类似,可以有不同的实现。需要实现基类的embed_documents和embed_query方法。
- VectorStore模块:向量存储模块,用于存储由Embedding模块生成的向量和提供给LLM模块使用。需要实现写入和查询的接口。
- Chain模块:用于串联上述模块,简化调用过程,内部集成了多个chain,如LLMChain,并根据不同场景定义和使用PromptTemplate。
- Agents模块:提供丰富的agent模板,用于实现不同的agent功能。
3、使用LangChain构建ChatBot的流程?
4、构建ChatBot遇到的问题和优化?
- 文本切分器:文本切分的质量直接影响召回率,需要考虑文本切分对语义的影响。现有的切分策略可能会将标题和正文切分开,导致无法很好地表达内容。通过优化切分长度,可以避免超过token限制或丢失关键信息。
- 召回优化1:通过回溯上下文,在召回时额外召回最相关chunk的相邻chunk,并进行拼接。这样可以提供更完整的上下文信息。
- 召回优化2:构建标题树,特别适用于富文本场景中多级标题的情况。可以通过构建内容标题树的方式来优化chunk的召回效果。
- 双路召回:结合向量和全文检索进行召回,然后进行精排去重。在全文检索时,可以增加自定义专有名词库和屏蔽虚词来进一步优化召回效果。
- 问题优化:有些用户问题不适合进行向量匹配,可以通过聊天历史让模型总结独立问题,从而提高召回率和回答准确度。
5、Agent System是什么?
是使用人工智能技术构建的一种智能实体,它可以模拟人类的感知、推理和行动能力,以解决复杂的任务和问题
6、Agent System有哪些模块构成
- Planning:这个模块用于制定行动计划。它根据当前状态和目标生成一个序列的操作步骤,以达到预期结果。对进行子任务的设定和拆解,进行自我反思和迭代: 实际生活中的任务往往是复杂的,需要将大任务分解为更小、可管理的子目标,从而能够有效处理复杂任务。通过对过去的行动进行自我批评和反思,从错误中学习并为将来的步骤进行完善,从而提高最终结果的质量。
- Memory:这个模块用于存储和检索Agent所需的信息。它可以包括短期记忆和长期记忆,用于保存之前的经验和知识,并在需要时进行回溯和参考。
- 短期记忆:将所有上下文学习(参见提示工程)视为利用模型的短期记忆来学习。
- 长期记忆:这为代理提供了在长时间内保留和检索(无限)信息的能力,通常通过利用外部向量存储和快速检索来实现。
- Tools:Tools模块可以让Agent调用外部API以获取模型权重中缺失的额外信息(通常在预训练后难以更改),包括实时信息、代码执行能力、访问专有信息源等。通常是通过设计API的方式让LLM调用执行
7、Agent System模块关系
8、提高LLM性能的技术点
- 思维链(Chain of thought) (CoT; Wei et al. 2022)已经成为提高模型在复杂任务上性能的标准提示技术。模型被指示“逐步思考”,以利用更多的测试时间计算来将困难任务分解成更小更简单的步骤。CoT将大任务转化为多个可管理的任务,并揭示了模型思考过程的解释。
思维树(Tree of Thoughts) (Yao et al. 2023) 通过在每一步探索多种推理可能性来扩展了CoT。它首先将问题分解为多个思维步骤,并在每一步生成多种思考,创建一个树状结构。搜索过程可以是广度优先搜索(BFS)或深度优先搜索(DFS),每个状态都由分类器(通过提示)或多数投票进行评估。
- 任务拆解可以通过以下方式完成:(1)LLM使用简单的提示,如“完成任务X需要a、b、c的步骤。\n1。”,“实现任务X的子目标是什么?”,(2)使用任务特定的指令;例如,“撰写文案大纲。”,或者(3)通过交互式输入指定需要操作的步骤。
自我反思(Self-Reflection)是一个非常重要的思想,它允许Agent通过改进过去的行动决策和纠正以前错误的方式来不断提高。在可以允许犯错和试错的现实任务中,它发挥着关键作用。比如写一段某个用途的脚本代码。
- ReAct (Yao et al. 2023)通过将行动空间扩展为任务特定的离散行动和语言空间的组合,将推理和行动整合到LLM中。前者使LLM能够与环境互动(例如使用搜索引擎API),而后者促使LLM生成自然语言中的推理轨迹。