采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
检索的本质意义就是:希望检索到的上下文是和问题本身是相关的,而且语义是完整,丰富的(或者说信息完整,有完整上下文)。而父子文档的特点是:
父文档:通常文本长度较长,信息语义相对完整(比如有背景,有说明,有结论)
子文档:是父文档中的某一个部分,表现的是某个具体的细节。(可能有结论,或者可能只有说明)
而对于embedding模型来:就是提取文本的语义信息,也就是文本映射到一个数值向量里(可以认为是一种信息压缩),如果是长文档,提取的语义可能有丢失,特别是一段文档中包含很多语义信息时。如果是子文档,是相对具体的,提取的embedding语义就会相对准确一些。
基于这一点出发:1、 子文档的embedding 和问题的embedding 做相似度匹配,更容易匹配到 相关的内容 【但是子文档是缺少完整上下文的】
2、所以返回给出来的子文档对应的父文档, 这样就有相对完整的上下文,可以提供更加全部的信息给大语言模型回答问题
所以:父子文档检索到的内容是:相关的,且完整的上下文
当然这是比较理想的情况下的理论依据,也是父子文档检索设计的初衷
谢谢您的回复,很有帮助,但是我还有一点不要理解,为什么父文档和子文档的 embedding 模型不一样?父文档和子文档用一样的 emebedding 模型也可以达到您说的上述效果吧?
父子文档检索中,只会对子文档和问题生成embedding,不会对父文档做embedding。在检索过程中,embedding模型可以用一样的,只不过目前开源bert架构(如bge等)的embedding模型对于短一些的文本效果好一些。
登录后可查看更多问答,登录/注册
RAG全栈技术从基础到精通 ,打造高精准AI应用
504 8
67 8
343 7
1.1k 7
515 7
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号