在本地基于deepseek和Dify平台构建私有化知识库平台
·
在人工智能时代,企业或个人需要高效管理私有知识,并通过智能问答系统快速获取信息。本文将介绍如何结合 DeepSeek-R1 大模型 和 Dify 平台,快速构建一个支持私有知识库的智能问答系统。
一、技术选型
- DeepSeek-R1
- 国内开源的先进大语言推理模型,支持长文本处理和复杂推理,适合私有知识库场景。
- 优势:低成本部署、支持中文语境、可离线运行。
- 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 中导入知识库
- 登录 Dify 后,进入 「知识库」 页面。
- 点击 「新建知识库」,选择 「文件上传」。
- 上传
knowledge_base.jsonl文件,完成向量化存储。
3. 配置 DeepSeek-R1 模型
- 进入 「模型」 页面,点击 「新建模型」。
- 填写配置:
- 模型名称:
deepseek-r1-private - API 地址:
http://localhost:8000/v1/chat/completions - 认证方式:无(本地部署无需认证)
- 模型名称:
- 保存配置。
4. 创建智能问答应用
- 进入 「应用」 页面,点击 「新建应用」。
- 配置应用:
- 应用名称:
私有知识库问答 - 模型:选择
deepseek-r1-private - 知识库:关联之前创建的知识库
- 应用名称:
- 设置提示词模板:
你是一个智能助手,负责回答关于公司私有知识的问题。
请基于以下知识库内容回答:
{{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 # 知识库数据文件 |
更多推荐





所有评论(0)