手把手教你如何用Dify零成本搭建本地私有化部署知识库与agent

在这里插入图片描述

1. Dify安装与部署(Linux系统使用Docker)

1.1 安装Docker

首先,确保你的Linux系统中已安装Docker。如果未安装,可以通过以下命令安装Docker:

# 更新apt索引
sudo apt-get update

# 安装Docker依赖
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

# 添加Docker的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加Docker源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装Docker CE(社区版)
sudo apt-get update
sudo apt-get install docker-ce

# 启动Docker并验证
sudo systemctl start docker
sudo systemctl enable docker
docker --version

1.2 安装Docker Compose(如果需要)

# 下载Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 授予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 检查安装是否成功
docker-compose --version

1.3 拉取Dify镜像并启动容器

# 拉取Dify镜像
docker pull dify/dify

# 启动Dify容器(你可以自定义端口等配置)
docker run -d -p 8000:8000 dify/dify

# 验证是否启动成功
docker ps

部署完dify,页面如下,有探索、工作室、知识库及工具
在这里插入图片描述

2. 搭建知识库

Dify支持多种格式的数据导入,尤其适用于结构化数据和非结构化数据。

在这里插入图片描述

2.1 上传与管理数据

你可以通过Dify的Web界面上传不同格式的文件,包括:

结构化数据:如Excel、CSV、数据库(MySQL、PostgreSQL等)。

非结构化数据:如PDF、PPT、Word文件、科学文献(Sci)、实验数据、文本资料等。
在这里插入图片描述

2.1.1 上传文件

在Dify的后台管理界面,进入知识库管理页面,选择“上传文件”,并选择你需要导入的文件(如PDF、PPT、Word等格式的文件)。系统将自动提取文本内容并将其结构化存储在数据库中。
在这里插入图片描述

2.1.2 处理结构化数据(Excel、CSV等)

通过Dify提供的数据导入工具,将Excel或CSV文件上传至系统,系统会自动识别并映射数据字段,将其保存为结构化数据,便于后续查询和分析。一般可以直接对文档进行拖拽拉取上传。
在这里插入图片描述
导入文件后,会有一个配置选项,需要勾选下,使用默认的方式,上传是最快的,如果让其自动分段,可以先预览下,有些QA文档是AI自动截取的,非结构化数据按照一定的文字段落并会直接截取,导致语义不通,牛头不对马嘴。所以推荐,最好的方式是自己先对语料文档进行预处理,上传速度也会变快。
在这里插入图片描述
并且需要修改检索设置,一般选用混合检索、Rerank模型在这里插入图片描述上传成功的话,可以点开看,每份文档的具体信息在这里插入图片描述
在知识库的构建过程中,分块和结构化的实现依赖于多个步骤,包括:

  • 文本提取:通过Python中的PyPDF2、python-docx等库提取文档中的文本。

  • 分块:通过NLP技术将文档按句子、段落或语义进行分块。

  • 结构化:通过实体识别、关系抽取等技术提取关键信息,并存储到数据库或知识图谱中。

这种流程大多是通过编写代码实现的,结合了自然语言处理和数据库技术,使得文档中包含的知识可以转化为结构化的数据,方便后续的查询、分析和应用。

2.1.3 导入数据库数据

对于已有的数据库(如MySQL、PostgreSQL等),你可以配置数据库连接,Dify会定期同步并更新数据库中的数据,保持知识库内容的实时更新。

2.1.4 处理PDF、Word等非结构化数据

Dify通过内置的文档解析工具,将PDF、Word等文档中的文本内容提取并进行自然语言处理(NLP),以便将非结构化内容转化为结构化数据,便于查询。如考虑到内存问题,建议可以对文档进行预加工,变成.md或者.txt的格式进行上传。或转成QA对的形式,也可最大程度的保留语料的综合信息

class DocumentProcessor:
    """处理不同类型文档并提取文本内容"""
    
    @staticmethod
    def extract_from_pdf(file_path):
        """提取PDF文件内容,保留结构信息"""
        try:
            # 清理文件路径
            clean_path = clean_filename(file_path)
            logger.info(f"处理PDF文件: {
     
     clean_path}")
            doc = fitz.open(file_path)
            
            # 提取元数据
            metadata = doc.metadata
            metadata_text = "\n".join([f"{
     
     key}: {
     
     value}" for key, value in metadata.items() if value])
            
            # 提取目录结构
            toc = doc.get_toc()
            toc_text = ""
            if toc:
                toc_text = "文档目录结构:\n" + "\n".join([f"{
     
     '  ' * (level-1)}{
     
     title} (页码: {
     
     page})" for level, title, page in toc])
            
            # 提取文本内容(按页处理)
            pages_text = []
            for page_num in range(len(doc)):
                page = doc.load_page(page_num)
                page_text = f"【第{
     
     page_num+1}页】\n"
                
                # 尝试提取表格
                try:
                    tables = page.find_tables()
                    if tables and hasattr(tables, 'tables') and len(tables.tables) > 0:
                        for table_num, table in enumerate(tables.tables):
                            page_text += f"【表格{
     
     table_num+1}】\n"
                            if hasattr(table, 'rows'):
                                for row in table.rows:
                                    try:
                                        row_items =
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值