Ollama本地化部署+调用bge-m3向量化模型实战
Ollama 是一款轻量级、开源免费的本地大模型部署与管理工具,核心作用是简化大语言模型(LLM)和向量化模型的本地化部署流程,无需复杂的环境配置(无需折腾Docker、不用手动配置依赖),一条命令即可完成模型下载、启动与调用,让开发者能够在本地机器上轻松构建和管理各类AI模型,由本地硬件提供算力支撑,无需依赖云端服务器。Ollama的核心特点:极简部署:无需复杂配置,下载安装后,一条命令即可拉取
前言:本文专为复习总结而写,全程围绕「Ollama本地化部署」+「bge-m3向量化模型调用」展开,步骤清晰、重点突出,兼顾理论与实战,代码可直接复制运行,适合复习巩固相关知识点,同时对比在线模型(通义千问)凸显本地化部署的优势,助力快速掌握核心操作。
一、背景
随着大语言模型(LLM)的普及,文本向量化成为AI领域的核心基础操作——将文本转化为计算机可识别的浮点数向量,广泛应用于语义检索、文本聚类、相似度计算、RAG知识库搭建等场景。
当前主流的向量化方式主要分为两种:一是调用在线向量化模型(如通义千问、ChatGPT的API),二是本地化部署向量化模型。但在线调用存在明显局限:需联网、有调用次数/Token费用限制、敏感数据上传存在隐私泄露风险,且响应速度受网络影响较大。
在此背景下,Ollama本地化部署工具的出现,搭配开源免费的bge-m3向量化模型,完美解决了在线调用的痛点,成为个人学习、小型项目开发及隐私敏感场景的最优选择,也是复习过程中需重点掌握的实战方案。
二、介绍Ollama
Ollama 是一款轻量级、开源免费的本地大模型部署与管理工具,核心作用是简化大语言模型(LLM)和向量化模型的本地化部署流程,无需复杂的环境配置(无需折腾Docker、不用手动配置依赖),一条命令即可完成模型下载、启动与调用,让开发者能够在本地机器上轻松构建和管理各类AI模型,由本地硬件提供算力支撑,无需依赖云端服务器。
Ollama的核心特点:
-
极简部署:无需复杂配置,下载安装后,一条命令即可拉取并运行模型,3分钟即可完成基础部署,哪怕是没有丰富运维经验的开发者也能快速上手。
-
模型丰富:官方支持Llama 3、Qwen2.5、bge-m3等480+主流开源模型,涵盖对话模型、向量化模型,可按需下载,同时支持导入自定义模型。
-
跨平台兼容:支持Windows、MacOS、Linux系统,且支持GPU加速(NVIDIA显卡自动调用CUDA,AMD显卡支持ROCm,Mac M系列芯片支持Metal加速),资源占用可控,小模型(如bge-m3)在普通笔记本上也能流畅运行。
-
API友好:提供简洁的HTTP API,支持Python、Java等多种语言调用,且API格式兼容OpenAI,现有代码改个基础地址即可适配使用。
本文重点使用Ollama部署bge-m3向量化模型,实现文本向量化的本地化调用——bge-m3是智源研究院发布的开源向量化模型,支持超过100种语言,能处理从句子到长文档的多种输入,在语义检索、跨语言检索任务中表现出色,是目前最流行的开源文本嵌入模型之一,且完全免费可商用。
三、bge-m3简介
BGE-M3是北京智源人工智能研究院推出的新一代通用文本嵌入模型,支持多语言、多粒度、多功能的文本向量化表示,适用于检索、分类、聚类等多种自然语言处理任务。
四、实战代码
# \RAG\RAG_Ollama.py
#本地部署模型后,访问嵌入模型以及输出文本的向量表示
from ollama import Client
# 创建Ollama客户端实例
client = Client(host="http://127.0.0.1:11434")
# 获取模型列表并打印端口和访问链接
# models = client.list()
#
# for model in models:
# print(model)
def get_embedding(text, model_name="bge-m3"):
# 使用ollama库获取嵌入向量
response = client.embed(model_name, text)
embedding = response['embeddings']
return embedding
test_query = "我爱你"
vec = get_embedding(test_query)
print(vec[0])
# "我爱你" 文本的嵌入表示的维度。
print("维度:",len(vec[0]))
# import ollama
# def get_embedding(text, model_name="bge-m3"):
# # 使用ollama库获取嵌入向量
# response = ollama.embed(model_name, text)
# embedding = response['embeddings']
# return embedding
#
# test_query = "我爱你"
# vec = get_embedding(test_query)
# print(vec[0])
# # "我爱你" 文本的嵌入表示的维度。
# print("维度:",len(vec[0]))
四、效果

五、总结
bge-m3生成的向量固定为1024维。核心流程:安装Ollama → 拉取bge-m3模型 → 安装requests依赖 → 编写API调用代码 → 实现文本向量化(单文本/批量),全程开源免费、无网络依赖。离线AI应用开发:结合Ollama部署的对话模型,开发离线AI工具(如离线文本分析工具、本地智能助手),无需依赖云端API,提升应用的稳定性和隐私性。
更多推荐
所有评论(0)