基本信息
文件名称:048-搜索索引及其相关技术概述【萌萌家】.pdf
文件大小:1.53 MB
总页数:5 页
更新时间:2025-03-14
总字数:约3.55千字
文档摘要

048|搜索索引及其相关技术概述

2017-12-22洪亮劼来自北京

《AI技术内参》

本周我们分享的主题是从宏观上来剖析现代搜索架构。周一我介绍了搜索系统的一个大的分

类,一类是从20世纪50年代开始研发并使用的传统文本匹配信息检索系统,一类是从2000

年开始发展并逐渐成熟的机器学习信息检索系统。周三我们剖析了搜索系统的另一个框架体

系,多轮打分系统,阐述了为什么需要多轮打分,以及每一轮打分又有什么特性。

今天,我们来看一个在本周已经反复涉及到的话题:倒排索引(InvertedIndex)。一起来聊

聊它的核心技术。值得注意的是,关于索引的很多话题其实都会牵涉到搜索中的“查询关键字

处理”(QueryProcessing),我们今天的分享就主要来谈谈索引及相关技术在“查询关键

字处理”这个场景下的应用。

经典的索引结构

经典的索引结构由“字段”(Field)和对应的列表组成。一般来说,“字段”就是某一个查

询关键字。在英文里,这就是一个单独的单词;在中文里,这也许就是一个词或者短语。每个

字段所对应的列表就是包含这个查询关键字的文档列表。

有两点值得注意。

第一,在文档列表里的文档,大多按照某种重要的顺序排列,这方便我们首先提取重要性高的

文档。比如,某个文档整体和查询关键字的相关度大,那么就会排列到这个列表的前面。

第二,对于每个字段,也就是查询关键字而言,所有包含这个查询关键字的文档并不一定都会

包含到这个列表中,这个列表可以是一个节选。

另外,我们前面已经讲过了,之所以叫做“索引”,也是因为这个列表中并不实际存储整个文

档,往往是只存储文档的编号。

如果用户输入的查询关键字包含多个词组,根据这个最基础的结构,我们可以很容易地获取包

含所有关键字的文档集合。这个操作仅仅相当于在多个列表中做“归并排序”(Merge

Sort)。

除了在索引中仅仅保存最基本的文档标号信息以外,另外一些文档的基础信息也可以一并存放

在索引中。比如,经常存放的信息还有文档包含某个查询关键字的次数。保存次数信息本质上

是在保存“词频”(TermFrequency)这个文档特性。

我们前面分享经典的信息检索模型的时候,介绍过很多模型,例如TF-IDF、BM25或者语言

模型,都对词频的计算有很强的依赖。在索引中存放词频信息有助于近似计算这些基础的检索

模型。

另外一个经常存放的信息就是查询关键字在文档中出现的位置(Position)。位置信息对于有

多个查询关键字的时候尤为重要。比如,我们要搜索的词组是“五道口电影院”。在这样的情

况下,我们非常希望“五道口”在某个文档中出现的位置和“电影院”在文档中出现的位置相

邻。这样,我们可以确认这个文档的确是关于“五道口电影院”的,而不是恰好含有“五道

口”和“电影院”这两个词。

同时,位置信息还可以帮助搜索引擎生成搜索结果界面上的“结果摘要”信息。我们经常看到

搜索结果页面上有几句话的摘要信息,这个信息就需要查询关键字的位置来生成。

索引技术

除了最基础的索引技术以外,研发人员开发了多种技术让索引更加高效。

第一个技术当然就是希望对索引进行压缩。索引信息很快就会随着可能的关键字数目的膨胀而

扩展。索引中每一个关键字所对应的文档列表也会越来越庞大。因此,能否快速处理索引信息

并为后续的计算节约时间就变得非常关键。本周三我们分享了多轮打分系统。多轮打分系统的

的一个重要思想就是整个流程必须在几百毫秒的响应时间内完成。因此,每一个步骤,包括从

索引中提取“顶部K个文档”的过程都需要很快捷。

压缩技术博大精深,我们在今天的分享中就不展开讨论这部分的内容了。在这里,我们只需要

从高维度上把握这个问题的一个基本思路。索引的一个基本信息就是相对于某个查询关键字的

文档列表。而存储在文档列表里的并不是文档本身的数据,而是文档的某种信息,比如文档本

身的编号。而编号就是数字,文档列表最终就是一个数字序列。压缩技术中有很多算法就是对

一个数字序列进行压缩。

那么,到底怎样才能起到压缩的作用呢?我们这里举一个例子。比方说,有一种压缩算法是基

于一种叫“差值编码”(DeltaEncoding)的技术。简单来说,就是不直接记录文档编号本

身,而是按照文档编号的顺序,记录文档编号之间的差值。

对于某些非常频繁的查询关键字而言,这些词汇有可能会出现在非常多、甚至是绝大多数的文

档中。而采用这种“差值编码”来对文档列表进行重新编排,我们就可以用一组很小的数(这

些数表达两个相邻文档编号的差值)来代表文档列表。当然,这种方法对于文档很少的查询关

键字效果肯定不明显。同时,这种技术也