以下是一个详细的本地部署教程,整合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