Dify 基于 ChatGPT 构建本地知识库问答应用

一、Dify

自从 ChatGPT 横空出世之后,其极高的语言理解和交互能力不仅让人惊呼,ChatGPT不仅能够处理事实性问题,还能理解和生成情感色彩更浓厚的对话内容,能够识别用户的情感倾向,并据此作出相应的回应。这么好的东西怎么能运用到具体私有领域来呢?

例如在学校的场景下,我们需要打造一个学习需求问答系统,问一周的课程,可以回答出:周一需要上 JAVA 课,周二上 Python 课,周三上其他课等,对于类似这种私有化的知识库,如果不对 ChatGPT 微调的话很难精准回答出来。

现在 dify 就可以帮助我们低成本的实现上述的功能 ,使其可以精准回答专业领域的知识。

dify介绍文档: https://docs.dify.ai/v/zh-hans/getting-started/intro-to-dify

下面我们借助 dify 简单实现下上述的场景,由于我们是基本 ChatGPT 作为 LLM 支撑,所以你需要有一个 OpenAIAPI Key

二、Dify 服务部署

这里也可以使用官方的服务进行操作,就无需进行本地安装了,使用下面地址:

https://cloud.dify.ai/apps

如果需要本地部署,则进行下下面操作:

这里使用 Docker 部署,安装前确定已经部署好 DockerDocker-compose

将项目 clone 下来:

git clone https://github.com/langgenius/dify.git

进入 dify 源代码的 docker 目录,使用 docker 启动:

cd dify/docker
docker-compose up -d

下载好镜像启动后,可以看到相关服务:

在这里插入图片描述

如果有防火墙需要放行 805432 端口。

下面在浏览器访问 http://部署服务ip ,即可进入到 dify ,刚开始需要设置邮箱、用户名密码信息:

在这里插入图片描述

设置完成并登录后即可来到主页面:

在这里插入图片描述

三、构建私有化知识库问答应用

3.1 构建本地知识库

现在我们定义下课程信息,将内容放入一个 txt 文本中:

周一课程:上午:JAVA,下午:Python。
周二课程:上午:机器学习,下午:机器视觉。
周三课程:上午:NLP,下午:HTML。
周四课程:上午:微服务,下午:大数据。
周五课程:上午:android,下午:历史文化。

下面点到数据集下,点击创建数据集:

在这里插入图片描述

下面将上面的 txt 文本拖入或选中进来:

在这里插入图片描述

下面进行文本的分段与清洗,由于内容不多,可以分到一个段中:

在这里插入图片描述

下面点击保存就成功创建了一个知识库:

在这里插入图片描述

3.2 构建问答应用

下面构建一个问答的应用:

在这里插入图片描述

由于是使用 ChatGPT 下面先给它指定一个 API key

在这里插入图片描述

对于 ChatGPT 的版本,这里以 gpt-3.5-turbo 为例:

在这里插入图片描述

下面在 提示词编排 中使用上面的知识库:

在这里插入图片描述

此时可以在右侧进行调试:

在这里插入图片描述

可以看到已经有了我们想要的效果,最后感觉不错的话,一定要点下右上角的发布,下面我们通过 API 的方式去使用它,在访问API 中可以看到API接口地址,并给出了访问示例:

在这里插入图片描述

访问前需要生成 API 秘钥,可以点击 API 秘钥 生成:

在这里插入图片描述

下面我们就可以使用 PostMan 进行访问了。

在这里插入图片描述

3.3 效果测试

这里使用自带的预览:

在这里插入图片描述

下面就可以进行一些针对性的问答了:

在这里插入图片描述

<think>好的,用户想了解如何使用DeepSeek、OpenWebUI和Ollama搭建私有化的RAG知识库。首先,我需要回忆相关的引用内容,看看有没有相关的技术方案。引用[1]提到了使用LangChain-Chatchat、ollama和bge-m3搭建本地知识库,但用户这里需要的是OpenWebUI。引用[2]提到Ollama + FastGPT,可能相关。引用[3]则详细介绍了使用DeepSeekR1和Dify,支持Ollama和Ktransformer。虽然用户提到的工具是OpenWebUI,但可能需要结合这些引用中的方法进行调整。 接下来,我需要整合这些信息,给出一个可行的步骤。首先,安装Ollama作为本地模型服务,然后部署OpenWebUI作为前端界面,接着配置DeepSeek模型,最后整合RAG功能。可能需要参考引用中的向量库和Embedding设置,如默认配置,以及文件上传到知识库的步骤。此外,引用[3]提到的Dify平台可能是一个替代方案,但用户明确要求OpenWebUI,所以可能需要调整步骤。 需要注意用户提到的组件:DeepSeek、OpenWebUI、Ollama。需要确保这些工具能协同工作。例如,Ollama负责运行模型,OpenWebUI提供用户界面,DeepSeek可能作为嵌入模型或生成模型。可能需要使用bge-m3作为Embedding模型,如引用[1]所述,或者按默认设置。 然后,构建步骤时,应该分阶段:环境准备、安装各组件、配置整合、测试使用。需要详细说明每一步的具体操作,比如Docker命令、配置文件修改等。同时,要提醒用户可能遇到的常见问题,如端口冲突、模型加载问题,并给出解决建议。 最后,生成相关问题,可能涉及性能优化、扩展功能、安全措施等,这些需要基于引用中的信息,比如引用[2]提到的不同开源库的选择,引用[3]中的高效RAG实现方法。 确保回答结构清晰,步骤明确,同时引用相关文献,比如在提到向量库和Embedding时引用[1],在讨论不同开源库时引用[2],在涉及高效RAG配置时引用[3]。同时,保持语言自然,符合用户要求的格式,如使用中文,正确应用LaTeX格式等。</think>### 使用 DeepSeek、OpenWebUI 和 Ollama 搭建私有 RAG 知识库的技术方案 #### 一、技术组件说明 1. **Ollama**:本地大模型运行框架,支持多种开源模型(如 LLaMA3、DeepSeek 等)的快速部署[^2][^3]。 2. **OpenWebUI**:开源的 Web 交互界面,提供类似 ChatGPT 的对话体验,支持本地模型集成。 3. **DeepSeek**:可选择其开源模型(如 DeepSeek-MoE)作为 RAG 的生成模块,或使用其蒸馏版提升推理速度。 4. **RAG 核心**:包含文本向量化(Embedding)、向量数据库(如 Chroma/FAISS)、检索增强生成流程。 #### 二、搭建步骤详解 ##### 1. 环境准备 ```bash # 安装 Docker 和 Docker Compose sudo apt-get install docker.io docker-compose # 创建专用目录 mkdir ~/rag_system && cd ~/rag_system ``` ##### 2. 部署 Ollama 服务 ```bash # 拉取 Ollama 官方镜像 docker pull ollama/ollama # 启动容器(暴露 11434 端口) docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama # 下载 DeepSeek 模型(示例使用 7B 版本) docker exec -it ollama ollama pull deepseek-llm:7b ``` ##### 3. 配置 OpenWebUI ```yaml # docker-compose.yml version: '3.8' services: openwebui: image: ghcr.io/open-webui/open-webui:main ports: - "3000:8080" volumes: - ./data:/app/backend/data environment: - OLLAMA_BASE_URL=http://ollama:11434 depends_on: - ollama ``` ##### 4. 构建 RAG 流程 ```python # 伪代码示例(基于 LangChain) from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA # 使用 bge-m3 中文嵌入模型[^1] embedder = HuggingFaceEmbeddings(model_name="BAAI/bge-m3") vector_db = Chroma(persist_directory="./chroma_db", embedding_function=embedder) # 连接 Ollama 的 DeepSeek 模型 qa_chain = RetrievalQA.from_chain_type( llm=Ollama(model="deepseek-llm:7b"), retriever=vector_db.as_retriever() ) ``` ##### 5. 知识库管理 - 通过 OpenWebUI 上传文档(PDF/TXT/Markdown 等) - 文件自动进入预处理流程: $$文本分块 \rightarrow 向量化 \rightarrow 存入 Chroma 数据库$$ - 在对话界面启用 RAG 模式即可使用知识库增强的回答 #### 三、性能优化建议 1. 硬件要求: - 最低配置:16GB RAM + NVIDIA GTX 1080(支持 CUDA 11+) - 推荐配置:32GB RAM + RTX 3090(FP16 加速) 2. 模型选择: - 轻量场景:使用 DeepSeek 蒸馏版(4bit 量化后仅需 6GB 显存) - 精度优先:采用 DeepSeek 67B 全参数版本 #### 四、验证测试 ```bash # 检查服务状态 curl http://localhost:3000/api/health # 测试知识库检索 curl -X POST -H "Content-Type: application/json" -d '{ "query": "什么是 RAG 技术?", "knowledge_base": "tech_terms" }' http://localhost:3000/api/chat ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小毕超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值