超详细!DeepSeek本地搭建部署、搭建知识库及智能体教程

超详细!DeepSeek本地搭建部署、搭建知识库及智能体教程

一、引言

在人工智能飞速发展的当下,大模型的应用越来越广泛。DeepSeek作为一款强大的模型,能够在本地进行搭建部署,从而实现个性化的知识库构建以及智能体应用,这为开发者和爱好者提供了极大的便利。本文将以详细的图文步骤,带领大家一步步完成DeepSeek的本地搭建部署、知识库搭建以及智能体的创建,让你轻松掌握这一前沿技术。

二、DeepSeek本地搭建部署

(一)环境准备

  1. 硬件要求:一台具有较强计算能力的电脑,建议配备NVIDIA GPU,如RTX 30系列及以上,以加速模型运行。同时,至少8GB内存,推荐16GB或更高。
  2. 软件要求
    • 操作系统:Windows 10/11或Ubuntu 18.04及以上版本。
    • Python环境:安装Python 3.8及以上版本。可以从Python官网下载对应版本的安装包进行安装,安装过程中记得勾选“Add Python to PATH”选项。
    • CUDA和cuDNN:如果使用NVIDIA GPU,需要安装对应版本的CUDA和cuDNN。CUDA可从NVIDIA官网下载,根据自己的显卡型号和操作系统选择合适的版本。cuDNN需要注册NVIDIA开发者账号后从cuDNN官网下载,下载完成后解压并将文件复制到CUDA安装目录对应的文件夹中。

(二)安装依赖库

  1. 创建一个新的虚拟环境(可选但推荐):
    • 在命令行中输入以下命令安装virtualenv(如果未安装):
pip install virtualenv
- 创建虚拟环境,假设环境名为`deepseek_env`:
virtualenv -p python3.8 deepseek_env
- 在Windows系统中激活虚拟环境:
deepseek_env\Scripts\activate
- 在Ubuntu系统中激活虚拟环境:
source deepseek_env/bin/activate
  1. 安装DeepSeek所需的依赖库。进入项目目录(如果没有项目目录,先创建一个),在该目录下创建一个requirements.txt文件,内容如下:
torch
transformers
sentencepiece

然后在命令行中运行以下命令安装依赖:

pip install -r requirements.txt

安装过程可能需要一些时间,取决于网络速度。

(三)下载DeepSeek模型

  1. 访问DeepSeek官方网站或其官方开源仓库(如在GitHub上),找到模型下载链接。模型文件较大,可能需要耐心等待下载完成。
  2. 将下载好的模型文件解压到项目目录下的一个新文件夹,例如deepseek_model

(四)运行DeepSeek模型

  1. 在项目目录下创建一个Python脚本,例如run_deepseek.py,内容如下:
import torch
from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained('deepseek_model')
model = AutoModel.from_pretrained('deepseek_model')

text = "你好,DeepSeek"
inputs = tokenizer(text, return_tensors='pt')
outputs = model(**inputs)
print(outputs)
  1. 在命令行中运行该脚本:
python run_deepseek.py

如果一切顺利,你将看到模型输出的结果,这表明DeepSeek模型已在本地成功部署运行。

三、搭建知识库

(一)数据收集

  1. 确定知识库的主题,例如是关于技术文档、学术论文还是产品介绍等。
  2. 根据主题收集相关的数据,可以从网站、文档、数据库等多种来源获取。例如,如果是搭建技术知识库,可以从技术论坛、开源项目文档等地方收集文本资料。

(二)数据预处理

  1. 文本清洗:使用Python的re库等工具去除文本中的噪声,如HTML标签、特殊字符、多余的空格等。示例代码如下:
import re

def clean_text(text):
    text = re.sub('<.*?>', '', text)  # 去除HTML标签
    text = re.sub('[^a-zA-Z0-9\s]', '', text)  # 去除特殊字符
    text = re.sub('\s+',' ', text).strip()  # 去除多余空格并修剪字符串
    return text
  1. 文本分割:将长文本分割成合适长度的段落或句子,以便后续处理。可以使用nltk库进行句子分割,示例代码如下:
import nltk
nltk.download('punkt')
from nltk.tokenize import sent_tokenize

def split_text(text):
    sentences = sent_tokenize(text)
    return sentences
  1. 向量化:使用词向量模型(如Word2Vec或FastText)或预训练的语言模型(如BERT)将文本转换为向量表示。这里以sentence-transformers库为例,对文本进行向量化:
from sentence_transformers import SentenceTransformer

model = SentenceTransformer('all-MiniLM-L6-v2')
texts = ["这是一个示例句子", "另一个示例句子"]
embeddings = model.encode(texts)
print(embeddings)

(三)存储知识库

  1. 选择合适的数据库存储向量化后的文本和对应的原始文本。常用的选择有Elasticsearch、Faiss等。这里以Faiss为例进行说明。
  2. 安装Faiss库:
pip install faiss - gpu
  1. 创建Faiss索引并存储数据:
import faiss
import numpy as np

# 假设embeddings是之前生成的文本向量,texts是对应的原始文本
d = embeddings.shape[1]  # 向量维度
index = faiss.IndexFlatL2(d)
index.add(embeddings)

# 可以将原始文本存储在一个列表中,通过索引对应
text_list = texts

这样,知识库就搭建完成,后续可以通过向量检索从知识库中获取相关信息。

四、创建智能体

(一)智能体框架选择

  1. 这里我们选择LangChain框架来创建智能体,它提供了丰富的工具和接口,方便与各种模型和数据源集成。
  2. 安装LangChain库:
pip install langchain

(二)智能体配置

  1. 配置智能体使用的模型和知识库。在项目目录下创建一个新的Python脚本,例如agent_setup.py,内容如下:
from langchain.llms import HuggingFacePipeline
from langchain.agents import Tool, AgentExecutor, LLMSingleActionAgent, AgentOutputParser
from langchain.prompts import StringPromptTemplate
from langchain import SerpAPIWrapper, LLMChain
from langchain.schema import AgentAction, AgentFinish
import re
from langchain.vectorstores import FAISS
from langchain.embeddings import SentenceTransformerEmbeddings
from langchain.chains import RetrievalQA
from transformers import pipeline

# 加载本地DeepSeek模型作为LLM
pipe = pipeline(
    "text-generation",
    model='deepseek_model',
    tokenizer='deepseek_model',
    max_length=100
)
llm = HuggingFacePipeline(pipeline=pipe)

# 加载知识库
embeddings = SentenceTransformerEmbeddings(model_name='all-MiniLM-L6-v2')
vectorstore = FAISS.load_local('faiss_index', embeddings)
retriever = vectorstore.as_retriever()
qa_chain = RetrievalQA.from_chain_type(llm, retriever=retriever)

# 定义工具
tools = [
    Tool(
        name="KnowledgeBase",
        func=qa_chain.run,
        description="Useful for answering questions related to the specific knowledge in the database. Input should be a question."
    )
]

# 定义提示模板
template = """You are a helpful AI assistant. You have access to the following tools:
{tools}
Use the following format:
Question: the input question you must answer
Thought: you should always think about which tool to use
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question

Begin!
Question: {input}"""

class CustomOutputParser(AgentOutputParser):
    def parse(self, llm_output):
        if "Final Answer:" in llm_output:
            return AgentFinish(
                return_values={"output": llm_output.split("Final Answer:")[-1].strip()},
                log=llm_output
            )
        regex = r"Action: (.*?)\nAction Input:[\s]*(.*)"
        match = re.search(regex, llm_output)
        if not match:
            raise ValueError(f"Could not parse LLM output: `{llm_output}`")
        action = match.group(1).strip()
        action_input = match.group(2)
        return AgentAction(tool=action, tool_input=action_input.strip(" ").strip('"'), log=llm_output)

prompt = StringPromptTemplate(
    template=template,
    tools=tools,
    input_variables=["input"]
)

output_parser = CustomOutputParser()

llm_chain = LLMChain(llm=llm, prompt=prompt)
agent = LLMSingleActionAgent(
    llm_chain=llm_chain,
    output_parser=output_parser,
    tools=tools,
    verbose=True
)
agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, verbose=True)

(三)运行智能体

agent_setup.py脚本所在目录的命令行中运行以下代码,测试智能体:

question = "关于知识库中的某个问题"
agent_executor.run(question)

智能体将根据输入的问题,利用知识库中的信息和DeepSeek模型进行回答。

五、总结

通过以上详细的步骤,我们完成了DeepSeek的本地搭建部署、知识库的搭建以及智能体的创建。这一过程不仅让我们深入了解了大模型的应用,还为我们开发个性化的智能应用奠定了基础。在实际应用中,可以根据具体需求进一步优化模型、知识库和智能体的性能和功能。希望本文能帮助大家快速上手DeepSeek相关技术,开启属于自己的人工智能创新之旅。

内容概要:该手册介绍了 DeepSeek 人工智能平台的功能和使用方法,涵盖从账户注册到高级应用场景的多个方面。第一部分简述了快速创建AI助手的方法,包括官方网站访问、账号注册与初次登录等基础操作,以及AI面板的操作指南。第二部分侧重有效提问和魔法指令的应用,指导用户提高交流效率。第三部分内容讲解文件处理和自动化任务完成的能力,包括文档分析、编写代码等方面的操作指引。第四部分则深入探讨各种实用场景,例如辅助学术研究、媒体创作、智能学习系统构建和高效生产力工作流搭建等,每个主题均提供了详细的指令集和注意事项,确保新手可以轻松入门并逐步精通这一强大工具。第五部分内容展示了更高阶的专业功能解锁方式,第六部分强调利用平台来提升自我学习能力。 适用人群:对于有兴趣探索AI应用领域的人群特别合适,尤其是初学者或希望迅速掌握深度搜索引擎技巧的职场人士、学生群体、教师和各类创作者。 使用场景及目标:帮助用户解决具体任务(如论文撰写支持)、简化日常工作流程、加速专业知识积累,同时也可以作为个人成长和技能提升的有效辅助手段。无论是日常办公还是创意项目开发,DeepSeek都能为其带来巨大的便利性和效率增长。 其他说明:本书籍结构紧凑,条理清晰,不仅能够满足不同层次的学习需求,而且提供了大量的实例和避坑指南以确保最佳的学习体验;同时也鼓励使用者积极参与互动实践,在不断尝试过程中获取更加深入的理解和运用能力。此外还提供了有关敏感信息处理和隐私保护的重要提示,保障数据安全和个人信息安全。
### 如何在 Mac 上搭建 DeepSeek 运行环境 #### 准备工作 确保 Mac 已安装最新版本的操作系统,并拥有足够的磁盘空间和内存资源。建议先更新 Homebrew 和已安装的包到最新版本[^1]。 #### 安装依赖工具 通过终端执行命令来安装必要的开发工具链: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install python@3.9 git cmake ninja protobuf openssl libomp ``` 上述命令会自动配置 Python 环境并安装其他所需库文件。 #### 获取源码仓库 克隆官方 GitHub 项目地址至本地目录,以便后续编译构建操作: ```bash git clone --recursive https://github.com/deepseek-lm/deepseek.git ~/deepseek cd ~/deepseek ``` 这一步骤能够下载完整的 DeepSeek 源代码及其子模块。 #### 编译与安装 创建一个新的虚拟环境用于隔离软件包管理;接着按照给定参数调用 CMake 构建系统完成最终组装过程: ```bash python3 -m venv .venv && source ./.venv/bin/activate pip install wheel setuptools torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu cmake -B build -S . -DCMAKE_BUILD_TYPE=Release \ -DPYTHON_EXECUTABLE=$(which python) \ -DDEEPSPEED_PATH=/path/to/deepspeed # 如果使用 deepspeed 需要指定路径 cmake --build ./build --config Release --target all --parallel $(sysctl -n hw.ncpu) ``` 注意替换 `/path/to/deepspeed` 成实际位置或移除该选项如果不适用 Deepspeed 加速训练框架。 #### 测试验证 启动测试脚本确认一切正常运作之后即可开始正式使用 DeepSeek 平台开展研究活动: ```bash pytest tests/ ``` 如果所有单元测试都能顺利通过,则说明已经成功完成了整个设置流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值