deepseek本地部署基于Linux系统(Ubuntu 22.04)Ollama、Cherry Studio和本地知识库系统

以下是一个详细的本地部署教程,整合Ollama、Cherry Studio和本地知识库系统。本教程基于Linux系统(Ubuntu 22.04),Windows系统可通过WSL2实现类似操作。


一、环境准备

1. 硬件要求
  • CPU: 推荐Intel i7及以上
  • 内存: 32GB及以上
  • 存储: 至少50GB可用空间
  • GPU: 可选(NVIDIA显卡推荐RTX 3090+)
2. 基础依赖安装
bash 复制代码
# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y docker.io docker-compose python3-pip git curl

# 安装NVIDIA驱动(如有GPU)
sudo apt install -y nvidia-driver-535 nvidia-container-toolkit
sudo systemctl restart docker

二、Ollama部署

1. 安装Ollama
bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable ollama
sudo systemctl start ollama
2. 下载DeepSeek模型
bash 复制代码
# 查看可用模型列表
ollama list

# 下载DeepSeek模型(示例使用7B版本)
ollama pull deepseek-ai/deepseek-llm-7b-chat

# 启动模型服务(默认端口11434)
ollama serve

三、CherryML Studio部署

1. 通过Docker安装
bash 复制代码
mkdir cherryml && cd cherryml

# 创建docker-compose.yml
cat > docker-compose.yml <<EOF
version: '3.8'

services:
  cherryml:
    image: registry.cherryml.org/cherryml/cherryml:latest
    ports:
      - "8000:8000"
    volumes:
      - ./data:/data
    environment:
      - OLLAMA_BASE_URL=http://host.docker.internal:11434
EOF

# 启动服务
docker-compose up -d
2. 验证安装

访问 http://localhost:8000,应看到Cherry Studio的Web界面


四、本地知识库集成

1. 安装RAG框架
bash 复制代码
pip install langchain chromadb sentence-transformers
2. 创建知识库目录结构
bash 复制代码
mkdir knowledge_base && cd knowledge_base
mkdir -p data/raw data/processed vector_store
3. 知识库处理脚本(process.py
python 复制代码
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma

# 加载文档(支持PDF/TXT/MD)
loader = DirectoryLoader('data/raw', glob="**/*.txt")
docs = loader.load()

# 文档切分
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(docs)

# 创建向量库
embedding = HuggingFaceEmbeddings(model_name="BAAI/bge-small-en-v1.5")
vector_db = Chroma.from_documents(
    documents=splits,
    embedding=embedding,
    persist_directory="vector_store"
)
vector_db.persist()
4. 运行处理脚本
bash 复制代码
# 将原始文档放入data/raw目录后执行
python process.py

五、系统集成

1. 创建集成脚本(query.py
python 复制代码
from langchain.chains import RetrievalQA
from langchain.llms import Ollama
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings

# 初始化组件
llm = Ollama(base_url="http://localhost:11434", model="deepseek-llm-7b-chat")
embedding = HuggingFaceEmbeddings(model_name="BAAI/bge-small-en-v1.5")
vector_db = Chroma(persist_directory="vector_store", embedding_function=embedding)

# 创建问答链
qa_chain = RetrievalQA.from_chain_type(
    llm,
    retriever=vector_db.as_retriever(),
    chain_type="stuff"
)

# 执行查询
response = qa_chain.run("你的问题内容")
print(response)
2. 通过Cherry Studio API调用
python 复制代码
import requests

CHERRY_API = "http://localhost:8000/api/v1/chat"

payload = {
    "model": "deepseek",
    "messages": [{
        "role": "user",
        "content": "基于知识库回答:你的问题"
    }],
    "knowledge_base": True
}

response = requests.post(CHERRY_API, json=payload)
print(response.json())

六、系统优化

1. 性能优化配置
bash 复制代码
# Ollama配置优化(编辑/etc/systemd/system/ollama.service)
[Service]
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_KEEP_ALIVE=5m"
2. 安全设置
bash 复制代码
# 配置防火墙规则
sudo ufw allow 11434/tcp
sudo ufw allow 8000/tcp

七、常见问题排查

  1. 模型加载失败

    • 检查显存容量:nvidia-smi
    • 尝试量化版本模型:ollama pull deepseek-7b-chat:q4_0
  2. 知识库检索不准

    • 调整文本切分参数(chunk_size/chunk_overlap)
    • 更换embedding模型:model_name="BAAI/bge-large-en-v1.5"
  3. API连接问题

    • 验证服务状态:

      bash 复制代码
      curl http://localhost:11434/api/tags
      curl http://localhost:8000/api/v1/models

八、扩展功能

  1. 自动化更新知识库
bash 复制代码
# 创建watchdog监控目录变化
pip install watchdog
nohup python -c "from watchdog.observers import Observer; from watchdog.events import FileSystemEventHandler; import os; class Handler(FileSystemEventHandler): def on_modified(self, event): os.system('python process.py'); observer = Observer(); observer.schedule(Handler(), path='data/raw', recursive=True); observer.start(); observer.join()" &
  1. 多模型管理
    在Cherry Studio配置文件中添加:
yaml 复制代码
model_providers:
  - name: ollama
    type: ollama
    config:
      base_url: "http://localhost:11434"
    models:
      - name: deepseek-llm-7b-chat
      - name: llama2-13b

本教程可实现:

  • 本地运行70亿参数的DeepSeek模型
  • 通过Cherry Studio提供Web界面
  • 支持基于本地文档的问答系统
  • 每日可处理约50,000 tokens的查询请求(RTX 3090环境)

建议定期检查各组件GitHub仓库的更新:

相关推荐
Johny_Zhao3 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8504 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
一心0925 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上5 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
典学长编程6 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9987 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
烛阴8 小时前
简单入门Python装饰器
前端·python
好开心啊没烦恼8 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
面朝大海,春不暖,花不开8 小时前
使用 Python 实现 ETL 流程:从文本文件提取到数据处理的全面指南
python·etl·原型模式