RAG开发落地求助, 佬友们救我救我

wwwwwhj 2026-06-04 16:14 1

需要做一个 jsa工作安全风险分析助手 的rag


已经有的材料:


数百份 jsa工作安全风险分析.xsxl 的excel文件


需要达成的目的:



  1. 可以稳定的询问出已经存在的文档内容

  2. 当询问内容不存在时需要根据已有内容给出建议

  3. 需要按模板将建议再转换为 excel 文件, 然后再回到知识库中

  4. 需要根据用户会话区分, 不同用户有自己的上下文隔离


目前方案和打算:



  1. 使用dify的chatflow

  2. 计划流程为: 用户询问->意图识别->问题整理->rag检索->大模型总结->格式化输出

  3. 知识库使用父子分块


疑问:



  1. 父子切块如何切召回更合理? 目前按自己的理解写了脚本切块, 但是感觉怪怪的, 有没有佬救一下.




这是excel文件截图, 我将人名马赛克了





这是我做的父子切块md文件, 大概思路就是按步骤切子分块

# 901-003 C-0102A复位
901-003 C-0102A复位包含8个作业步骤,包含17条风险记录。
901-003 C-0102A复位的JSA编号为JSA-901-003。
901-003 C-0102A复位的作业编号为901-003。
901-003 C-0102A复位的风险评估参与人为****。
901-003 C-0102A复位的编制时间为2025.9.29。
901-003 C-0102A复位的通用PPE为安全帽、防护眼镜、安全鞋、阻燃防静电工作服。
901-003 C-0102A复位的主要风险包括:吊具,吊带破损导致吊物坠落,人员砸伤;螺栓紧固时,机械伤害;塔对接时,手夹伤;碰撞/滚动/车辆伤害;使用扳手,造成机械伤害;手拉葫芦失效,塔节坠落砸伤;孔洞临边作业,人员坠落;人员坠落;静电产生,着火;吸入甲醇,中毒;拆除人孔螺栓时,机械伤害;拆除时链条的势能导致机械伤害。
901-003 C-0102A复位的步骤顺序为:1 叉车把新塔节叉至指定位置;2 拆除新塔节保护板,并清理密封面;3 新旧塔节在一楼地面连接;4 检查固定底部塔节的手拉葫芦;5 把组装好的塔节吊至塔节孔洞安装;6 管道连接复位;7 拆人孔,倒入填料;8 拆除手拉葫芦。
901-003 C-0102A复位的工作内容概览:工作内容C-0102A复位包含8个步骤。

# 901 C-0102A复位 叉车把新塔节叉至指定位置
901 C-0102A复位, 叉车把新塔节叉至指定位置的作业区域为901。
901 C-0102A复位, 叉车把新塔节叉至指定位置是第1/8步,上一步为无,下一步为拆除新塔节保护板,并清理密封面。
901 C-0102A复位, 叉车把新塔节叉至指定位置需要2人执行。
901 C-0102A复位, 叉车把新塔节叉至指定位置时存在碰撞/滚动/车辆伤害的风险。
901 C-0102A复位, 叉车把新塔节叉至指定位置时针对碰撞/滚动/车辆伤害的预防控制措施为1、车辆限速15km/h。;2、塔节固定在托盘上。;3、专人指挥。
901 C-0102A复位, 叉车把新塔节叉至指定位置碰到碰撞/滚动/车辆伤害时,应立即使用急救药箱,视情况拨打120送医,启动应急救援小组。

# 901 C-0102A复位 拆除新塔节保护板,并清理密封面
901 C-0102A复位, 拆除新塔节保护板,并清理密封面的作业区域为901。
901 C-0102A复位, 拆除新塔节保护板,并清理密封面是第2/8步,上一步为叉车把新塔节叉至指定位置,下一步为新旧塔节在一楼地面连接。
901 C-0102A复位, 拆除新塔节保护板,并清理密封面需要2人执行。
901 C-0102A复位, 拆除新塔节保护板,并清理密封面时存在使用扳手,造成机械伤害的风险。
901 C-0102A复位, 拆除新塔节保护板,并清理密封面时针对使用扳手,造成机械伤害的预防控制措施为通用PPE+布手套。

# 901 C-0102A复位 新旧塔节在一楼地面连接
901 C-0102A复位, 新旧塔节在一楼地面连接的作业区域为901。
901 C-0102A复位, 新旧塔节在一楼地面连接是第3/8步,上一步为拆除新塔节保护板,并清理密封面,下一步为检查固定底部塔节的手拉葫芦。
901 C-0102A复位, 新旧塔节在一楼地面连接需要6人执行。
901 C-0102A复位, 新旧塔节在一楼地面连接时存在吊具,吊带破损导致吊物坠落,人员砸伤的风险。
901 C-0102A复位, 新旧塔节在一楼地面连接时针对吊具,吊带破损导致吊物坠落,人员砸伤的预防控制措施为根据专项吊装方案执行吊装作业,检查吊具,吊带完好性,并试吊;警戒,专人监护,严禁无关人员进入。
901 C-0102A复位, 新旧塔节在一楼地面连接时存在塔对接时,手夹伤的风险。
901 C-0102A复位, 新旧塔节在一楼地面连接时针对塔对接时,手夹伤的预防控制措施为对接时,严禁将手探入塔节对接面,撬棒插入螺栓孔对接。
901 C-0102A复位, 新旧塔节在一楼地面连接时存在螺栓紧固时,机械伤害的风险。
901 C-0102A复位, 新旧塔节在一楼地面连接时针对螺栓紧固时,机械伤害的预防控制措施为通用PPE+布手套。

# 901 C-0102A复位 检查固定底部塔节的手拉葫芦
901 C-0102A复位, 检查固定底部塔节的手拉葫芦的作业区域为901。
901 C-0102A复位, 检查固定底部塔节的手拉葫芦是第4/8步,上一步为新旧塔节在一楼地面连接,下一步为把组装好的塔节吊至塔节孔洞安装。
901 C-0102A复位, 检查固定底部塔节的手拉葫芦需要2人执行。
901 C-0102A复位, 检查固定底部塔节的手拉葫芦时存在手拉葫芦失效,塔节坠落砸伤的风险。
901 C-0102A复位, 检查固定底部塔节的手拉葫芦时针对手拉葫芦失效,塔节坠落砸伤的预防控制措施为检查手拉葫芦的吊钩安全扣,链条腐蚀情况,钢丝绳及锚点完好性。

# 901 C-0102A复位 把组装好的塔节吊至塔节孔洞安装
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装的作业区域为901。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装是第5/8步,上一步为检查固定底部塔节的手拉葫芦,下一步为管道连接复位。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装需要6人执行。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时存在孔洞临边作业,人员坠落的风险。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时针对孔洞临边作业,人员坠落的预防控制措施为五点式安全带,限位绳。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时存在吊具,吊带破损导致吊物坠落,人员砸伤的风险。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时针对吊具,吊带破损导致吊物坠落,人员砸伤的预防控制措施为根据专项吊装方案执行吊装作业,检查吊具,吊带完好性,并试吊;警戒,专人监护,严禁无关人员进入。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时存在塔对接时,手夹伤的风险。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时针对塔对接时,手夹伤的预防控制措施为对接时,严禁将手探入塔节对接面,撬棒插入螺栓孔对接。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时存在螺栓紧固时,机械伤害的风险。
901 C-0102A复位, 把组装好的塔节吊至塔节孔洞安装时针对螺栓紧固时,机械伤害的预防控制措施为通用PPE+布手套。

# 901 C-0102A复位 管道连接复位
901 C-0102A复位, 管道连接复位的作业区域为901。
901 C-0102A复位, 管道连接复位是第6/8步,上一步为把组装好的塔节吊至塔节孔洞安装,下一步为拆人孔,倒入填料。
901 C-0102A复位, 管道连接复位需要6人执行。
901 C-0102A复位, 管道连接复位时存在人员坠落的风险。
901 C-0102A复位, 管道连接复位时针对人员坠落的预防控制措施为五点式安全带,通用PPE+布手套,止坠器。
901 C-0102A复位, 管道连接复位时存在吊具,吊带破损导致吊物坠落,人员砸伤的风险。
901 C-0102A复位, 管道连接复位时针对吊具,吊带破损导致吊物坠落,人员砸伤的预防控制措施为检查吊具,吊带完好性,并试吊;警戒,专人监护,严禁无关人员进入;遛绳。
901 C-0102A复位, 管道连接复位时存在螺栓紧固时,机械伤害的风险。
901 C-0102A复位, 管道连接复位时针对螺栓紧固时,机械伤害的预防控制措施为通用PPE+布手套。

# 901 C-0102A复位 拆人孔,倒入填料
901 C-0102A复位, 拆人孔,倒入填料的作业区域为901。
901 C-0102A复位, 拆人孔,倒入填料是第7/8步,上一步为管道连接复位,下一步为拆除手拉葫芦。
901 C-0102A复位, 拆人孔,倒入填料需要5人执行。
901 C-0102A复位, 拆人孔,倒入填料时存在静电产生,着火的风险。
901 C-0102A复位, 拆人孔,倒入填料时针对静电产生,着火的预防控制措施为灭火器、气体检测仪检测、采用防爆工具拆卸。
901 C-0102A复位, 拆人孔,倒入填料碰到静电产生,着火时,应人员远离,初期灭火:在火灾初起阶段,若现场人员受过培训且确保安全,应迅速使用灭火器、消防栓等进行扑救;火势扩大启动全厂应急预案。
901 C-0102A复位, 拆人孔,倒入填料时存在吸入甲醇,中毒的风险。
901 C-0102A复位, 拆人孔,倒入填料时针对吸入甲醇,中毒的预防控制措施为设备完成清洗,半面式呼吸器。
901 C-0102A复位, 拆人孔,倒入填料碰到吸入甲醇,中毒时,应抬至通风空旷处,立即使用急救药箱,视情况拨打120送医,启动应急救援小组。
901 C-0102A复位, 拆人孔,倒入填料时存在拆除人孔螺栓时,机械伤害的风险。
901 C-0102A复位, 拆人孔,倒入填料时针对拆除人孔螺栓时,机械伤害的预防控制措施为通用PPE+布手套。
901 C-0102A复位, 拆人孔,倒入填料碰到拆除人孔螺栓时,机械伤害时,应立即使用急救药箱,视情况拨打120送医,启动应急救援小组。

# 901 C-0102A复位 拆除手拉葫芦
901 C-0102A复位, 拆除手拉葫芦的作业区域为901。
901 C-0102A复位, 拆除手拉葫芦是第8/8步,上一步为拆人孔,倒入填料,下一步为无。
901 C-0102A复位, 拆除手拉葫芦需要4人执行。
901 C-0102A复位, 拆除手拉葫芦时存在拆除时链条的势能导致机械伤害的风险。
901 C-0102A复位, 拆除手拉葫芦时针对拆除时链条的势能导致机械伤害的预防控制措施为通用PPE+布手套,先松链条双人确认再进行拆除。

```markdown




这是dify中知识库内显示的切块




  1. 是继续选择dify还是别的技术栈, 似乎chatflow的边界很难控制, 控制多了像人机, 控制少了不稳定.

  2. 这种rag怎么做基准测试? 有没有推荐的测试方案哇

  3. 计划流程是对的吗? 我也是到处找资料搞出来的

  4. 其实意图识别和问题整理我想要加入大模型来介入, 但是大模型如何多轮重入和工作流怎么画一点头绪没有

最新回复 (19)
  • MinQ 06-04 16:29
    1

    看看WeKnora吧,虽然我觉得他们的方向也有问题

    excel天生就不好做chunk,一般都是外挂一个DB把excel扔进去

    甚至我觉得现在切块这条路就是死路一条,虽然这只是我个人的看法


    RAG有一些基准测试可以做,比如scifact数据集,看召回率之类的,你也可以让AI根据文档构造自己的测试例


    计划流程可以考虑改成ReAct,实测回答效果会比一次性的好很多,就是慢和废token,如果对自己的rerank有信心的话可以强制一下ReAct轮数


    我现在把我自己的开源项目改成企业级知识库在公司内试用,暂时还没结论。之前原型简单测了5000多个文件表现良好

  • wwwwwhj 楼主 06-04 16:41
    2

    目前我想的是我将excel按一定规则转换成md去chunk, 源excel文件单独放在一个文件服务器来提供源文件的下载和给脚本读取转换, 这样子就可以兼顾源文件的取回和chunk.

    chunk后的召回感觉有点玄学, 所以才会想要在前方加入大模型的介入意图识别和问题整理和多轮重入, 多次的结果再总结, 输出.


    佬的项目我可以学习一下吗, 我参考一下嘿嘿嘿 ^-^


    我去学习一下佬提到的内容, 感谢佬

  • MinQ 06-04 16:46
    3

    ^-^我自己excel chunk干了以后召回效果稀烂,后来就放弃治疗了

    召回以后还需要根据语义rerank一下,效果会好一些


    我的项目在这里:【开源自荐】Marginalia:一个面向私人异构资料库的 AI 检索 / 调查系统

  • LEO 06-04 16:49
    4

    是公司的项目么?省心点直接上第三方吧,用 GCP 把文件上传到 cloud storage,然后 https://docs.cloud.google.com/generative-ai-app-builder/docs/create-data-store-es 创建 vertex AI search API。

    佬的需求是做 chatbot,就更容易了,平台可以直接搭建然后能搜到企业内的文档

  • Alixy 06-04 16:57
    5

    佬可以试试用LLM切分,根据具体场景来。

    配合ragas进行评估然后迭代优化 ^-^

  • Rui-nnovation 06-04 17:14
    6

    一摸一样的场景,简单的说一下目前是将 excel 的文本直接用大模型给变成 QA 问答的那种形式的文档做好分类,这样就不需要切片了,直接向量+关键词匹配问题,然后给答案就好,速度很快,答案也准


    切片一直是一个伪命题,哪里有万能的切片方法可以匹配那么多的文档,效果太差了

  • ETC 06-04 17:18
    7

    命中不在QA文档的问题如何处理?是直接不回复还是让大模型根据资料回答

  • Rui-nnovation 06-04 17:20
    8

    因为是向量匹配,所以总是会命中的,只是置信度较低,这个时候把匹配的都丢给大模型即可,在我的场景下如果置信度较低就直接拒绝回复了,我是做法规场景的

  • ETC 06-04 17:24
    9

    要不要改写问题?就是针对用户的提问来改写,增加关键词命中率。

  • Robinson Andy 06-04 17:25
    10

    干了很久的rag了。目前的经验是切片策略需要一事一议。不是给什么文档就是一顿chunk,而是需要分析文档格式、文档的内容结构,然后设计相匹配的切片策略。之前也做了一堆excel格式的文档 把表格转换为自然语言描述,然后再做chunk。检索召回率非常高。可以尝试下。

  • Rui-nnovation 06-04 17:26
    11

    当然了,我们是有一个比较复杂的编排来控制的简单说一下思路,做了一些词库让 llm 把用户提的不专业问题改成专业名词的,前期工作比较复杂,但是效果稳定

  • X先生 06-04 17:34
    12

    领导最近也一直在搞这个,基于企业内部文档、图片等等资料作为知识库做问答或者分析的智能体,很头疼,也是dify搭的,也用了MinerU的父子切片,回复慢,准确率很不稳定 ^-^ 有没有大佬出一些干货教程,狠狠给我们开开眼界

  • lovely_up 06-04 17:35
    13

    话说,我一直觉得chunk不是rag未来的方向,想的是graphRAG+对应实体上下文才靠谱,目前还在尝试,现在有没有试过这个啊 ^-^

  • ETC 06-04 17:35
    14

    有遇到时间与回答质量之间的矛盾吗?文档多了检索时间会边长,检索优化减少一下,回答质量差了很多。目前是直接将QA的问答的放进向量数据库吗?还是全部都放进去

  • wwwwwhj 楼主 06-04 17:35
    15

    好像也是好主意, 但是需要全流程可监管接入, 因为后续还需要迭代

  • wwwwwhj 楼主 06-04 17:37
    16

    qa问答有一版尝试过, 召回有点零散, 回不来全部内容, 主要有些条目是多条的, 这种怎么处理哇

  • zay 06-04 17:38
    17

    佬能发一些资料给我吗,我想试试你这种场景在wiki模式下效果如何,正好在测试,到时候可以开放接口你也可以试试。



    本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:

    我的帖子已经打上 开源推广 标签: 是
    我的开源项目完整开源,无未开源部分: 是
    我的开源项目已链接认可 LINUX DO 社区: 是
    我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
    以上选择我承诺是永久有效的,接受社区和佬友监督: 是

    以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出

    [!…
  • wwwwwhj 楼主 06-04 17:39
    18

    我现在的切法是这样的吗, 我感觉已经尽力转成自然语言了, 但是有种说不上来的奇怪, 也是有点零散

  • wwwwwhj 楼主 06-04 17:43
    19

    graphRAG好像也要生成text被向量和抽取, 佬你快成了我要学!

* 帖子来源Linux.do
返回