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/chroma
    ports:
      - "8000:8000"
    restart: always
    volumes:
      - chromadb_data:/chroma/.chroma/index

  chatollama:
    environment:
      - CHROMADB_URL=http://chromadb:8000
      - DATABASE_URL=file:/app/sqlite/chatollama.sqlite
      - REDIS_HOST=redis
    image: 0001coder/chatollama:latest
    ports:
      - "3000:3000"
    pull_policy: always
    restart: always
    volumes:
      - ~/.chatollama:/app/sqlite

  redis:
    image: redis:latest
    restart: always
    volumes:
      - redis_data:/data

volumes:
  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 等模型

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

<think>好的,我现在要处理用户的问题,关于如何在本地部署Ollama模型并集成知识库。首先,我需要回忆一下之前提供的引用内容,看看里面有没有相关的步骤和方法。用户提到了引用1、2、3,都是关于本地部署大模型和知识库集成的。 首先,用户的问题涉及到Ollama本地部署知识库集成。引用1提到了在本地部署大模型和利用RAG构建知识库,引用2详细介绍了使用Dify与Ollama和DeepSeek结合搭建知识库,引用3提到了Ollama与LobeChat、AnythingLLM的结合。这些应该都是关键信息。 接下来,我需要整理出步骤。根据引用中的内容,Ollama部署通常是通过Docker或者直接下载安装包。例如,引用2提到需要安装Docker Desktop和Ollama,然后拉取模型。这可能是一个步骤。然后,集成知识库可能需要用到像LangChain这样的框架,或者Dify这样的开源项目,如引用2和3所述。 然后,知识库的构建通常涉及文档加载、文本分块、向量化存储和RAG应用开发。引用1提到利用RAG,而引用3提到结合个人资料构建知识库。可能还需要向量数据库,比如Chroma,这在引用3的AnythingLLM中有提到。 另外,引用2中的Dify项目可以集成Ollama模型,并配置知识库,用户上传文档后,Dify会处理后续的流程。这可能是一个关键点,需要详细说明如何配置Dify与Ollama的连接,以及知识库的上传和处理步骤。 可能还需要注意模型的选择,比如DeepSeek或其他适合的模型,如何通过Ollama来管理这些模型。引用2中提到拉取模型命令,如`ollama pull deepseek-chat`,这需要包含在部署步骤中。 另外,引用3提到了LobeChat作为前端界面,配合AnythingLLM管理知识库,这可能也是一个可选方案,用户可能有兴趣了解不同的工具组合。 需要确保步骤清晰,分阶段说明:环境准备、模型部署知识库集成、应用开发等。同时,要检查是否有遗漏的细节,比如Docker的安装、Ollama的基本命令、如何验证模型是否运行正常等。 还要注意用户可能遇到的问题,比如依赖项安装、端口配置、文档格式支持等,是否需要给出常见问题解决方法?不过用户的问题主要是方法,可能不需要深入排错,但可以提到注意事项,比如确保Ollama服务运行,文档格式处理等。 总结起来,回答的结构应该是先介绍Ollama部署步骤,然后如何集成知识库,使用不同的工具如Dify、LangChain、AnythingLLM等,最后给出相关的问题建议。需要引用对应的引用来源,比如引用2中的Dify方法,引用3中的LobeChat和AnythingLLM方案。 需要确保使用正确的中文术语,比如“向量数据库”、“文本分块”、“RAG应用”等,并且按照用户的要求,行内公式用$...$,独立公式用$$...$$,但当前问题可能不涉及数学公式,但如果有的话需要注意格式。 最后生成相关问题,可能需要包括性能优化、模型选择、工具比较、数据处理技巧等,基于用户之前的示例和相关内容。 现在,需要将以上思考整理成结构化的回答,分步骤说明,引用对应的引用来源,并确保信息准确。</think>### 本地部署Ollama模型及集成知识库方法 #### 一、Ollama本地部署步骤 1. **环境准备** - 安装Docker Desktop(Windows/macOS)或直接通过命令行安装Ollama(Linux)[^2]。 - 下载Ollama安装包(支持多平台):访问[Ollama官网](https://ollama.ai/)选择对应系统版本。 2. **运行Ollama服务** - 启动Ollama后,通过命令行拉取所需大模型。例如拉取`deepseek-chat`模型: ```bash ollama pull deepseek-chat ``` - 验证服务是否正常运行: ```bash ollama list # 查看已安装模型 ollama run deepseek-chat # 启动模型交互 ``` 3. **模型管理** - Ollama支持多模型共存,可通过`ollama pull <model-name>`添加新模型(如`llama3`、`mistral`等)[^3]。 --- #### 二、知识库集成方法 ##### 方案1:使用Dify平台(推荐)[^2] 1. **部署Dify服务** - 通过Docker快速启动Dify: ```bash docker run -d --name dify -p 80:3000 langgenius/dify:latest ``` 2. **配置Ollama连接** - 在Dify控制台的`模型供应商`中选择`Ollama`,填写API地址(默认`http://localhost:11434`)。 3. **上传知识库文档** - 支持PDF、TXT、Markdown等格式,Dify会自动执行文本分块、向量化(嵌入模型)和存储(使用PostgreSQL或Chroma向量数据库)。 4. **创建RAG应用** - 在Dify中新建“知识库应用”,关联已上传文档,即可通过对话界面实现基于知识库的问答。 ##### 方案2:LangChain + 自定义开发[^1] 1. **文档处理** ```python from langchain.document_loaders import DirectoryLoader loader = DirectoryLoader('./docs', glob="**/*.pdf") documents = loader.load() ``` 2. **文本分块与向量化** ```python from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter(chunk_size=500) chunks = text_splitter.split_documents(documents) ``` 3. **向量数据库存储** ```python from langchain.vectorstores import Chroma from langchain.embeddings import OllamaEmbeddings vectorstore = Chroma.from_documents(chunks, OllamaEmbeddings(model="nomic-embed-text")) ``` 4. **构建RAG应用** ```python from langchain.chat_models import ChatOllama retriever = vectorstore.as_retriever() qa_chain = RetrievalQA.from_chain_type(llm=ChatOllama(model="deepseek-chat"), retriever=retriever) ``` ##### 方案3:AnythingLLM + LobeChat[^3] 1. **部署AnythingLLM** - 通过Docker启动服务,配置Ollama作为LLM供应商。 2. **导入知识库** - 支持直接上传文档或同步Notion、网页内容。 3. **前端交互** - 使用LobeChat作为聊天界面,通过API连接AnythingLLM服务。 --- #### 三、关键注意事项 1. **硬件要求**:建议至少16GB内存,NVIDIA GPU可提升推理速度(需配置CUDA)。 2. **文档预处理**:复杂格式(如扫描PDF)需先用OCR工具提取文本。 3. **模型选择**:轻量级模型(如`deepseek-chat`)适合普通CPU环境,大参数模型需更高配置。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细节处有神明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值