# LangChain v0.2+ 与 Ollama 三大核心模型实战指南

环境准备

运行代码前执行安装命令:pip install -U langchain-ollama,同时保证本地 Ollama 服务正常启动,提前拉取项目所需模型。新版 LangChain 将所有 Ollama 相关模型统一整合至langchain_ollama包中,摒弃旧版分散导入模式,调用规则更加统一规范。

一、OllamaLLM 文本补全模型

OllamaLLM属于单轮文本输入输出模型,适用于基础文本生成、内容续写、简单问答场景,无需搭建结构化消息格式。该模型旧版从langchain.llms导入,新版统一整合至langchain_ollamainvoke是 LangChain 新版统一标准调用方法,作用是向已经实例化完成的模型传入请求数据,触发模型执行对应逻辑并返回最终结果。

ini 复制代码
# 新版导入(官方推荐写法)
from langchain_ollama import OllamaLLM
# 旧版导入(现已废弃,不建议使用)
# from langchain.llms import Ollama

# 初始化本地文本补全模型
model = OllamaLLM(model="qwen:7b")
# 调用invoke方法发起请求,完成文本生成
result = model.invoke("讲一个简短的程序员笑话")
print(result)

⚠️ 注意:该模型仅支持无状态单轮交互,不具备角色设定与上下文记忆能力。 初始化嵌入模型(指定模型 + temperature=0,保证向量稳定)

  1. 代码作用:创建嵌入模型对象,准备把文字转向量;

  2. 参数 1:model="mxbai-embed-large",指定使用的嵌入模型名称;

  3. 参数 2:temperature=0(你不懂的点,详细说)

    • temperature随机性控制参数
    • 文本嵌入模型不需要任何随机效果
    • 设为 0 = 保证同一句话,每次转换出来的向量完全一样,稳定不波动,这是文本嵌入的必须要求。

二、ChatOllama 对话聊天模型

ChatOllama是日常开发使用率最高的多轮对话模型,依靠SystemMessage 系统消息HumanMessage 人类消息 搭建对话结构,系统消息用于预设 AI 角色身份与回答规则,人类消息用于填写用户实际提问内容。该模型旧版从langchain.chat_models导入,新版直接从langchain_ollama导入,同样使用invoke方法传入消息列表完成对话交互。

ini 复制代码
# 新版导入(官方推荐写法)
from langchain_ollama import ChatOllama
from langchain_core.messages import SystemMessage, HumanMessage
# 旧版导入(现已废弃,不建议使用)
# from langchain.chat_models import ChatOllama

# 初始化对话模型
chat_model = ChatOllama(model="qwen:7b")
# 组合系统消息与人类消息
messages = [SystemMessage(content="你是简洁易懂的技术助手"),HumanMessage(content="讲解LangChain新版优势")]
# 调用invoke执行对话请求
response = chat_model.invoke(messages)
print(response.content)

⚠️ 注意:该模型仅支持结构化消息列表传参,不支持直接传入纯文本字符串。

三、OllamaEmbeddings 文本嵌入模型

OllamaEmbeddings为标准文本嵌入模型,核心作用是将自然语言文本转化为向量数据,是搭建 RAG 知识库、实现语义搜索、完成文本相似度计算的基础工具。该模型旧版依托langchain_community社区包导入,新版归属于langchain_ollama内置模块;此模型不使用 invoke 调用,专属embed_query处理单条文本,embed_documents处理批量文本,设置temperature=0可保障向量数据结果稳定统一。

python 复制代码
# 新版导入(官方推荐写法)
from langchain_ollama import OllamaEmbeddings
# 旧版导入(现已废弃,不建议使用)
# from langchain_community.embeddings import OllamaEmbeddings

# 初始化文本嵌入模型
embedding_model = OllamaEmbeddings(model="mxbai-embed-large", temperature=0)
# 单条文本向量化处理
single_emb = embedding_model.embed_query("今天天气真好")
print(f"单条向量维度:{len(single_emb)}")
# 批量文本向量化处理
batch_emb = embedding_model.embed_documents(["今天天气真好","LangChain新版使用更便捷"])
print(f"批量向量数量:{len(batch_emb)}")

⚠️ 注意:嵌入模型固定填写temperature=0,不可随意修改,两类向量化方法禁止混用。

模型快速选型总结

  1. 单轮文本生成、简单问答场景:选用OllamaLLM ,核心调用方法invoke
  2. 多轮人机对话、角色定制场景:选用ChatOllama ,核心组件SystemMessageHumanMessage
  3. 文本向量化、知识库检索场景:选用OllamaEmbeddings ,核心方法embed_queryembed_documents

1、单个文本嵌入(model.embed_query,单句话,输出 1 个 1024 维向量)

  1. 代码:res = model.embed_query("今天天气怎么样")

    • res 就是存储结果的变量;
    • 括号里填一句话、一段单独的文本
  2. print(res):打印出来的结果,就是这段文字转换成的向量

  3. 向量格式:长度为 1024 的浮点数列表(一长串小数);

  4. 维度原因:mxbai-embed-large 模型默认输出就是 1024 维向量

  5. 函数特点:只处理单条文本 ,输出一维列表,只返回 1 个向量。


2、批量文本嵌入(model.embed_documents,多句话,输出多个向量)

  1. 代码:model.embed_documents(["文本1","文本2","文本3"])
  2. 函数特点:处理多段文字、多条内容
  3. 场景对应:就像你说的,对应知识库中的多篇资料,一次性批量处理;
  4. 输出结果:多个向量(多串数字) ,输入几段文字,就返回几个对应的向量;
  5. 输出格式:二维列表,包含多个一维向量。
相关推荐
fish_xk5 小时前
c++11的初见
开发语言·c++·算法
搬砖者(视觉算法工程师)5 小时前
计算机视觉与计算摄影测量学第三讲图像直方图:理论、统计特性与点运算变换
人工智能·算法·计算机视觉
Yingjun Mo6 小时前
3. Meta-Harness:模型基座外壳的端到端优化
人工智能·算法
Cthy_hy6 小时前
并查集(Disjoint Set Union):巧判「连通聚类关系」的极简利器
数据结构·算法
Shan12056 小时前
C++中函数对象之重载 operator()
开发语言·c++·算法
逻辑君6 小时前
物理生物学研究报告【20260007】
人工智能·算法
阿维的博客日记6 小时前
简单说一下ArrayList的add机制,适合应试者表达的
算法·arraylist
阿Y加油吧6 小时前
两道位运算 / 摩尔投票经典题复盘:只出现一次的数字 & 多数元素
数据结构·算法·leetcode
Evand J6 小时前
【课题推荐】三模型IMM交互式多模型滤波算法,匀速/左转/右转目标跟踪,附MATLAB代码测试结果
算法·matlab·目标跟踪·无人机·imm·多模型