在本地基于deepseek和Dify平台构建私有化知识库平台

在人工智能时代,企业或个人需要高效管理私有知识,并通过智能问答系统快速获取信息。本文将介绍如何结合 DeepSeek-R1 大模型 和 Dify 平台,快速构建一个支持私有知识库的智能问答系统。


一、技术选型

  1. DeepSeek-R1
    • 国内开源的先进大语言推理模型,支持长文本处理和复杂推理,适合私有知识库场景。
    • 优势:低成本部署、支持中文语境、可离线运行。
  2. Dify
    • 开源的 LLM 应用开发平台,提供可视化界面和 API 集成能力。
    • 优势:零代码配置知识库、支持多模型接入、支持流式响应。

二、环境准备

1. 安装 DeepSeek-R1 本地服务

方法一:使用 Docker 快速部署
# 拉取 DeepSeek-R1 镜像(以 7B 模型为例)
docker pull deepseek-ai/deepseek-r1-7b-chat
# 启动容器
docker run -d \
--name deepseek-r1 \
-p 8000:8000 \
-e MODEL_NAME=deepseek-r1-7b-chat \
deepseek-ai/deepseek-r1-7b-chat
方法二:本地 Python 环境部署
# 克隆模型仓库

git clone https://github.com/deepseek-ai/DeepSeek-R1.git

cd DeepSeek-R1

# 安装依赖

pip install -r requirements.txt

# 启动服务(默认端口 8000)

python app.py --model deepseek-r1-7b-chat


验证服务

curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-r1-7b-chat",
"messages": [{"role": "user", "content": "你好,介绍一下自己"}],
"temperature": 0.7
}'

2. 部署 Dify 平台

使用 Docker 部署
# 拉取 Dify 镜像

docker pull langgenius/dify-api

docker pull langgenius/dify-web

# 启动后端 API

docker run -d \

--name dify-api \

-p 5001:5001 \

-v dify-data:/app/data \

-e DATABASE_URL="sqlite:app/data/dify.db" \

langgenius/dify-api


# 启动前端 Web

docker run -d \

--name dify-web \

-p 8188:80 \

-e API_BASE_URL="http://localhost:5001" \

langgenius/dify-web
访问 Dify
  • 打开浏览器访问 http://localhost:8188,完成初始配置。

三、构建私有知识库

1. 准备知识库数据

创建 knowledge_base.jsonl 文件,格式如下:

{"content": "公司成立于2010年,专注于AI技术研发。", "metadata": {"source": "公司官网"}}
{"content": "核心产品包括智能客服、数据分析平台。", "metadata": {"source": "产品手册"}}
{"content": "2023年获得国家科技进步奖。", "metadata": {"source": "新闻报道"}}

2. 在 Dify 中导入知识库

  1. 登录 Dify 后,进入 「知识库」 页面。
  2. 点击 「新建知识库」,选择 「文件上传」
  3. 上传 knowledge_base.jsonl 文件,完成向量化存储。

3. 配置 DeepSeek-R1 模型

  1. 进入 「模型」 页面,点击 「新建模型」
  2. 填写配置:
    • 模型名称deepseek-r1-private
    • API 地址http://localhost:8000/v1/chat/completions
    • 认证方式:无(本地部署无需认证)
  3. 保存配置。

4. 创建智能问答应用

  1. 进入 「应用」 页面,点击 「新建应用」
  2. 配置应用:
    • 应用名称私有知识库问答
    • 模型:选择 deepseek-r1-private
    • 知识库:关联之前创建的知识库
  3. 设置提示词模板:
你是一个智能助手,负责回答关于公司私有知识的问题。
请基于以下知识库内容回答:
{{knowledge}}


如果问题无法回答,请回复:"抱歉,我无法提供相关信息。"

设置完毕,保存并发布应用。


    四、测试与优化

    1. 测试问答效果

    在 Dify 的 「测试」 页面输入问题:

    • 输入公司的主要产品是什么?
    • 预期输出核心产品包括智能客服、数据分析平台。

    2. 优化知识库

    • 如果回答不准确,检查知识库内容是否覆盖问题。
    • 通过 「日志」 页面分析用户问题,补充缺失的知识。

    3. 高级配置(可选)

    自定义 API 请求

    如果需要更复杂的请求逻辑,可以修改 Dify 的模型配置:

    {
    "url": "http://localhost:8000/v1/chat/completions",
    "headers": {"Content-Type": "application/json"},
    "body": {
    "model": "deepseek-r1-7b-chat",
    "messages": [
    {"role": "system", "content": "你是一个专业助手。"},
    {"role": "user", "content": "{{query}}"}
    ],
    "temperature": 0.5
    }
    }
    流式响应

    在 Dify 的模型配置中启用流式响应:

    {
    "stream": true
    }

    五、完整代码示例

    1. DeepSeek-R1 本地服务启动脚本 (start_deepseek.sh)

    #!/bin/bash
    
    docker run -d \
    
    --name deepseek-r1 \
    
    -p 8000:8000 \
    
    -e MODEL_NAME=deepseek-r1-7b-chat \
    
    deepseek-ai/deepseek-r1-7b-chat
    
    
    
    echo "DeepSeek-R1 服务已启动,访问 http://localhost:8000"

    2. Dify 启动脚本 (start_dify.sh)

    #!/bin/bash
    
    docker run -d \
    
    --name dify-api \
    
    -p 5001:5001 \
    
    -v dify-data:/app/data \
    
    -e DATABASE_URL="sqlite:app/data/dify.db" \
    
    langgenius/dify-api
    
    
    
    docker run -d \
    
    --name dify-web \
    
    -p 8188:80 \
    
    -e API_BASE_URL="http://localhost:5001" \
    
    langgenius/dify-web
    
    
    
    echo "Dify 平台已启动,访问 http://localhost:8188"

    3. 知识库数据生成脚本 (generate_knowledge.py)

    import json
    
    
    
    # 示例知识库数据
    
    knowledge_entries = [
    
    {"content": "公司总部位于北京,拥有200名员工。", "metadata": {"source": "公司年报"}},
    
    {"content": "2024年计划推出新一代AI芯片。", "metadata": {"source": "内部会议纪要"}},
    
    ]
    
    
    
    # 保存为 JSONL 文件
    
    with open("knowledge_base.jsonl", "w") as f:
    
    for entry in knowledge_entries:
    
    f.write(json.dumps(entry) + "\n")
    
    
    
    print("知识库数据已生成到 knowledge_base.jsonl")

    六、总结

    通过 DeepSeek-R1 + Dify 的组合,可以快速构建一个高效、低成本的私有知识库问答系统。

    • 优势
      • 完全离线可控,保障数据安全。
      • 支持动态更新知识库,适应业务变化。
      • 可扩展性强,支持多模型切换。

    附:完整项目结构

     
      
    private-knowledge-base/
    ├── start_deepseek.sh # DeepSeek 启动脚本
    ├── start_dify.sh # Dify 启动脚本
    ├── generate_knowledge.py # 知识库数据生成脚本
    └── knowledge_base.jsonl # 知识库数据文件

    你可能感兴趣的:(AI大模型,knowledge,RAG)