一. 常见的大模型简介
1.1 常见闭源大模型简介
名称 | 简介 | 地址 |
---|---|---|
ChatGPT | ChatGPT是OpenAI推出的基于GPT-3.5和GPT-4的聊天机器人,擅长对话、编程、解答等,具有丰富的知识基础和上下文理解能力。 | https://chat.openai.com/ |
GPT-4 | GPT-4是OpenAI推出的多模态大型语言模型,具有更高的参数量和性能,支持长上下文,提供安全响应,需付费使用。 | https://chat.openai.com/ |
Claude 系列 | Claude 3是Anthropic公司开发的闭源语言模型,包含Claude 3 Haiku、Sonnet和Opus三个版本,特点各异,旨在满足不同需求,具有200k的上下文长度,费用不同。 | App unavailable \ Anthropic |
PaLM/Gemini 系列 | Gemini是Google开发的PaLM系列语言模型的最新迭代版本,即Gemini 1.0,它取代了之前的Bard并成为了新的对话应用的基础。Gemini根据参数量的不同,分为Ultra、Pro和Nano三个版本,旨在满足不同的使用需求和设备要求。 | https://gemini.google.com/app |
文心一言 | 文心一言是由百度推出的知识增强型语言大模型,基于文心大模型的最新4.0版本,专注于提升中文处理能力。该模型包含多种类型的大模型,涵盖NLP、CV、跨模态和生物计算等领域。 | 文心一言 |
星火大模型 | 星火大模型是科大讯飞开发的集文本生成、语言理解、知识问答等多能力于一体的认知智能大模型,具备跨领域知识理解与自然对话能力,并在数学、代码等方面展现出色性能。其特点包括对中文的深度优化、多模态交互能力以及适应国产算力平台的高效训练 | 讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞 |
1.2 常见开源大模型简介
模型名称 | 参数量 | 大模型架构类型 | 大模型框架 | 词表 | 上下文长度 | 改进点 | inference扩展 |
---|---|---|---|---|---|---|---|
baichuan2-13B | 130亿 | 2.6T 多语言tokens预训练 | casual-decoder | 125696 | 4096 | 1.7b:RoPE ; 13b:ALiBi 2.SwiGLU作为激活函数 3.Layer Normalization; RMSNorm 4.AdamW+NormHead+Max-z损失 | |
Llama-2-13b-chat | 130亿 | 2T 0.13%中文 | casual-decoder | 2048->4096 | LayerNorm换成了RMSNorm llama1:MQA position embedding:RotayEmbedding | ||
Qwen-7B-Chat | 70亿 | 3T 多语言tokens预训练 | casual-decoder | 152k | 训练:2048 预测外推:8192 | 1.embedding和输出映射不进行权重共享 2.使用了RoPE(旋转位置编码)进行位置编码 3.在大多数层中移除了Bias,但在QKV层保留 4.使用了预归一化(Pre-Norm)和RMSNorm进行规范化 5.SwiGLU作为激活函数 6.Flash Attention | NKT感知插值 LogN-Scaling 窗口Self-Attention |
ChatGLM2-6B | 60亿 | 在1.4万亿中英文tokens数据集上训练,并做了模型对齐 | prefix-decoder -> casual-decoder | 32k | 1.更长的上下文:使用了FlashAttention技术,升级到32K 2.Multi-Query Attention |
二、检索增强RAG
2.1 RAG简介
检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种结合了信息检索和自然语言生成的自然语言处理方法。它的核心原理在于利用信息检索技术从大量的文本数据中获取相关信息,然后结合这些信息使用自然语言生成技术来产生符合用户需求的文本结果。
RAG模型通常包括信息检索和生成两个主要模块。在信息检索模块,模型通过理解和解析用户输入,使用索引和检索算法从大规模的文本数据中快速提取与查询相关的内容。随后,在生成模块,RAG利用检索到的信息作为上下文,通过自然语言生成模型(如大型语言模型)生成自然语言文本,以更加贴近用户需求。
2.2 RAG 基本流程
RAG 的工作流程主要分为三个步骤:检索、增强和生成。
检索: 使用用户查询从外部知识源中检索相关上下文。将用户查询嵌入到向量空间中,与向量数据库中的附加上下文进行相似性搜索,返回前 N 个最接近的数据对象。
增强: 使用用户查询和检索到的附加上下文填充提示模板。
生成: 将经过检索增强的提示传递给LLM。
三、LangChain
3.1 Langchain简介
LangChain 是一个用于构建由语言模型驱动的应用程序的框架。它旨在实现数据感知和主动性,允许语言模型与其他数据源连接,并与其环境进行交互。
LangChain 提供了模块化的组件抽象和一系列用例特定链,这些链可以被看作是以特定方式组装这些组件,以便最好地完成特定用例
如上图,每个椭圆形代表了 LangChain 的一个模块
,例如数据收集模块或预处理模块。每个矩形代表了一个数据状态
,例如原始数据或预处理后的数据。箭头表示数据流的方向,从一个模块流向另一个模块。
3.2 Langchain核心模块
-
模型输入输出(Model I/O): 这是 LangChain 框架的核心元素,包括与语言模型交互的构建块。LangChain 提供了与大型语言模型(LLM)进行交互的接口和集成,不提供自己的 LLM,而是提供了一个标准接口,用于与许多不同的 LLM 进行交互。
-
数据连接(Data Connection): 数据连接模块提供了文档加载器和文档转换器等工具,用于将非结构化文本转换为可处理的数据。这些工具包括文本拆分器、冗余过滤器、元数据提取器、多语言转换器和对话转换器等,大大增强了 LangChain 框架的灵活性。
-
链(Chains): 链允许将多个组件组合在一起,创建一个单一的、连贯的应用程序。LangChain 中主要有基础链(LLMChain)、路由链(RouterChain)、顺序链(SequentialChain)和转换链(TransformChain)等,用于组合和连接不同的功能。
-
记忆(Memory): Memory 组件用于在链之间存储和传递信息,实现对话的上下文感知能力。它可以存储之前对话和验证信息的状态,用于后续链的输入,允许链访问和操作共享的内存,实现链之间的协作。
-
代理(Agents): 代理(Agents)的核心思想是使用 LLM 作为大脑自动思考,自动决策选择执行不同的动作,最终完成任务。代理模块包括代理(Agent)、工具(Tools)和工具集(Toolkits),使得代理可以调用不同的工具来完成任务。
-
回调(Callbacks): LangChain 提供了一个回调系统,允许连接到 LLM 申请的各个阶段,这对于日志记录、监控、流传输和其他任务(如添加标签、计算 Token 等)非常有用
四.大模型开发流程
- 设计
在开始应用开发前,需明确目标场景、用户群和价值主张。建议个体开发者或小团队从最小可行性产品(MVP)入手,逐步完善。
功能设计上,先确定核心功能,再规划相关辅助功能。例如,开发个人知识库助手时,核心是知识库内容的问答,辅助功能包括上传和管理知识库,以及纠正模型回答。这样的设计确保了从核心需求出发,逐步扩展,满足用户的实际需求。
-
搭建整体架构
在开发大模型应用时,推荐使用LangChain框架来构建项目架构,实现从用户输入到输出的流程。这包括搭建一个个性化数据库,如使用向量数据库Chroma,来支持语义检索。数据预处理是关键步骤,涉及将多种格式转换为纯文本并清洗数据。之后,对数据进行切片和向量化,以便在数据库中建立高效的索引,为大模型提供准确的数据支持。 -
Prompt Engineering
要提升大模型性能,关键在于精心设计的Prompt。我们应通过创建小规模验证集,遵循有效原则,设计出基础但有效的Prompt,并不断迭代优化。 -
验证迭代
验证迭代对提升大模型效能关键,需通过测试发现问题案例并改进Prompt。完成初步设计后,应实际测试、识别Bad Case,分析并优化Prompt,直至实现稳定且满足目标的版本
-
体验优化
用户体验跟踪,记录 Bad Case 与用户负反馈,再针对性进行优化即可。
课程地址:动手学大模型应用开发