0%

大模型分类

1. 大模型

1.1 LLM 模型

大语言模型(LLM,Large Language Model),也称大型语言模型,是一种旨在理解和生成人类语言的人工智能模型。

LLM 通常指包含数百亿(或更多)参数的语言模型,它们在海量的文本数据上进行训练,从而获得对语言深层次的理解。LLM 的一个杰出应用就是 ChatGPT ,LLM 通过采用 思维链(CoT, Chain of Thought) 推理策略,利用包含中间推理步骤的提示机制来解决这些任务,从而得出最终答案。

1.2 多模态模型

多模态模型处理多种类型的数据,而 LLM 是一种专门处理文本数据的大型模型。 LLM 可以作为多模态模型的一部分,用于处理文本模态的信息。

LLM (Large Language Model)

LLM,即大型语言模型,通常基于 Transformer 构建。它拥有数百万甚至数千亿的参数,这些模型通过在海量文本数据上进行训练,从而学习语言的规律和知识。可以撰写文章、故事、代码等, 根据上下文回答用户提出的问题。如GPT-3、GPT-3.5、GPT-4,由OpenAI开发。

多模态模型 (Multimodal Models)

多模态模型是一种人工智能模型,它能够处理和整合来自多种不同类型数据(模态)的信息。 例如根据图像生成文字描述。理解视频内容,回答相关问题。将语音转换为文字,并理解其含义。

如DALL-E:可以根据文本描述生成相应的图像,结合了自然语言处理和计算机视觉的技术。

Stable Diffusion 可以认为是多模态模型的一种,但不完全是典型的多模态模型。

1.3 模型分类

对话模型: 对话模型是一种旨在理解和生成人类语言,从而进行自然、流畅对话的机器学习模型。 它们通常基于大型语言模型 (LLM),经过专门训练以处理对话任务。

嵌入模型: 嵌入模型将文本、图像或其他类型的数据转换为数值向量,Embedding 嵌入,是对数据向量化,可使用余弦值比较相似度。

重排序模型: 重排序模型接收一个初始的候选列表(例如,搜索结果或推荐列表),并根据某种标准对它们进行重新排序,以提高结果的质量或相关性。

2. 大模型增强

2.1 Function calling

img

函数调用理论上会调用两次大模型,一次是让大模型给一个选择调用哪个外部工具,调用完后,然后再把结果发给大模型。

2.2 检索增强生成(RAG)

想象你问一个人问题,如果这个人只是依靠他自己的记忆来回答,他可能会犯错或者知识有限。RAG 就像是让这个人回答问题前,先查阅一下相关的书籍、资料、或者询问专家(外部知识库),然后再整合这些信息来给你一个更准确、更全面的答案。

  • 为什么出现RAG

    • 大模型幻觉问题

    • 最新知识缺乏

    • 回答的安全问题

  • 流程

    • 先对知识库向量化

    • prompt 和知识库合并,一起传给 LLM

    • 开发框架 LLamaIndex,将向量化的内容放在内存中。

d3607494-9b5b-47c8-b500-01b04fe7155e

3. 开发

3.1 架构

img
  1. LLM 层

基于四种流行 LLM API (OpenAI-ChatGPT、百度文心、讯飞星火、智谱GLM)进行了 LLM 调用封装,支持用户以统一的入口、方式来访问不同的模型,支持随时进行模型的切换;

在 LLM 层,构建了一个 Self_LLM 基类,基类定义了所有 API 的一些共同参数(如 API_Key,temperature 等);在该基类基础上继承实现了上述四种 LLM API 的自定义 LLM。四种 LLM 的原生 API 封装在了统一的 get_completion 函数中。

  1. 数据层

包括个人知识库的源数据(包括 pdf、txt、md 等)以及 Embedding API,源数据经过 Embedding 处理可以被向量数据库使用;

  1. 数据库层

基于个人知识库源数据搭建的向量数据库,本项目中选择了 Chroma。在该层实现了源数据处理、创建向量数据库的方法;

  1. 应用层

应用层封装了整个项目的全部核心功能。基于 LangChain 提供的检索问答链基类进行了进一步封装,支持通过 model 参数进行不同模型切换以及便捷实现基于数据库的检索问答。

实现了两个检索问答链,分别是有历史记录的 Chat_QA_Chain 和没有历史记录的 QA_Chain;

  1. 服务层

实现了 Gradio 搭建 Demo 与 FastAPI 组建 API 两种方式来支持本项目的服务访问。

3.2 LangChain 框架

LangChain 框架是一个开源工具,充分利用了大型语言模型的强大能力,为各种大型语言模型应用提供通用接口,它能够让语言模型与其他数据来源连接,并且允许语言模型与其所处的环境进行互动。

核心组件

  • 模型输入/输出(Model I/O):与语言模型交互的接口
  • 数据连接(Data connection):与特定应用程序的数据进行交互的接口
  • 链(Chains):将组件组合实现端到端应用。比如后续我们会将搭建检索问答链来完成检索问答。
  • 记忆(Memory):用于链的多次运行之间持久化应用程序状态;
  • 代理(Agents):扩展模型的推理能力。用于复杂的应用的调用序列;
  • 回调(Callbacks):扩展模型的推理能力。用于复杂的应用的调用序列;

4. 参考资料

可以加首页作者微信,咨询相关问题!