chatFile相关问题。这里有一篇综述论文,讲的很清楚!推荐研读
https://simg.baai.ac.cn/paperfile/25a43194-c74c-4cd3-b60f-0a1f27f8b8af.pdf
用户输入问题?——>?把问题做BM25召回+把问题embedding然后做语义召回?——>?召回结果筛选,大于某个阈值,则用于构建prompt?——>?模型返回结果?——>页面回显
能解析:表格数据、图片数据、各个类型数据doc??PDF??markdown等
能分类:如何定制规则,不同的数据,不用的切分策略
扩展存储:类似将标题数据进行独立存储。这里有哪些数据是要继续扩展的,在后续的检索过程中可能会用到。
上下文数据:包括问答过程中的上下文?是否要存储。
像通义千问,就把问题都给记下来了。所以可以对问题进行总结。
数据切分规则:不同的数据,如何指定切分规则,才能更好的保留上下文内容。
问题生成方向:给用户生成问题,是为了获取很好的召回效果。就像出题一样,在出题前应该已经有正确答案了。反之会严重影响体验。
目前在问题生成上,存在较多的问题,经常发现,模型自己给的问题,无法正确回答!
问题能够正确回答,应该先理解问的是什么。其次是搜索能够把正确的内容召回,模型才有可能回答出来。而,能够搜索到的前提,是已经提前构建好有关数据。?所以在数据构建阶段,不仅要保证不丢失数据,还需要构建更多的元数据。
意图识别,先弄清楚?再到处理action上。是QA?摘要?总结?同看全文,标题提取?脉络分析?事件??经典反例:eg1?这篇文章在说什么?显然不能去搜索,应该去召回摘要。eg2?关于某某问题,都包含了哪几个点?此时
query?改写:用模型去改写query是否会有提生,看到比人有把问题经过GPT4,然后搜索召回会有提升。
思维链条:
问题拆解:是否需要将用户的复杂问题,进行拆分,然后再召回?
多路召回策略:
尽可能把和问题相关的数据召回。
多路召回后的数据,是否都包含了答案?如何把噪音数据清理掉?
多路召回的数据,如何做排序提升?目前分为BM25召回和向量检索召回。两者有各自的特点。向量语义检索,跟具有普适性,用户的问法可能和文档中的内容描述方式不一样,此时语义检索可以发挥好的作用。而BM25在用户输出的内容和文档强相关的时候,往往能获取到更好的效果,例如用户问题中的诸多关键词,都在原文中出现了,往往召回效果会比向量语义检索更好。?两者又有同样的缺点,在问题描述较短的时候,召回的效果较差。很短的词语在向量模型中,会丢失语义,因为在embedding的时候,就是用段落做的embedding。如果拿一个很短的词语去搜,不一定会有好的召回结果(这里可以探索,有没有更有效的文本嵌入模型)。同样BM25在很短词的检索场景下,召回会有太多的干扰项,如果一个词语被提及很多次,也同样不知道那条是答案。?
检索阶段的目标,是把和问题最相关的答案,尽可能的排在前边。其次是把和问题不相关的噪音数据排除掉,否则会出现回答错误的情况。
通过合理的构建prompt,获取更好的回答。根据微软最近发的论文,好的prompt,模型即使不进行微调,也能获取较好的答案。
适配还是提示?微软最新《通用大模型是否超过专业领域微调大模型》论文,GPT-4多种策略提示超越医学大模型
对于模型回答的结果,条理不够清晰。没有针对问题去做总结性的回答。文心一言和通义这点比较好。这里是不是可以通过prompt来做提升?
对于模型回答的结果,能否做验证?
全链路日志收集。用于快速研判错误。
对于日志的分析,如何将问题内循环,转为提升策略?尤其是用户踩的问答,如果作为反例去规避?
要不要把问答的内容,在构建成数据。作为检索的补充?
在通义chatGPT、千问上和文心一言上,生成问题。然后把这些问题,分别用chatGPT、文心一言、yayifile上去测试回答结果。然后把各个模型的结果做比对。暂时认为回答多的正确。?然后把问题,和回答不对的结果,回答正确的结果,做比对。?整体实现基于大模型的自动化测试。
https://monica.im/webapp/doc-chat
Chat?with?PDF?|?Chat?PDF?|?ChatPDF
ChatPDF:?Free?Online?Chat?With?PDFs?-?Powered?by?ChatGPT
PDF.ai?|?Chat?with?your?PDF?documents
ChatPDF?powered?by?AI?-?Shulex?VOC
文心一言?、通义千问?都有该功能
通义千问
文心一言