本文主要是介绍Transformers和Langchain中几个组件的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.对于Transformers框架的介绍
1.1 介绍: transformers 是由 Hugging Face 开发的一个开源库,它提供了大量预训练模型,主要用于自然语言处理(NLP)任务。这个库提供的模型可以用于文本分类、信息抽取、问答、文本生成等多种任务。
1.2 应用场景:
文本分类
:使用 BERT、RoBERTa 等模型进行情感分析、意图识别等。命名实体识别(NER)
:使用序列标注模型来识别文本中的具体实体(如人名、地点、组织名)。机器翻译
:使用像 T5 或 Marian NMT 这样的序列到序列的模型进行语言之间的翻译。文本摘要
:使用 GPT、BART 等模型生成文章的摘要。问答系统
:使用预训练的问答模型直接从文本中提取答案或使用知识库支持的问答。文本生成
:使用 GPT 系列模型进行文章生成、对话生成或任何其他形式的文本自动完成。
2.Langchain的介绍
2.1 介绍: Langchain 是一个高级库,用于构建语言理解应用。它主要关注于结合语言模型和其他技术(如搜索引擎、数据库)来构建复杂的语言理解系统。
2.2 应用场景:
聊天机器人
:构建能够理解和生成人类语言的对话系统。信息检索与问答系统
:通过整合语言模型生成能力和文档搜索,创建能回答复杂问题的系统。【本质就是RAG】内容创建和摘要
:结合搜索和生成技术自动创建内容或摘要。多模态任务
:结合文本和其他数据源(如数据库)来执行任务。
3.二者区别
3.1 主要方向: Transformers主要提供的是对于模型的底层访问和操作,因此我们可以利用Transformers用于模型训练、评估与推理进而微调各种NLP模型。对比之下,Langchain提供的是更加高级的接口,符合应用系统中。
3.2 几个组件的区别:
3.2.1 Langchain:
from langchain_openai import ChatOpenAI, OpenAI
from langchain_community.vectorstores import DocArrayInMemorySearch
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
from langchain_openai import OpenAIEmbeddings# 1.这行代码创建了一个 ChatOpenAI 的实例,使用的是 GPT-3.5 模型。
model = OpenAI(model="gpt-3.5-turbo-instruct")# 2.创建了一个【文档向量存储】(vectorstore),使用 【DocArrayInMemorySearch】 类从提供的文本列表中创建,
# 【向量的嵌入】使用了 OpenAIEmbeddings()
text = ["Fairy是一个英俊无比的男生,即便他身高不高但依旧有很多女生追他"
]
vectorstore = DocArrayInMemorySearch.from_texts(text,embedding=OpenAIEmbeddings(),
)
模型 (OpenAI)
:这通常指的是使用OpenAI提供的API来访问像GPT-3这样的强大模型,用于生成文本或处理语言任务。
嵌入 (OpenAIEmbeddings)
:用于生成文本的嵌入向量,这些向量可以用于文档相似度搜索或其他检索任务。这与 AutoModelForCausalLM 的用途不同,后者主要用于生成文本,而不是生成用于文档相似度计算的嵌入。
3.2.2 Transformers 中的模型和分词器:
MODEL_PATH = os.environ.get('MODEL_PATH', '/mnt/workspace/models/chatglm3-6b')
TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)
tokenizer = AutoTokenizer.from_pretrained(TOKENIZER_PATH)
model = AutoModelForCausalLM.from_pretrained(MODEL_PATH).to(device).eval() # 使用适合的模型类
作用
:AutoModelForCausalLM 是一个专为因果语言建模设计的模型,通常用于文本生成任务。它的输出是 logits
,即预测每个可能的下一个词的分数。而分词器 (AutoTokenizer)用于将原始文本转换成模型可以理解的格式(如token IDs)。这是处理任何NLP任务的标准步骤。【主要用于文本生成或特征提取】
这篇关于Transformers和Langchain中几个组件的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!