# 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. 输出格式:二维列表,包含多个一维向量。
相关推荐
江畔柳前堤7 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore9 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考10 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX11 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面11 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号12 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽12 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI12 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者14 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者14 小时前
【征程6】校准量化中HistogramObserver解析
算法