18  
查询码: 00000210
DeepSeek-R1 + RAG系统部署测试
2025年03月03日 发布 ,于 2025年05月14日 编辑

背景介绍

本测试实验部署一个基于DeepSeek-R1大语言模型的RAG(检索增强生成)系统。该系统由两部分组成:一台服务器上的向量数据库服务和另一台服务器上的RAG推理服务。系统搭建后,用户可以通过Web界面向系统提问,系统会检索相关文档并生成基于检索内容的准确回答。

系统支持的知识库包含:

  1. 引用自天数智芯官网的新闻的"Infini-AI异构云平台的介绍"
  2. "哪吒之魔童闹海"的维基百科内容

环境要求

需要两台能访问互联网的服务器:

  • 服务器A:用于部署向量数据库服务
  • 服务器B:用于部署DeepSeek-R1推理服务和RAG服务

第一部分:在服务器A上部署向量数据库

容器准备

基于较新的软件栈部署Docker环境,确保Docker能够访问互联网。需要开放端口供向量数据库提供对外服务:

1
<code><span id="zuX">docker run -p 8001:8001 [</span>其他参数<span id="RDC">] [</span>镜像名称<span id="gAI">]</span></code>

如果使用其他端口号,需要相应修改add_data_to_chroma.pylaunch_server.sh中的port参数。

进入容器后,安装所需依赖:

1
<code><span id="gPX">pip3 install -r requirements.txt</span></code>

下载embedding模型

使用m3e-base作为embedding模型:

  1. 下载模型
  2. 修改add_data_to_chroma.py中的embedding_model_path为模型的本地路径

处理特定格式文件需要NLTK数据:

  1. 下载nltk_data的官方GitHub仓库:https://github.com/nltk/nltk_data
  2. packages目录重命名为nltk_data
  3. add_data_to_chroma.py开头添加:
1
<code><span id="yDR">import nltk_NLTK_PATH = "/path/to/your/nltk_data"nltk.data.path.insert(0, _NLTK_PATH)</span></code>

向Chroma添加知识库文档

Chroma支持多种格式文档(md/pdf/doc/txt等)和网络链接:

  1. 将本地文档放置在demo_data目录下
  2. add_data_to_chroma.py中的data_path_list添加文档路径或网络链接:
1
<code><span id="MJ0">data_path_list = [<span id="zf4">     </span>f"{cwd}/demo_data",<span id="sMG">    </span>"<a href="https://zh.wikipedia.org/zh-cn/%E5%93%AA%E5%90%92%E4%B9%8B%E9%AD%94%E7%AB%A5%E9%97%B9%E6%B5%B7" rel="nofollow">https://zh.wikipedia.org/zh-cn/%E5%93%AA%E5%90%92%E4%B9%8B%E9%AD%94%E7%AB%A5%E9%97%B9%E6%B5%B7</a>"]</span></code>

启动向量数据库服务:

1
<code><span id="WPD">bash launch_server.sh</span></code>

注意:在CentOS或版本较老的系统上可能遇到SQLite版本问题,此时需要在/usr/local/lib64/python3.10/site-packages/chromadb/__init__.py文件开头添加:

1
<code><span id="UtM">__import__("pysqlite3")</span></code>
1
<code><span id="Itt">import sys</span></code>
1
<code><span id="ROo">sys.modules['sqlite3'] = sys.modules.pop("pysqlite3")</span></code>

新开一个窗口,运行以下命令将文档添加到向量数据库:

1
<code><span id="igA">python add_data_to_chroma.py</span></code>

第二部分:在服务器B上部署RAG服务

容器准备

基于较新的软件栈部署Docker环境,确保容器中的VLLM可正常运行。需要开放端口供RAG提供Web服务:

1
<code><span id="xRW">docker run -p 3333:3333 [</span>其他参数<span id="UPi">] [</span>镜像名称<span id="ti5">]</span></code>

如需使用其他端口,相应修改launch_app.sh中的port

进入容器后,安装所需依赖:

1
<code><span id="V9S">pip3 install -r requirements.txt</span></code>

下载模型

DeepSeek-R1-Distill-Qwen-32B作为LLM推理模型:

  1. ModelScope下载模型
  2. 修改launch_vllm.sh中的model为模型的本地路径
  3. 修改模型的tokenizer_config.json,将chat_template中的最后部分从{{'<Assistant><think>\\n'}}{% endif %}"改为{{'<Assistant>'}}{% endif %}"以获得更好的RAG效果

注意:如果需要使用70B的蒸馏模型DeepSeek-R1-Distill-Llama-70B,需要将--tensor-parallel-size设置为8

同样需要下载embedding模型m3e-base,并修改rag.py中的embedding_model_path为本地路径。

修改rag.py中的chroma_hostchroma_port为部署的向量数据库服务器(服务器A)IP地址和端口号。

运行VLLM服务并确认服务日志正常:

1
<code><span id="jWx">bash launch_vllm.sh</span></code>

测试RAG服务

本地测试RAG服务:

1
<code><span id="2X8">python3 test_rag_local.py</span></code>

启动RAGWeb应用:

1
<code><span id="d6l">bash launch_app.sh</span></code>

在浏览器中访问http://{host_ip}:3333,其中{host_ip}为服务器BIP地址。

测试结果




 附件

附件类型

PNGPNG

天数智芯知识库系统 -V 5.2.5 -wcp