大语言模型,视觉模型,全模态模型,语音模型和向量模型的区别和使用
·

1. 大语言模型(Large Language Model, LLM)
定义:以文本为输入,生成文本的模型。
特点:
-
输入输出都是自然语言(或包含少量结构化的 prompt)。
-
擅长对话、写作、推理、代码生成等任务。
-
在 LangChain 中,LLM 是核心组件,用于构建链(Chain)、代理(Agent)等。
LangChain 中使用方式:
from langchain_community.chat_models import ChatTongyi
llm = ChatTongyi(model="qwen-max") # 可选 qwen-plus, qwen-turbo 等
response = llm.invoke("用一句话介绍 Python")
print(response.content)
2. 视觉模型(Vision Model)
定义:能够处理图像输入的模型。
特点:
-
输入可以是图像(或图像+文本),输出为文本。
-
常用于图像描述、视觉问答、目标检测等。
LangChain 中使用方式:
from langchain_community.chat_models import ChatTongyi
from langchain.schema import HumanMessage
llm = ChatTongyi(model="qwen-vl-plus") # 视觉语言模型
message = HumanMessage(
content=[
{"type": "text", "text": "描述这张图片"},
{"type": "image_url", "image_url": "https://example.com/cat.jpg"}
]
)
response = llm.invoke([message])
print(response.content)
3. 全模态模型(Omni-Modal Model)
定义:能够处理多种模态(文本、图像、音频、视频等)的模型,且往往能输出多种模态。
特点:
-
输入和输出都可以是多种模态的组合。
-
能够进行图像生成、音频识别等跨模态任务。
-
目前多数商业模型已向全模态发展。
LangChain 中使用方式:
from langchain_community.chat_models import ChatTongyi
from langchain.schema import HumanMessage
llm = ChatTongyi(model="qwen-omni-turbo")
message = HumanMessage(
content=[
{"type": "text", "text": "请分析这段视频的内容"},
{"type": "video_url", "video_url": "https://example.com/demo.mp4"}
]
)
response = llm.invoke([message])
print(response.content)
4. 语音模型(Speech Model)
定义:专门处理语音信号的模型。包括:
-
语音识别(ASR):将语音转为文本(如 Whisper)。
-
语音合成(TTS):将文本转为语音。
-
语音理解:直接对语音进行意图识别等。
特点:
-
输入输出可能是音频文件或流。
-
与 LLM 结合可用于语音对话系统。
LangChain 中使用方式:
import dashscope
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
# 使用 paraformer-v1 模型识别音频文件
response = dashscope.audio.asr.Transcription.call(
model="paraformer-v1",
file_urls=["https://example.com/audio.wav"]
)
print(response.output['results'][0]['transcription'])
5. 向量模型(Embedding Model)
定义:将文本、图像等非结构化数据转换为固定长度的向量(embedding)。
特点:
-
输入是文本(或图像),输出是向量数组(如 1536 维)。
-
不生成自然语言,而是用于相似度计算、检索、聚类等。
-
与 LLM 最本质的区别:LLM 生成文本,向量模型不生成文本。
LangChain 中使用方式:
from langchain_community.embeddings import DashScopeEmbeddings
embeddings = DashScopeEmbeddings(model="text-embedding-v1")
vector = embeddings.embed_query("这是一个测试文本")
print(len(vector)) # 输出向量维度(如 1536)
# 批量嵌入
vectors = embeddings.embed_documents(["文本1", "文本2"])
更多推荐



所有评论(0)