工具
- ollama:用于下载和管理模型
- DeepSeek-R1:是要使用的 LLM模型
- Nomic-Embed-Text向量模型: 用于将文本库进行切分,编码,转换进入向量库
一、启动 ollama
1.拉取镜像
docker pull ollama/ollama:0.5.13-rc6
2.配置 Docker 使用 GPU
1) 安装 nvidia-container-toolkit
若使用 GPU,使用的是 Nvidia GPU,需安装 nvidia-container-toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt-get update
apt-get install -y nvidia-container-toolkit
2) 配置 Docker 使用 Nvidia driver
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
3.启动容器
1) docker run 启动
只使用 CPU
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama_1 ollama/ollama:0.5.13-rc6
若使用 GPU
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama_1 ollama/ollama:0.5.13-rc6
2) docker compose 启动
docker-compose.yml
version: "3"
services:
ollama1:
image: ollama/ollama:0.5.13-rc6
container_name: ollama_1
restart: no
ports:
- 11434:11434
volumes:
- "./.ollama:/root/.ollama"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
二、安装 deepseek-r1
1.安装 deepseek-r1:7b
ollama run deepseek-r1:7b
2.安装 nomic-embed-text
nomic-embed-text 模型是一个强大的嵌入式文本处理工具
ollama pull nomic-embed-text
3.查看模型
root@509d39be4053:/# ollama list
NAME ID SIZE MODIFIED
nomic-embed-text:latest 0a109f422b47 274 MB 26 hours ago
deepseek-r1:7b 0a8c26691023 4.7 GB 26 hours ago
deepseek-r1:1.5b a42b25d8c10a 1.1 GB 26 hours ago
root@509d39be4053:/# ollama ps
NAME ID SIZE PROCESSOR UNTIL
deepseek-r1:7b 0a8c26691023 6.1 GB 58%/42% CPU/GPU 4 minutes from now
4.构建本地知识库
初期接触LLM即大语言模型,觉得虽然很强大,但是有时候AI会一本正经的胡说八道,这种大模型的幻觉对于日常使用来说具有很大的误导性,特别是如果我们要用在生成环境下,由于缺少精确性而无法使用。 为什么会造成这种结果那,简单来说就是模型是为了通用性设计的,缺少相关知识,所以导致回复的结果存在胡说八道的情况,根据香农理论,减少信息熵,就需要引入更多信息。
从这个角度来说,就有两个途径,一是重新利用相关专业知识再次训练加强模型,或进行模型微调; 模型训练的成本是巨大的,微调也需要重新标记数据和大量的计算资源,对于个人来说基本不太现实; 二是在问LLM问题的时候,增加些知识背景,让模型可以根据这些知识背景来回复问题;后者即是知识库的构建原理了。
有个专门的概念叫RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合检索技术和生成模型的技术框架,旨在提升模型生成内容的准确性和相关性。其核心思想是:在生成答案前,先从外部知识库中检索相关信息,再将检索结果与用户输入结合,指导生成模型输出更可靠的回答。
简单概述,利用已有的文档、内部知识生成向量知识库,在提问的时候结合库的内容一起给大模型,让其回答的更准确,它结合了信息检索和大模型技术。
这样做有什么好处那?
- 由于日常的业务知识是保存到本地的,所以减少信息泄露的风险;
- 由于提问结合了业务知识,所以减少了模型的幻觉,即减少了模型的胡说八道;
- 模型的回复结合了业务知识和实时知识,所以实时性可以更好;
- 不用重新训练模型,微调模型降低了成本;
三、ollama 可视化
1.page-assist
可安装 google 浏览器插件,下载地质 https://github.com/n4ze3m/page-assist/releases
Ollama 设置:
RAG 设置:
使用:
四、GPU 使用情况
使用 nvidia-smi 查看 GPU 使用
zxm@zxm-pc:~$ nvidia-smi
Tue Mar 4 23:29:00 2025
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce GTX 1060 3GB Off | 00000000:01:00.0 On | N/A |
| 35% 35C P0 29W / 120W | 266MiB / 3072MiB | 1% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1781 G /usr/lib/xorg/Xorg 149MiB |
| 0 N/A N/A 1927 G /usr/bin/gnome-shell 30MiB |
| 0 N/A N/A 73461 G ...seed-version=20250228-151446.092000 82MiB |
+---------------------------------------------------------------------------------------+
ollama 使用 GPU
zxm@zxm-pc:~$ nvidia-smi
Tue Mar 4 23:31:21 2025
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce GTX 1060 3GB Off | 00000000:01:00.0 On | N/A |
| 35% 43C P2 78W / 120W | 2339MiB / 3072MiB | 18% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1781 G /usr/lib/xorg/Xorg 149MiB |
| 0 N/A N/A 1927 G /usr/bin/gnome-shell 31MiB |
| 0 N/A N/A 73461 G ...seed-version=20250228-151446.092000 78MiB |
| 0 N/A N/A 75704 C /usr/bin/ollama 2074MiB |
+---------------------------------------------------------------------------------------+