Chat Ollama docker部署及运行 本地大语言模型+本地知识库搭建 强烈推荐

背景介绍

Ollama 是目前最流行的大模型本地化工具之一。
Ollama 支持一系列开源大模型,包括主流的聊天模型和文本嵌入模型(Embedding Models)等。 ChatOllama 是基于 Ollama 的 Web 应用,它可以让用户直接在浏览器中使用 Ollama。ChatOllama 支持多种大模型,包括 Ollama 支持的所有大模型,以及 OpenAI,Anthropic 的大模型。
ChatOllama 的作者是 B 站的一名 up @ 五里墩茶社
他经常发布一些关于 LLM 的教程,学到很多,感谢!
本文档是结合他的视频和 GitHub 文档做的实践和翻译。版权归他,侵权就删。
本文将使用 Docker 一键运行 ChatOllama,让用户可以在本地快速部署 ChatOllama。

ChatOllama 用户手册
https://github.com/sugarforever/chat-ollama?tab=readme-ov-file#users-guide
Ollama https://ollama.ai

下载 docker

Install Docker Desktop on Windows | Docker Docs
我用的 Windows 系统

Ollama

Ollama https://ollama.ai
Ollama GitHub 仓库 ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models. (github.com)

选择 windows 预览版傻瓜式安装不多赘述,是很好的开源模型库,可以通过 GitHub 查看如何使用,为了方便学习,我摘录如下:

目前已入驻模型

ollama.com/library

ModelParametersSizeDownload
Llama 27B3.8GBollama run llama2
Mistral7B4.1GBollama run mistral
Dolphin Phi2.7B1.6GBollama run dolphin-phi
Phi-22.7B1.7GBollama run phi
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
Llama 2 13B13B7.3GBollama run llama2:13b
Llama 2 70B70B39GBollama run llama2:70b
Orca Mini3B1.9GBollama run orca-mini
Vicuna7B3.8GBollama run vicuna
LLaVA7B4.5GBollama run llava
Gemma2B1.4GBollama run gemma:2b
Gemma7B4.8GBollama run gemma:7b
注意下载根据自己的内存来决定,推荐普通电脑用 qwen 1.8 b

查询已安装的模型

ollama list

运行模型 windows 直接运行软件即可默认开机启动

ollama serve

配置 docker-compose.yaml

这个文件在 GitHub 仓库中有,找个位置放着。

version: '3.1'
services:chromadb:image: chromadb/chromaports:- "8000:8000"restart: alwaysvolumes:- chromadb_data:/chroma/.chroma/indexchatollama:environment:- CHROMADB_URL=http://chromadb:8000- DATABASE_URL=file:/app/sqlite/chatollama.sqlite- REDIS_HOST=redisimage: 0001coder/chatollama:latestports:- "3000:3000"pull_policy: alwaysrestart: alwaysvolumes:- ~/.chatollama:/app/sqliteredis:image: redis:latestrestart: alwaysvolumes:- redis_data:/datavolumes:chromadb_data:redis_data:

配置解释:
这个文件定义了三个服务(services):chromadbchatollamaredis,以及两个数据卷(volumes):chromadb_dataredis_data

  • chromadb
    • 使用镜像 chromadb/chroma,并映射端口将宿主机的 8000 端口与容器的 8000 端口进行绑定。
    • 设置为始终重启 (restart: always),意味着如果容器意外终止,则会自动重启它。
    • 挂载数据卷 - chromadb_data:/chroma/.chroma/index,这意味着容器内的 /chroma/.chroma/index 目录会被持久化存储在宿主机上的 chromadb_data 卷中。
  • chatollama
    • 设置环境变量,其中 CHROMADB_URL 指向 chromadb 服务,DATABASE_URL 表示使用 SQLite 数据库存储,并指向容器内部的 /app/sqlite/chatollama.sqlite 文件,REDIS_HOST 设置为 redis 服务名称。
    • 使用镜像 0001coder/chatollama:latest,并在宿主机上通过端口映射暴露应用在 3000 端口 (ports: - "3000:3000").
    • 同样设置为始终重启,并且拉取策略是始终获取最新镜像 (pull_policy: always)。
    • 挂载宿主机目录 ~/.chatollama 到容器内 /app/sqlite,用于持久化聊天应用相关的SQLite数据库文件。
  • redis
    • 使用 Redis 的最新镜像。
    • 设置为始终重启,并挂载数据卷 - redis_data:/data,将容器内的 Redis 数据持久化到宿主机的 redis_data 卷。

运行配置文件

在所在文件夹按住 CTRL+右键,呼出 cmd 运行以下代码

docker compose up

系统自动按照配置文件运行。
image.png

初始化数据库

程序运行完后,同样在在所在文件夹按住 CTRL+右键,呼出 cmd 运行以下代码初始化数据库。

docker compose exec chatollama npx prisma migrate dev

image.png

至此已经完成代码拉取。
浏览器输入 localhost: 3000 端口。就可以看到程序正常运行。

修改 ollama 窗口地址

由于 ChatOllama 在 Docker 容器内运行,如果您的 Ollama 服务器在本地以默认端口运行,请在设置中将 Ollama 服务器设置为 http://host.docker.internal:11434
image.png

本地知识库搭建准备

使用知识库时,我们需要一个有效的嵌入模型。它可以是 Ollama 下载的模型之一,也可以是从第三方服务提供商(例如 OpenAI)下载的模型之一。

可以在ollama下载模型以进行嵌入。 nomic-embed-text

可以在模型页面 http://localhost:3000/models 上执行此操作,如果您使用的是 Docker,则可以通过以下 CLI 执行此操作。

# In the folder of docker-compose.yaml$ docker compose exec ollama ollama pull nomic-embed-text:latest

当前实现的效果

该应用为开源程序,技术路线 ollama+JavaScript+Nuxt 3+RAG+LangChain+Redis+chromadb
RAG Retrieval-Augmented Generation 检索增强生成 是一种结合检索与生成技术的自然语言处理(NLP)架构。
Nuxt 3 是一个基于 Vue. Js 框架的静态网站生成器和应用框架。
基于 LangChain 高级 RAG 技术的本地知识库。它采用了 Chroma 作为向量存储,Redis 作为文档存储

推荐使用 Nomic-embed-text: latest 模型实现
目前实现的功能:

  1. 查询及下载 ollama 内模型
  2. 调用本地开源大预言模型
  3. 建立本地知识库,进行 RAG 检索
  4. 通过 api key 调用 chatgpt 等模型

我是纯新手,只是做好物分享,有什么不对的地方请指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁电气数据新价值:SolidWorks Electrical助力企业转型

在信息化、数字化的时代,电气数据库已成为企业不可或缺的核心资产。它以其独特的功能和优势,助力企业在激烈的市场竞争中脱颖而出,实现数字化转型的跨越式发展。 SolidWorks Electrical电气数据库具备强大的数据整合能力。它能够将企业内部各…

Linux 学习之路 - 进程篇 - PCB介绍1-标识符

目录 一、基础的命令 <1> ps axj 命令 <2> top 命令 <3> proc 目录 二、进程的标识符 <1>范围 <2>如何获取标识符 <3>bash进程 三、创建进程 一、基础的命令 前面介绍了那么多&#xff0c;但是我们没有观察到进程相关状态&#x…

机器人码垛机的技术特点与应用

随着科技的飞速发展&#xff0c;机器人技术正逐渐渗透到各个行业领域&#xff0c;其中&#xff0c;机器人码垛机在物流行业的应用尤为引人瞩目。它不仅提高了物流效率&#xff0c;降低了成本&#xff0c;更在改变传统物流模式的同时&#xff0c;为行业发展带来了重大的变革。 一…

MQ死信队列:面试题

所谓的死信队列只不过是我们自己定义的一个队列&#xff0c;注意对于这个队列只能人工干预 面试题&#xff1a;你们是如何保证消息不会丢失的 1&#xff0c;什么是死信 在RabitMQ中充当主角的就是消息&#xff0c;在不同场景下&#xff0c;消息会有不同地表现。 死信就是在…

SpringBoot学习笔记三-原理分析

SpringBoot学习笔记三-原理分析 SpringBoot自动装配1.1 案例1.2 通过注解方式管理Bean1.3 小结1.4 Enable注解1.5 Import注解1.5.1 ImportSelector实现类1.5.2 导入ImportBeanDefinitionRegistrar 1.5 EnableAutoConfiguration1.6 案例 SpringBoot自动装配 当再pom.xml中导入对…

活动发布会新闻通稿如何写?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 撰写活动发布会的新闻通稿需要遵循一定的结构和内容要点&#xff0c;以确保信息的准确性、完整性和吸引力。以下是撰写活动发布会新闻通稿的基本步骤和建议&#xff1a; 标题&#xff1…

【智能算法】长鼻浣熊优化算法(COA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2023年&#xff0c;M Dehghani等人受到长鼻浣熊自然行为启发&#xff0c;提出了长鼻浣熊优化算法&#xff08;Coati Optimization Algorithm&#xff0c;COA&#xff09;。 2.算法原理 2.1算法思想…

C语言 函数——函数封装与程序的健壮性

目录 函数封装&#xff08;Encapsulation&#xff09; 如何增强程序的健壮性&#xff1f; 如何保证不会传入负数实参&#xff1f; 函数设计的基本原则 函数封装&#xff08;Encapsulation&#xff09; 外界对函数的影响——仅限于入口参数 函数对外界的影响——仅限于一个…

C++:内联函数inline,auto关键字,基于范围的for循环,nullpter

文章目录 1.内联函数 inline1.1 概念1.2查看方法1.3 特性1.4 题外话&#xff1a;宏 2.auto关键字2.1 auto 简介2.2 auto使用细则 3. 基于范围的for循环4. nullpter 1.内联函数 inline 1.1 概念 inline int Add(int x, int y) {return x y; } int main(){int ret 0;ret Add…

Vue input密码输入框自定义密码眼睛icon

我们用的饿了么UI组件库里,密码输入框的icon是固定不变的,如下所示: 点击"眼睛"这个icon不变,现在需求是UI给的设计稿里,密码输入框的"眼睛"有如下两种: 代码如下: <el-input:key="passwordType"ref="password"

重装系统前备份笔记

一、点查看自定义快捷键可以定义一些快速启动方式 然后用不习惯的快捷键也能在这里改 二、android studio 快捷键导出备份 导入方法&#xff1a; android studio &#xff0d;>file->import setting ->选择jar包即可 导出studio的设置方法&#xff1a; android …

假期别闲着:REST API实战演练之创建Rest API

1、创建实体类&#xff0c;模拟实体对象 创建一个类&#xff0c;模拟数据数据库来存储数据&#xff0c;这个类就叫Person。 其代码如下&#xff1a; package com.restful;public class Person {private String name;private String about;private int birthYear;public Perso…

【jQuery】jQuery框架

目录 1.jQuery基本用法 1.1选择器 1.2jQuery对象 1.3事件绑定 1.4链式编程 1.5过滤方法 1.6样式操纵 1.6属性操纵 1.7操作value 1.8查找方法 1.9类名操纵 1.10事件进阶 1.11触发事件 1.12window事件绑定 2.节点操作与动画 2.1获取位置 2.2滚动距离 2.3显示/隐…

LangChain-15 Manage Prompt Size 管理上下文大小,用Agent的方式询问问题,并去百科检索内容,总结后返回

背景描述 这一节内容比较复杂&#xff1a; 涉及到使用工具进行百科的检索&#xff08;有现成的插件&#xff09;有AgentExecutor来帮助我们执行后续由于上下文过大&#xff0c; 我们通过计算num_tokens&#xff0c;来控制我们的上下文 安装依赖 pip install --upgrade --qu…

「每日跟读」英语常用句型公式 第7篇

「每日跟读」英语常用句型公式 第7篇 1. He might as well ___ 其实可以___(也无妨) We might as well walk to school (我们其实可以走去学校) We might as well give up (我们其实可以放弃) You might as well go home (你其实可以回家) You might as well listen to h…

数据库设计说明书(Word模板)

2 数据库环境说明 3 数据库的命名规则 4 逻辑设计 5 物理设计 5.1 表汇总 5.2 表结构设计 6 数据规划 6.1 表空间设计 6.2 数据文件设计 6.3 表、索引分区设计 6.4 优化方法 7 安全性设计 7.1 防止用户直接操作数据库 7.2 用户帐号加密处理 7.3 角色与权限控制 8 数据库管理与维…

标准C库文件操作

open 系列API 和 fopen系列API的区别 1.来源: -open 是UNIX系统调用函数(包括LINUX系统)&#xff0c;返回的是文件描述符 -fopen是ANSIC标准的C语言库函数&#xff0c;在不同系统重调用不同内核的API 2.移植性: fopen 是C标准函数&#xff0c;具有良好的移植性&#xff1b; 而…

photomaker:customizing realistic human photos via stacked id embedding

PhotoMaker: 高效个性化定制人像照片文生图 - 知乎今天分享我们团队最新的工作PhotoMaker的技术细节。该工作开源5天Githubstar数已过6千次&#xff0c;已列入Github官方Trending榜第一位&#xff0c;PaperswithCode热度榜第一位&#xff0c;HuggingFace Spaces趋势榜第一位。项…

Vue2 —— 学习(四)

一、收集表单数据 &#xff08;一&#xff09;介绍 前面其实已经 学过了 v-model 双向绑定事件&#xff0c;能获取到表单中的内容到 vm 实例对象中 但是前面只是收集文本框&#xff0c;下面学习一下 各种类型表单数据收集 &#xff08;单/多 选&#xff0c;下拉框&#xff0…

关闭TED报ORA-28365: wallet is not open

关闭钱包报 实际状态是open状态&#xff1a; V$ENCRYPTION_WALLET.STATUS列如果不为CLOSED&#xff0c;重启后也不能是CLOSED&#xff0c;或者清理完成后&#xff0c;再次初始化报“Master Key已存在”错误。 获取UNDO表空间大小 SQL> show parameter undo_tablespace NA…