当前位置: 首页 > news >正文

【实战】Dify从0到100进阶--文档解读(8)文档列表节点

在这里插入图片描述

文档提取器节点(Document Extractor)

定义

文档提取器节点负责将上传的文档文件解析成可读的文本,供下游 LLM 节点或其他节点使用。它填补了 LLM 无法直接读取文件内容的空白。

输入变量

  • File:单一文件
  • Array[File]:文件数组

支持格式:TXT、Markdown、PDF、HTML、DOCX 等文本文档;不支持:图片、音频、视频等二进制多媒体格式。

输出变量

  • text
    • 当输入为 File 时,输出类型为 string,包含整个文档的文本内容。
    • 当输入为 Array[File] 时,输出类型为 array[string],每个元素对应一个文件的提取文本。

核心流程

  1. 上传文件 → “开始”节点产生 File/Array[File] 变量
  2. 文档提取器 读取文件、抽取文本 → 输出 text
  3. 后续节点(如 LLM、列表操作)使用 text 变量进行处理或问答

应用场景

  • ChatPDF/ChatWord:用户上传 PDF 或 Word,系统自动提取后进行对话问答。
  • 批量文档审核:上传多份合同或报告,提取文本后统一进行关键字检查或风险评估。

配置示例

  1. 开始节点:允许上传单文件或多文件,输出变量命名为 docs

  2. 文档提取器节点

    • 输入:选择 docs
    • 输出:自动生成 text(若多文件,则为 texts 数组)
  3. LLM 节点:在提示中引用 ${text} 或遍历 ${texts},实现对文档内容的理解与回答。

列表操作节点(List Operator)

定义

列表操作节点用于对数组类型的变量进行可视化、过滤、映射、拼接等常见操作,简化对 Array[T] 数据的批量处理。

支持功能

  1. Filter(过滤)

    • 通过条件表达式筛选数组元素
  2. Map(映射)

    • 对每个元素应用同一个表达式或模板,生成新数组
  3. Reduce(汇总)

    • 对数组元素进行累积计算(如求和、拼接字符串等)
  4. Split / Flatten(拆分/展平)

    • 将嵌套数组展平成单层,或按分隔符拆分字符串数组
  5. Join(拼接)

    • 将数组元素按指定分隔符合并成一个字符串

输入与输出

  • 输入变量:任意类型的数组,如 Array[string]Array[object]
  • 输出变量:新生成的数组或单一变量,名称可自定义(如 filtered, mapped, joinedText 等)

核心流程示例

操作类型配置示例作用
过滤条件:item.score > 0.8从知识检索结果中,只保留相似度大于 0.8 的条目
映射模板:{{ item.title }}:{{ item.content }}将对象数组变成一个文本数组,格式化每条内容
汇总初始值:"",累加逻辑:acc + item + "\n"将文本数组拼接成一个长字符串
展平输入:nestedList将多维数组 [[a,b],[c,d]] 转为 [a,b,c,d]
拼接分隔符:","将字符串数组 ["a","b","c"] 合并为 "a,b,c"

配置示例:知识检索后的流转

  1. 文档提取器 得到 texts = [doc1, doc2, …]

  2. 列表操作 – 映射

    • 输入:texts

    • 模板:

      ## 文档{{ loop.index }}  
      {{ item|truncate(200) }}
      
    • 输出:summaries(Array[string])

  3. 列表操作 – 拼接

    • 输入:summaries
    • 分隔符:\n\n---\n\n
    • 输出:fullReport(string)
  4. LLM 在提示中使用 ${fullReport},完成后续对话或生成最终报告

http://www.dtcms.com/a/286893.html

相关文章:

  • 深入剖析 Delta Live Tables (DLT):声明式数据管道的核心原理与底层实现
  • git:tag标签远程管理
  • 公贝固定资产管理系统对接HR、财务及采购系统的方案与效益
  • 【实用工具】HDCleaner:高效、安全、免费的系统清洁工具,免费的电脑清理垃圾神器,20秒扫出20G垃圾!
  • LP-MSPM0G3507学习--05中断及管脚中断
  • 习题4.1 输出3个人的顺序
  • APIs案例及知识点串讲(下)
  • NFS读写性能评估与优化指南(上)
  • Android性能优化之电量优化
  • C 语言字符大小写互转:tolower / toupper 详解与实战
  • MySQL使用any_value()函数解决only_full_group_by报错
  • IT 和OT指的什么?
  • 短视频矩阵的时代结束了吗?
  • 智能点餐推荐网站,解决选择困难
  • Linux基础IO通关秘籍:从文件描述符到重定向
  • 使用wrk对api接口进行性能测试
  • 机器视觉基础(直播回放)
  • git从本地仓库添加到远程仓库
  • 人工智能day9——模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • MinIO 分布式文件系统
  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • android14截屏
  • 短视频矩阵系统:从源头到开发的全面解析
  • 电源PCB设计的热管理攻坚战:从散热瓶颈到高功率密度突破
  • 3.0 - 指针-序列化
  • 傅里叶积分法求解偏微分方程
  • 第七章 愿景09 海波龙的坑
  • 【Python练习】048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应
  • springCloud -- 微服务01
  • MoveIt