huangPengL/ChatGPT-Java-FunAi

请问大佬在做文件的问答时,如何实现对批量上传的文件进行隔离

Closed this issue · 2 comments

场景是我上传了 5 个文件,要对这五个文件进行问答,这五个文件是产品手册类型的,即产品手册 A, 产品手册 B,产品手册 C,产品手册 D,产品手册 E。然后我提问某个产品的某个属性值,例如“产品 A的电子特性”,我之前自己做的类似文档问答系统就会召回好几个产品的电子特性相关的切片,然后给LLM 去总结答案。但是对于 LLM 来说这些切片都是描述电子特性的,不能确定具体哪个是产品 A,所以一般会总结出混淆之后的错误答案。

我试了一下大佬的这个系统,发现总结的答案是做到了文件隔离的,也就是我问产品 A,返回的结果就只是产品 A 的内容,并没有受到其他同批上传的文件的影响,并且在回答中准确地给出来了文件来源。因为只是粗读了一下大佬的代码,并没有找到针对这个问题的处理。

请问能解答一下这个问题吗?

可以确定的是我们的做法大体上类似。但是有些细节可能需要考虑下:

  1. 切片算法需要保证每个切片的完整性;
  2. 切片的粒度需要控制不能过小(我们每个切片的字符长度控制不大于1000);
  3. 如果你的问题信息定位到了文档名,那么建议当前文档每个分片的末尾拼接上文档相关信息。比如:产品手册A的分片1后面拼接字符串“SOURCE: 产品手册A”;

Ps: 源码好久没更新了,相对线上项目比较滞后