倒排索引初步认识
RAG分词器的相关知识:
倒排索引:
倒排索引就是建立“ 词 → 包含这个词的文档 ”的映射,从而让搜索系统能够快速找到相关文档
可以理解为字典的反向查找表
正常来讲是先去找文档,然后看文档里面有什么词,但这样操作在文档数量少的时候还行,一旦文档数量非常多的时候,例如1000万篇文档,这个时候一篇一篇文档去查找关键词,效率会非常低,所以也就用到了倒排索引
之所以叫倒排,就是因为它是通过去比对关键词,找出这个词所归属的文档,从而快速锁定关键词所在的文档,这种就属于稀疏检索。
例如成都 -> [doc1, doc2, doc4],旅游 -> [doc2],当用户同时问到成都和旅游,还可以做交集,得知doc2为既包含成都也包含旅游的文档就实现快速精准的检索
说到这里,联系一下稠密检索中的向量检索,这里的倒排索引和BM25这种都属于稀疏检索,根据关键词来检索出相关文档,只会搜索出包含一模一样的关键词在内的文档,有一个字不一样都会被过滤。
而向量检索则是根据语义来检索,例如用户问我今天想去蓉城玩,而如果词库中只有成都,没有蓉城,BM25没有找到包含蓉城的文档,就会失效。而向量检索会分析语义,判断出蓉城 == 成都,所以就会检索出成都相关的文档。