综合介绍
DeepSeek-RAG-Chatbot 是一个基于 DeepSeek R1 模型构建的开源聊天机器人项目,托管于 GitHub,由开发者 SaiAkhil066 创建。它结合了检索增强生成(RAG)技术,支持用户上传文档(如 PDF、DOCX 或 TXT 文件),通过本地运行的方式实现高效的文档检索与智能问答。项目利用混合检索(BM25 + FAISS)、神经重排序和知识图谱(GraphRAG)等先进功能,确保从文档中提取上下文准确且相关的信息。适合需要隐私保护或离线使用的场景,如个人知识管理、企业文档处理等。项目提供 Docker 和 Streamlit 界面支持,安装简便,用户可轻松上手。
功能列表
- 文档上传与处理:支持上传 PDF、DOCX、TXT 等格式文件,自动拆分文档并生成向量嵌入。
- 混合检索机制:结合 BM25 和 FAISS 技术,从文档中快速检索相关内容。
- 知识图谱支持(GraphRAG):构建文档的知识图谱,理解实体关系,提升回答的上下文准确性。
- 神经重排序:使用交叉编码器模型对检索结果重新排序,确保最相关信息优先展示。
- 查询扩展(HyDE):生成假设性答案扩展用户查询,提高检索召回率。
- 本地模型运行:通过 Ollama 支持 DeepSeek R1 等模型的本地部署,保证数据隐私。
- 实时响应流:提供流式输出,用户可即时看到生成结果。
- Docker 支持:通过 Docker 容器化部署,简化安装与运行流程。
- Streamlit 界面:直观的图形界面,方便上传文件和交互式聊天。
使用帮助
安装流程
DeepSeek-RAG-Chatbot 支持本地运行,需要一定的环境配置。以下是详细的安装步骤:
前置条件
- 操作系统:Windows、macOS 或 Linux。
- 硬件要求:至少 8GB 内存(推荐 16GB),若使用 GPU 加速需支持 CUDA 的显卡。
- 软件依赖:Python 3.8+、Git、Docker(可选)。
步骤 1:克隆项目
- 打开终端,运行以下命令克隆 GitHub 仓库:
git clone https://github.com/SaiAkhil066/DeepSeek-RAG-Chatbot.git
- 进入项目目录:
cd DeepSeek-RAG-Chatbot
步骤 2:设置 Python 环境
- 创建虚拟环境:
python -m venv venv
- 激活虚拟环境:
- Windows:
venv\Scripts\activate
- macOS/Linux:
source venv/bin/activate
- 升级 pip 并安装依赖:
pip install --upgrade pip
pip install -r requirements.txt
依赖包括 streamlit
、langchain
、faiss-gpu
(如有 GPU)等。
步骤 3:安装并配置 Ollama
- 下载并安装 Ollama(访问 ollama.com 获取安装包)。
- 拉取 DeepSeek R1 模型(默认 7B 参数,可根据需要选择其他版本,如 1.5B 或 32B):
ollama pull deepseek-r1:7b
ollama pull nomic-embed-text
- 确保 Ollama 服务运行,默认监听地址为
localhost:11434
。
步骤 4:(可选)Docker 部署
若不想手动配置环境,可使用 Docker:
- 安装 Docker(参考 docker.com)。
- 在项目根目录运行:
docker-compose up
- Docker 会自动拉取 Ollama 和 chatbot 服务,运行后访问
http://localhost:8501
。
步骤 5:启动应用
- 在虚拟环境中运行 Streamlit:
streamlit run app.py
- 浏览器会自动打开
http://localhost:8501
,进入聊天界面。
操作功能详解
功能 1:上传文档
- 进入界面:启动后,Streamlit 界面左侧有“上传文档”侧边栏。
- 选择文件:点击“Browse files”按钮,选择本地 PDF、DOCX 或 TXT 文件。
- 处理文件:上传后,系统自动将文档拆分为小块,生成向量嵌入并存储至 FAISS。处理时间依文件大小而定,通常数秒至数分钟。
- 提示:侧边栏会显示“文件处理完成”的确认信息。
功能 2:提问与检索
- 输入问题:在聊天框输入问题,支持中文或英文,例如“文档里提到 GraphRAG 的作用是什么?”。
- 检索过程:
- 系统使用 BM25 和 FAISS 检索相关文档片段。
- GraphRAG 分析片段间的实体关系。
- 神经重排序优化结果顺序。
- HyDE 扩展查询以覆盖更多相关内容。
- 生成答案:DeepSeek R1 根据检索结果生成回答,答案以流式输出,逐步显示在界面上。
- 示例:若问“什么是混合检索?”可能返回“混合检索结合 BM25 和 FAISS,BM25 负责关键词匹配,FAISS 通过向量相似性快速定位内容”。
功能 3:知识图谱应用
- 启用 GraphRAG:默认开启,无需额外操作。
- 提问复杂问题:如“公司 A 和公司 B 的合作关系是什么?”。
- 结果展示:系统不仅返回文本,还基于知识图谱提供关系性回答,例如“公司 A 与公司 B 在 2023 年签订技术合作协议”。
功能 4:调整模型与参数
- 更换模型:在
.env
文件中修改MODEL
参数,例如改为deepseek-r1:1.5b
。 - 优化性能:若硬件支持,安装
faiss-gpu
并启用 GPU 加速,检索速度可提升 3 倍。
使用技巧
- 多文件支持:可同时上传多个文件,系统会整合内容回答问题。
- 问题清晰:提问时尽量具体,避免模糊表述以提升答案准确性。
- 检查日志:若遇到错误,可查看终端日志排查问题,如模型未下载或端口占用。
注意事项
- 隐私保护:本地运行无需联网,数据不上传至云端。
- 资源占用:大模型和高维向量计算需较高内存,建议关闭无关程序。
- 更新模型:定期运行
ollama pull
获取最新版本的 DeepSeek 模型。
完成以上步骤后,用户即可通过浏览器与 DeepSeek-RAG-Chatbot 交互,享受高效的文档问答体验。