RAG 高效检索利器 打造企业 “规章制度智能体”(ollama + deepseek + langchain + MinerU)

前言

常见的开源知识库用过不少,如:langchain-chatchat、ragflow、dify等,发现还是有些回答不尽人意,搜索了相关技术栈,准备用 ollama + deepseek + langchain + MinerU 打造一个企业内部 ”规章制度智能体“。

一、准备环境

  1. ollama,用于在本地运行、部署和管理大型语言模型(LLMs)。
  2. deepseek 模型,本文用的 deepseek-r1:14b。
  3. langchain,大语言模型应用程序的开发框架,主要 python 实现。
  4. MinerU,大模型时代的文档提取/转换神器。

MinerU,支持PDF、Word、PPT等多种文档的智能解析并导出为 markdown、json 等格式,可用于机器学习、大模型语料生产、RAG等场景。

Markdown 在大语言模型中广泛应用,主要原因在于其简洁性、结构化能力以及与文本生成任务的天然适配性。因此解析结构化比较清晰的文档,如:合同、规章制度等,使用 markdown 格式更容易让大语言模型理解。

官网:https://mineru.net/
Github:https://github.com/opendatalab/MinerU
安装文档:https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md

二、开发思路

  1. 首先使用 MinerU 将 pdf 解析为 markdown 格式,下载客户端或者部署源码解析。
  2. 然后对其内容进行微调,删除无关内容,并调整标题的层级关系,有表格的尽量也转一下,手动调整成序列。
  3. 使用 langchain 的 UnstructuredMarkdownLoader 模块加载数据。
  4. 再用向量库和嵌入模型进行检索,返回用户问题。

三、代码解读

  1. 加载文档
# 加载文档
loader = UnstructuredMarkdownLoader("knowledge_base/差旅费管理办法.md", mode="elements")
docs = loader.load()
  1. 分割文档
def create_text_splitter():
    headers_to_split_on = [
        ("#", "Header 1"),
        ("##", "Header 2"),
        ("###", "Header 3"),
    ]
    return MarkdownHeaderTextSplitter(headers_to_split_on=headers_to_split_on)
# 合并标题内容
merged_text = "\n".join([doc.page_content for doc in docs])
# 分割文档
markdown_splitter = create_text_splitter()
md_header_splits = markdown_splitter.split_text(merged_text)
  1. 初始化模型和系统提示词
def get_chat_llm
<think>嗯,用户问的是RAG、Docker、OllamaDeepSeek和Dify的本地部署方案。从引用内容看,用户可能是个技术实践者,想搭建自己的AI本地环境,而且引用的资料都涉及私有化部署,说明对数据隐私和本地控制有需求。 用户提供的引用信息很有价值。引用[1][2][3]详细说明了Dify、OllamaDeepSeek的集成方式,引用[3]还给出了硬件配置参考,引用[5]提供了Ollama环境变量配置。这些正好能拼凑出完整的部署方案。 用户可能遇到的主要挑战在于:组件多(Docker/Ollama/Dify/RAGFlow/DeepSeek)、配置复杂、资源调配。需要特别注意: 1. 硬件门槛:根据引用[3],运行14B模型至少要12核CPU+32GB内存+16GB显存 2. 网络配置:Docker容器间通信(如OLLAMA_HOST设置) 3. 模型选择:DeepSeek有7B/14B/67B多个版本,本地部署推荐deepseek-r1:14b 部署方案可以分三步走: 第一步先搭基础环境(Docker+Ollama),这里引用[1][5]的环境变量配置很重要; 第二步部署Dify和RAGFlow,引用[2][3]提到它们通过API连接Ollama; 最后集成DeepSeek模型,引用[4]提到其MoE架构能降低资源消耗。 需要提醒用户注意版本兼容性,比如Dify v0.6.5对Ollama的支持最稳定。另外引用[3]的硬件表格很实用,应该重点呈现,避免用户设备资源不足导致失败。 用户没提具体应用场景,但引用[2][3]都强调RAG能力,推测可能需要知识库问答系统。在后续优化建议中可以补充RAG调优方法。</think>以下是基于 Docker、OllamaDeepSeek 和 Dify 的本地私有化 RAG 部署方案,结合引用内容整理为清晰步骤: --- ### **部署架构** ```mermaid graph LR A[Docker] --> B[Ollama] A --> C[Dify] B --> D[DeepSeek-R1] C --> E[RAGFlow/Xinference] C --> F[本地知识库] ``` --- ### **一、基础环境准备** 1. **安装 Docker** - 官网下载:https://www.docker.com/ - 验证安装:`docker --version` 2. **安装 Ollama** - 官网下载:https://ollama.com/ - 配置环境变量(Windows)[^5]: ```bash OLLAMA_HOST=0.0.0.0:11434 # 开放网络访问 OLLAMA_MODELS=D:\ollama\models # 自定义模型路径 ``` --- ### **二、部署 DeepSeek 模型** 1. **拉取 DeepSeek 模型**(根据硬件选择版本)[^3]: ```bash ollama run deepseek-r1:8b # 轻量版(8GB显存+ollama run deepseek-r1:14b # 推荐版(16GB显存+) ``` 2. **验证模型运行**: ```bash curl http://localhost:11434/api/generate -d '{ "model": "deepseek-r1:14b", "prompt": "你好" }' ``` > 💡 **硬件建议**(引用[3]): > | 模型版本 | CPU | 内存 | GPU显存 | > |----------|-----------|--------|--------------| > | 7B/8B | 8核+ | 16GB+ | 8GB+ (如RTX 3070) | > | 14B | 12核+ | 32GB+ | 16GB+ (如RTX 4090) | --- ### **三、部署 Dify** 1. **通过 Docker 启动 Dify** [^1][^3]: ```bash docker run -d --name dify \ -p 80:80 \ -e OLLAMA_API_URL=http://host.docker.internal:11434 \ # 连接Ollama -e OLLAMA_MODEL=deepseek-r1:14b \ dify/dify:0.6.5 ``` 2. **访问控制台**:`http://localhost` --- ### **四、集成 RAG 功能** 1. **方案1:使用 Dify 内置 RAG** [^3] - 在 Dify 控制台上传知识文档(PDF/TXT等) - 配置检索策略:关键词/语义搜索 2. **方案2:集成 RAGFlow/Xinference**(高阶)[^2][^5] ```bash # 启动 Xinference(重排序模型) docker run -d -p 9997:9997 xprobe/xinference # Dify 配置中填入 Xinference 地址: Rerank API URL = http://host.docker.internal:9997 ``` --- ### **五、验证全流程** 1. **在 Dify 创建应用**: - 选择「对话型」模板 - 模型选择 `Ollama/deepseek-r1:14b` - 启用知识库并上传测试文档 2. **提问测试**: ```plaintext Q: 根据知识库,XX项目的关键技术是什么? A: [应返回知识库中的相关内容] ``` --- ### **常见问题排查** | 问题现象 | 解决方案 | |-------------------------|------------------------------| | Ollama 连接超时 | 检查 `OLLAMA_HOST` 环境变量与防火墙 | | Dify 无法加载模型 | 确认模型名称拼写(区分大小写) | | RAG 检索结果不相关 | 调整分段策略/启用重排序模型 | > ⚠️ **关键提示**: > - DeepSeek-V3 采用 **混合专家模型(MoE)** 技术,显著降低推理成本[^4] > - 本地 API 调用格式:`http://host.docker.internal:11434/v1/chat/completions`[^5] --- ### 相关问题 1. **如何优化 DeepSeekOllama 上的推理速度?** > 可尝试量化模型:`ollama run deepseek-r1:14b-q4`(需显存≥12GB) 2. **Dify 如何支持多模型切换?** > 在「模型供应商」中添加多个 Ollama 模型端点即可[^3] 3. **本地部署如何保证数据安全?** > 所有组件(Dify/Ollama)均运行在 Docker 隔离环境中,数据不离开本地服务器[^1][^3] 4. **资源不足时如何降级部署?** > 使用 DeepSeek-7B 模型 + 关闭重排序模块,最低需 8GB 内存+8GB 显存[^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值