FastGPT icon indicating copy to clipboard operation
FastGPT copied to clipboard

RAG知识库问答文本论据溯源,增强问答体验

Open lifei1102 opened this issue 9 months ago • 8 comments

例行检查

  • [x] 我已确认目前没有类似 features
  • [x] 我已确认我已升级到最新版本
  • [x] 我已完整查看过项目 README,已确定现有版本无法满足需求
  • [x] 我理解并愿意跟进此 features,协助测试和提供反馈
  • [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 features 可能会被无视或直接关闭

功能描述

RAG问答时,用户经常会希望知道AI回答的内容具体来源于那个文档的什么位置

我在本地版本中做了一版,反馈还可以,分享出来供参考,也期待官方可以更完善的支持该功能

应用场景

问答溯源增强

相关示例

实现效果

1、回答内容每条结论后带有原文引用查看的标签

Image

2、点击标签后,会打开对应的文档,并跳转到对应的段落位置,同时对引用内容进行高亮

Image

实现思路

1、提示词约束返回内容格式

Image

2、Markdown组件新增元素点击事件响应

Image

3、根据点击事件传入的参数,打开对应pdf文档,并跳转高亮相应位置

Image

lifei1102 avatar Mar 11 '25 05:03 lifei1102

感谢你的分享,PDF 原文高亮是个很好的交互。

目前内置有相关 markdown 引用语法。不过没有做原文追溯。

Image

c121914yu avatar Mar 11 '25 11:03 c121914yu

我们在设计时,考虑了以下几个问题:

  1. 无法使用 1,2,3,4 这种角标,因为可能会用多个知识库搜索节点。
  2. 如果编辑过分块,或者模型对分块内容做过加工和整理,则无法追溯原文。以及手动插入的数据和非 pdf 也无法原文追溯,所以我们单独用分块做了独立的阅读器,而不是在原文上追溯。
  3. 我看了下你这个提示词,似乎会把原文也输出一遍?感觉会太费 tokens,可以用的 id 匹配法。

c121914yu avatar Mar 11 '25 11:03 c121914yu

  1. 目前我的场景是单知识库,会先让AI判断内容应该去哪个知识库,所以没考虑多知识库的场景,但是从我理解来看多知识库对此是不影响的,只是需要调整一下从原文内容定位到知识库文档的逻辑

  2. 如果涉及到对原文内容的修改,那确实是无法对原文进行索引,但是我感觉在构建批量pdf知识库时直接修改原文是一个小概率行为,不然工作量也太大了

  3. 提示词中确实要求输出了原文,主要是以下几点考虑

  • 用户希望知道AI每条结论的原文依据,增强可信度,避免胡编乱造。依据的原文往往只是一两句话,和检索召回的分片是两个概念,给到一整个分片让用户去猜意义不大,另外分片展示和原文的格式有较大差异,非技术人员看Markdown格式的原文也觉得很别扭
  • 该需求实现中,只定位到对应的文件是不够的,还需要知道具体引用的文本内容,以及该文本在文件的什么位置,这些定位实现目前我能想到的就是让AI输出引用的原文片段

PS:现在token价格越来越低,做这种知识库的小伙伴应该不介意这点输出token,毕竟输入已经投入很多了

  1. 关于非pdf,几点思考供参考
  • 文件类知识转pdf是比较容易的,我遇到的梳理好的知识也是以pdf居多
  • 非pdf的实现需要调研文件预览组件是否支持跳转指定位置和高亮,如果支持,那么加入其他文件类型的原文对应也是可行的

lifei1102 avatar Mar 11 '25 12:03 lifei1102

不引用 github 回复了,太长了。

我理解你的思路了。 关于原文是否为 pdf 这个,我认为问题不大,直接纯文本来高亮展示对应引用即可,效果也差不多,不一定需要看到 pdf 格式,这样更通用些。而且可以做更多自定义操作。

重点区别在于,是让 ai 精准引用原文还是粗略引用分块的问题。

对于让 ai 精准输出来源,确实除了让它输出原文,好像没啥办法。

这个功能设计,除了考虑原文展示外,我觉得还可以一起考虑检索得分展示和标注。

c121914yu avatar Mar 11 '25 15:03 c121914yu

good job

qqshow avatar Mar 12 '25 10:03 qqshow

这个功能Ragflow已经实现了,但是Ragflow的文档解析太慢了,已被我放弃了

xiaoqiangch avatar Mar 16 '25 06:03 xiaoqiangch

楼主您好,请问是在哪个路径下改的代码呀

zhanglf180 avatar Apr 15 '25 09:04 zhanglf180

楼主您好,本人刚入门大模型,您实现的这个功能非常有实用性,请问能分享下代码吗或者能描述下怎么操作的呀?感谢感谢,可有偿

zhanglf180 avatar May 21 '25 05:05 zhanglf180