0


大模型中文问答场景下的模型选择

1、LLM3.1

8B(80亿)、70B(700亿)、405B(4050亿)

支持八种语言,具备128K扩展上下文的长度。

提供通用知识,数学计算、多语言翻译和工具使用能力,开源下载,并允许开发者定制和微调。

其中4050亿的参数的模型,可与GPT-4、GPT-4o、Claude 3.5 Sonnet等领先的闭源模型相媲美。

在预训练模型上,进行几轮对齐来生成最终的聊天模型。

每一轮涉及监督微调(SFT)、拒绝采样(RS)和直接偏好优化(DPO)

模型官网:https://ai.meta.com/blog/meta-llama-3-1/

模型下载:https://llama.meta.com/llama-downloads/

注:模型太大,如何部署,部署在哪里。

2、模型蒸馏

目的:将大模型的知识传递给小模型的过程

大模型通常是一个性能较好的复杂模型,小模型是一个简单的、计算量较小的模型

小模型学到一些关键知识,从而在保持较高性能同时,降低计算成本和存储需求

原理:从教师模型传递给学生模型,教师模型会用自己的经验解释问题,学生模型从老师的解释中学到知识

模型蒸馏步骤:

1、老师模型 具备较好的性能,但计算量和存储量要求较高

2、创建一个学生模型,可以简单低存储

3、训练小模型,使用[原始的训练数据],还可以使用[大模型的输出结果],来学习关键的知识

4、最后,得到性能较好的小模型。保持较高的性能,降低了计算成本和存储需求

微调和蒸馏虽然可以减少模型大小,但都需要大量的训练数据达到LLM相当的性能。

采用Distilling step-by-step分步蒸馏可以在较少的训练数据和较小的模型下,训练出性能超越LLM的小模型。

这个小模型需要额外的监督信息,LLM生成的自然语言解释,为模型的预测标签提供支持。

实际使用中就是用LLM生成新的标签,用这些标签来训练小模型。

注1:这仍然需要大模型提供打标签的数据集去训练小模型。因此需要部署大模型,去蒸馏出一个小模型。

注2:部署一个轻量级预训练模型:

可以使用已经优化和轻量化的预训练模型,如 DistilBERT 或 MobileBERT。

参考文章:LLM-从大模型蒸馏到小模型的性能提升之路 - 知乎 (zhihu.com)

如何用7.7亿参数的蒸馏模型超过5400亿的大语言模型——Google提出新的模型蒸馏方法:逐步蒸馏(Distilling step-by-step)详解 - 知乎 (zhihu.com)

3、RAG

很多垂域行业都开始使用大模型来优化自己的业务,最典型的方法就是RAG(检索增强生成)了。简单来说就是利用检索技术,找出与用户问题相关性最高的段落,再让LLM基于以上段落,去回答用户的提问。

RAG 是检索增强生成(Retrieval Augmented Generation )的简称,它为大语言模型 (LLMs) 提供了从数据源检索信息的能力,并以此为基础生成回答。简而言之,RAG 结合了信息检索技术和大语言模型的提示功能,即模型根据搜索算法找到的信息作为上下文来查询回答问题。无论是查询还是检索的上下文,都会被整合到发给大语言模型的提示中

RAG 的架构如下。

它既不是一个特定的开源代码库,也不是某个特定的应用,是一个开发框架。

完整的 RAG 应用流程主要包含两个阶段:

数据准备阶段:(A)数据提取–> (B)分块(Chunking)–> (C)向量化(embedding)–> (D)数据入库

检索生成阶段:(1)问题向量化–> (2)根据问题查询匹配数据–> (3)获取索引数据 --> (4)将数据注入Prompt–> (5)LLM生成答案

编码模型:bge-large-zh-v1.5

召回模型:Faiss向量化检索

参考文章:RAG之微调垂域BGE的经验之谈_bge-large-zh-v1.5-CSDN博客

4、bge-large-zh-v1.5

它处理中文文本场景尤其是问答场景效果好像非常好。

Bge-large-zh-v1.5和bge-large-zh区别在哪?

BGE-large-zh-v1.5 通常是 BGE-large-zh 的新版。训练数据更多、更高质量。

注1:不相似句子之间的相似度分数很高

BGE模型的相似度分布并不是[0, 1]区间的均匀分布,其大概处于[0.6, 1]这个区间,因此并不是大于0.6就代表相似。尤其是对于长度较短句子之间的相似度,当前模型的相似度数值会偏高。对于检索任务或者相似度任务,需要根据相似度的阈值筛选相似的句子。找出相似度的相对大小关系,而不是绝对大小关系。

注2:什么时候需要添加查询指令

对于一个使用短查询寻找相关长文档的检索任务,查询与文档之间长度非常不一致,推荐为短查询添加指令。其他任务,推荐不添加指令,例如,像quora这类用一个较短的问题去搜索其他相关的短问题,推荐不添加指令。具体是否添加指令,可以根据实际情况选择其中表现最好的方式。 在所有情况下,文档端都不用添加指令,只是查询端可以选择是否添加指令。

Using Sentence-Transformers
from sentence_transformers import SentenceTransformer

sentences = ["样例数据-1", "样例数据-2"]

model = SentenceTransformer('BAAI/bge-large-zh')

embeddings_1 = model.encode(sentences, normalize_embeddings=True)

embeddings_2 = model.encode(sentences, normalize_embeddings=True)

similarity = embeddings_1 @ embeddings_2.T

print(similarity)

对于短查询到长文档的检索任务, 每个查询都应该以一条指令开始(指令参考 Model List). 但对于文档,不需要添加任何指令。

queries = ['query_1', 'query_2']

passages = ["样例文档-1", "样例文档-2"]

instruction = "为这个句子生成表示以用于检索相关文章:"

model = SentenceTransformer('BAAI/bge-large-zh')

q_embeddings = model.encode([instruction+q for q in queries], normalize_embeddings=True)

p_embeddings = model.encode(passages, normalize_embeddings=True)

scores = q_embeddings @ p_embeddings.T

参考文章:bge-large-zh - 模型库 - 百度智能云千帆社区 (baidu.com)

BGE模型简介:BAAI General Embedding是北京智源人工智能研究院开源的一系列embedding大模型,简称BGE,支持中文和英文的embedding。BGE-Large-zh是BGE系列中参数规模最大的中文向量大模型,参数3.26亿。输入序列512,输出维度1024。预训练文件大小是1.3G,发布时间是 2023-08-02。

预训练数据:BGE-Large-zh模型使用C-MTP(Chinese Massive Text Pairs)作为训练数据。该数据集包括100M(1亿)文本对。C-MTP综合了标注数据和未标注数据,来自于多种来源,如Wudao语料库、科学文献、XLSUM-Zh、Wiki-Atomic-Edit、AmazonReviews-Zh等,确保了数据的大规模、多样性和质量。

架构:BGE-Large-zh模型是基于BERT-like(类BERT)架构,特别是在特殊的[CLS]标记的最后一层隐藏状态被训练来作为文本的嵌入表示。这种架构允许模型捕获文本中的丰富语义信息,并将其压缩到一个固定大小的向量中,这对于许多下游任务(如文本检索、分类和聚类)至关重要。

优势:

1、BGE-large-zh模型在检索、语义文本相似性、配对分类和重排序上,显示了明显的优势。同时,它在各项任务中表现均十分出色。

2、BGE系列模型在论文中也成为C-TEM系列(中文文本编码模型)模型,但BGE更为著名。C-TEM全称是Chinese Text Embedding Models。

评测结果参考:

BGE-Large-zh(BAAI General Embedding - Large - zh)详细信息 | 名称、简介、使用方法,开源情况,商用授权信息 | 数据学习(DataLearner)

5、using lang-chain

LangChain 的核心,LangChain 是围绕 LLMs 构建的框架。我们可以将其用于聊天机器人,

Generative Question-Answering (GQA),摘要等等。


本文转载自: https://blog.csdn.net/qq_43087912/article/details/140702961
版权归原作者 vivia_2219 所有, 如有侵权,请联系我们删除。

“大模型中文问答场景下的模型选择”的评论:

还没有评论