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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值