产品定价 立即试用
专业版
文档 > 分析 > 使用Ollama的本地AI
入门
指南 安装 架构 API 常见问题
目录

使用 Ollama 实现本地 AI - 将 Ollama 与 ThingsBoard 集成

Ollama简介

Ollama是一款开源工具,可让您在自己的基础设施上本地运行大语言模型(LLM)。可以理解为将Llama、Mistral或Gemma等AI模型的能力直接部署到您的服务器,而无需向外部云服务发送请求。

与需要通过互联网进行API调用的OpenAI、Anthropic或Google Gemini等基于云的AI提供方不同,Ollama完全在您的环境中运行。这一根本差异为希望利用AI同时保持对数据和基础设施控制的企业开辟了新可能。

为何在ThingsBoard部署中考虑使用Ollama?

若您已有ThingsBoard部署并希望探索AI集成,Ollama可解决多项关键顾虑:

降低成本:Ollama消除了云AI服务常见的按token收费模式。一旦拥有支持GPU的基础设施,您只需支付硬件和运维成本,用量再大成本也可预测。

数据隐私:所有数据处理均在您的基础设施内完成。遥测数据和AI分析不会离开您的网络,有助于遵守GDPR、HIPAA或行业特定法规。

网络独立性:Ollama不依赖外部互联网连接或第三方服务可用性,适合互联网接入受限或可靠性至关重要的关键基础设施。

了解Ollama部署选项

将Ollama与ThingsBoard集成的方式很大程度上取决于您当前的部署架构。下面介绍Ollama如何适配最常见的ThingsBoard部署模式。

单机单体部署

若您在单台服务器(如EC2实例)上以单一服务运行ThingsBoard,Ollama可作为附加服务直接部署在同一台机器上。适用于:

  • 服务器具备GPU能力(推荐以保证可接受的性能)
  • 有足够内存和CPU同时运行两个服务
  • AI工作负载适中,无需专用硬件

在此场景中,Ollama与ThingsBoard并行运行,通过localhost连接通信,部署简单且集中。

单机Docker Compose部署

对于在集群模式(微服务)下使用Docker Compose的ThingsBoard部署,可通过两种方式添加Ollama:

  • 作为Docker容器:在现有的docker-compose.yml中添加Ollama,使其成为容器栈的一部分。注意,此方式可能需要额外配置以通过Docker启用GPU支持。
  • 作为系统服务:在宿主机上直接安装Ollama,以常规Linux服务运行。此方式在安装时通常会自动配置GPU支持,更容易获得硬件加速。

两种方式均适用于此类部署,但系统服务安装通常开箱即可获得GPU访问。

Kubernetes集群部署

在Kubernetes环境中,建议在支持GPU的独立节点池上运行Ollama。此方式具有以下优势:

  • 可扩展性:Kubernetes可轻松扩展Ollama部署以满足需求。随着AI工作负载增长,可向节点池添加支持GPU的节点,Kubernetes会自动在可用资源之间分布Ollama pod。这样可独立于ThingsBoard基础设施扩展AI能力。
  • 安全性:Kubernetes提供多种功能保护Ollama部署,包括控制pod间流量的网络策略、强制最佳实践的安全标准,以及通过TLS终止和认证管理外部访问的ingress控制器。
  • 复杂性:请注意,Kubernetes部署的搭建和维护较为复杂。需要配置Nvidia GPU operator等组件以访问GPU,为pod调度设置合适的node selectors或taints/tolerations,并管理资源配额和限制。这需要扎实的Kubernetes经验。

远程Ollama部署

或许最灵活的方式是在与ThingsBoard部署完全分离的基础设施上运行Ollama。在此模式中:

  • Ollama运行在针对AI工作负载优化的专用支持GPU的服务器上
  • ThingsBoard通过HTTP/HTTPS向远程Ollama实例发起请求

这种职责分离使您能够独立于IoT平台扩展AI基础设施,并针对各自工作负载进行优化。

了解认证要求

需注意:Ollama本身不包含内置认证机制。该软件设计追求快速简单,将安全实现交给部署架构负责。

这意味着在无额外安全层的情况下,任何能访问Ollama端点的人都可以自由使用。根据部署场景,这会产生不同程度的关注:

认证至关重要时:

  • Ollama暴露给不受信任网络或互联网
  • 多个团队或项目共享同一Ollama实例
  • 合规要求规定必须进行访问控制
  • 需要追踪或限制使用

认证可能不那么关键时:

  • Ollama运行在完全可信的隔离网络中(例如无外部访问Ollama的Docker Compose或Kubernetes集群)
  • 仅ThingsBoard有网络访问Ollama端点的权限
  • 您的基础设施已提供网络级安全

即使在可信网络场景中,实施认证也能提供纵深防御,并实现更好的访问控制和审计。

ThingsBoard对Ollama的认证支持

考虑到对灵活安全选项的需求,ThingsBoard在连接Ollama端点时提供三种认证方式:

None(无认证)

此选项向Ollama端点发出未认证请求。尽管可能看似不安全,但适用于特定场景:

  • Ollama与ThingsBoard在同一服务器上运行,仅localhost访问
  • 网络级安全(防火墙、VPN)已将Ollama端点隔离
  • 处于开发或测试环境

使用此选项时,您依赖网络架构和基础设施控制来保护Ollama的访问。

Basic Authentication(用户名和密码)

HTTP Basic认证使用用户名和密码凭据提供简单的安全层。使用此方式时,ThingsBoard将凭据以Base64编码并以Basic <encoded-credentials>形式放入Authorization header。

此方式:

  • 实现和理解简单
  • 适合小团队或单用户场景
  • 需要凭据管理(密码轮换、安全存储)

重要:使用Basic认证时请始终使用HTTPS,确保凭据在传输中加密,不会以明文在网络中发送。

Token Authentication(Bearer Token/API Key)

基于Token的认证使用API key(bearer token)进行认证。使用此方式时,ThingsBoard以Bearer <your-token>形式在Authorization header中传递token。

此方式:

  • 对使用过云AI服务的人很熟悉
  • 无需更换密码即可轻松进行凭据轮换
  • 支持为不同应用或环境使用多个token
  • 与反向代理能力结合可实现细粒度访问控制

重要:使用Token认证时请始终使用HTTPS,确保API key在传输中加密,不会以明文在网络中发送。

为Ollama设置认证

若需要为Ollama部署实施Basic或Token认证,我们提供了使用Nginx作为带认证的反向代理的配置指南。该指南是认证实现入门的参考,涵盖Docker Compose下两种认证方式的配置,可在此基础上根据您的环境进行定制和扩展。

选择适合的认证方式

选择何种认证方式取决于您的具体部署场景:

在以下情况使用”None”:

  • Ollama和ThingsBoard在同一服务器上通过localhost通信
  • 您的网络架构已提供完全隔离

在以下情况使用”Basic Authentication”:

  • 希望尽量简化用户管理
  • 团队较小或只有单用户访问
  • 已正确配置HTTPS

在以下情况使用”Token Authentication”:

  • 希望与AI行业标准一致
  • 多个应用或团队将访问Ollama
  • 需要支持无中断的凭据轮换
  • 需要更好的访问审计追踪
  • 团队已熟悉API key管理

对于大多数生产部署,尤其是远程Ollama场景,Token认证在安全性和可用性之间取得最佳平衡。

在ThingsBoard中配置Ollama

Ollama部署完成并(可选)配置认证后,将其连接到ThingsBoard较为直接。您可通过ThingsBoard界面将Ollama配置为AI模型provider。

访问配置表单

按照向 ThingsBoard 添加 AI 模型的说明,在ThingsBoard中进入AI模型配置区域。这将打开AI模型配置表单,您可在其中添加Ollama端点。

配置参数

Ollama配置表单包含以下关键设置:

Provider:从AI provider下拉框中选择 “Ollama”。

Base URL:Ollama实例的HTTP/HTTPS端点地址。示例:

  • http://localhost:11434 - 同一服务器上本地运行的Ollama
  • http://192.168.1.100:8880 - 您网络中另一台服务器上的Ollama
  • https://ollama.yourdomain.com - 带HTTPS反向代理后的Ollama

Authentication:从三种选项中选择一种:

  • None:不使用认证。ThingsBoard将直接向Ollama端点发送未认证请求。

  • Basic:使用用户名和密码的HTTP Basic认证。
    • Username:认证用户名
    • Password:认证密码
  • Token:使用API key的Bearer token认证。
    • Token:您的API key或bearer token

Model ID:要使用的具体Ollama模型(如 llama3:8bmistral:7bgemma3:1b)。应与已拉取到Ollama实例中的模型完全一致。

Temperature、Top P、Top K、Maximum Output Tokens:这些参数控制模型的响应行为,各AI provider通用。请根据您的用例要求进行配置。

Context Length:该关键设置决定单次请求中模型可处理的上下文(对话历史、系统提示、输入数据)量。

理解Context Length

在使用Ollama时,Context length值得特别关注,因为它会显著影响模型能力和服务器资源利用。

Context length(也称context window)是模型在单次请求中可处理的token总数,包括系统提示、输入数据和模型生成的响应。需将该值设得足够大,以容纳所有输入和预期输出而不丢失数据。

内存考虑: 与基础设施自动扩展的云服务不同,使用Ollama时您管理的是固定硬件资源。Context length会显著影响GPU内存使用 — 更大的context window需要大得多的内存。确切的对应关系因模型大小和架构而异,但影响相当大。

确定合适的值: 最适合您用例的context length最好通过实证确定。先根据典型输入大小加预期输出长度做合理估计,再根据以下情况调整:

  • 请求是否被截断
  • GPU上的实际内存使用
  • 性能和响应时间

若发现数据被截断,增大context length。若内存使用过高或性能不佳,考虑减小context length或使用更小的模型。

测试配置

填写所有必填字段后,点击表单底部的 Check connectivity 按钮。测试成功将显示绿色勾选,确认ThingsBoard可与Ollama端点通信且指定模型可用。

在ThingsBoard中使用Ollama

有关在ThingsBoard中使用AI模型(包括Ollama)的实战示例,请参阅我们的AI预测性维护指南。该指南展示如何将 AI用于异常检测和预测性维护场景,展示IoT系统中AI集成的实际应用。