以下是一个详细的本地部署教程,整合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
七、常见问题排查
-
模型加载失败
- 检查显存容量:
nvidia-smi
- 尝试量化版本模型:
ollama pull deepseek-7b-chat:q4_0
- 检查显存容量:
-
知识库检索不准
- 调整文本切分参数(chunk_size/chunk_overlap)
- 更换embedding模型:
model_name="BAAI/bge-large-en-v1.5"
-
API连接问题
-
验证服务状态:
bashcurl http://localhost:11434/api/tags curl http://localhost:8000/api/v1/models
-
八、扩展功能
- 自动化更新知识库
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()" &
- 多模型管理
在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仓库的更新:
- Ollama: https://github.com/ollama/ollama
- CherryML: https://github.com/cherryml/cherry
- LangChain: https://github.com/langchain-ai/langchain