什么是问答系统(Question Answering Systems)
Question Answering Systems(问答系统)是一类计算机系统,专门设计用来回答用户提出的特定问题。这些系统通常利用一组预先定义的规则、算法或者机器学习模型来从一个或多个数据源(例如,数据库、文本文档、网页等)中检索或生成答案。
问答系统可以根据其应用场景和功能被分类为不同的类型:
- 基于检索的问答系统:这类系统从一个预先构建的数据库或文档集合中检索信息来回答问题,常见的算法有 TF-IDF、BM25 等。
- 基于规则的问答系统:这类系统使用一组预定义的规则来生成答案。
- 基于机器学习的问答系统:这类系统使用机器学习算法(通常是深度学习模型)来理解问题和生成或检索答案。
以上内容来源于 ChatGPT 的回答。
问答系统的核心价值主张是使获得问题的答案变得容易——
- 问答(QA)系统降低了获得所需答案所需的精神成本和时间。
- 与传统检索系统相比,它们可以更直接地解决信息需求,但也存在用户过度信任和依赖此类系统的风险。
检索系统的演变
检索系统(Information Retrieval Systems)是一种用于查找、检索和组织信息的计算机系统或软件。它们的历史可以追溯到图书馆的卡片目录系统,但随着计算机和互联网的出现,检索系统已经发生了显著的演变。现代检索系统不仅用于图书和学术文章,还广泛应用于网页、多媒体内容、社交媒体信息等。
早期的检索,如 Fac-Tronic System 它是最早期的计算机基础检索系统之一,它为图书管理员提供了多种查询选项,包括按作者、DoD合同号、主题标题以及主题描述符进行搜索。该系统通过返回与查询匹配的文档的书架位置来辅助信息检索。在搜索匹配文档时,Factronic 采用了一种直接而简单的方法,即通过对所有可用文档列表进行线性扫描来找到匹配项。
Fac-Tronic 及其继承者们塑造了未来七十年信息检索领域的主导范式。在这一范式中,有信息需求的个体会将其需求转化为具体的查询语句,并提交给检索系统。作为响应,系统会提供一份可能符合该信息需求的文档引用列表。在理想情况下,这些文档引用会按照相关性进行排序,并附带与查询相关的段落的简要摘要。
经典检索系统
概念:经典检索系统(Classic Information Retrieval Systems)是一种早期的信息检索系统,主要用于查找和组织存储在数据库或文档集合中的信息。这些系统通常基于一组预定义的规则和算法,如布尔逻辑、向量空间模型(VSM)等,来匹配用户查询和文档。

图示展示了搜索引擎在三个不同年代的用户界面,从 1996 年到 2023 年。尽管 2023 年的用户体验相较于 1996 年有了显著提升,但其基础范式依然未发生改变。用户仍然通过提交描述其信息需求的查询,来获取一份可能相关网页的链接列表,这些链接通常会附带一个简短的“摘要”,以便用户在不访问网站的前提下估算其实际相关性。值得注意的是,现代搜索引擎已经能够直接回答某些特定类型的查询,比如关于天气或基础事实的问题,然而大多数查询的结果依然是 “10个蓝色链接”。
使用传统检索系统会产生一定的成本,不仅在时间上,还在认知负荷方面。用户需要将他们的信息需求精细化为查询语句,然后仔细浏览可能相关的文档结果列表,或者是少数几篇文档,以达到他们的需求。这一过程被安德烈·布罗德(Andrei Broder)和普雷斯顿·迈克菲(Preston McAfee)称为信息收集的“德尔菲成本”,涉及到++时间投入++、++认知负荷++ 和 ++互动成本++。
“Term” 文档搜素的最小单位
简单总结,“Term” 是搜索引擎用于索引和查询的基础信息单元。
之前提到的 Fac-Tronic 系统,它允许用户通过合同号、作者和主题标题及描述符来搜索文档。合同号和作者名对于定位已知内容是有用的,但对于探索未知的信息领域则不然。
在1952年,Taube、Gull和Wachtel提出了一种用于对文档中的单个词进行索引的方法,这包括文档的标题、主题描述符、关键词,甚至是摘要(当时全文索引还是不可行的)。这种方法被称为“Uniterm coordinate indexing”(Uniterm坐标索引),其核心思想是将文档视为一个词袋模型。
在信息检索和搜索引擎技术中,“Term”(术语或词项)通常被认为是搜索的最小单位。这意味着在搜索引擎进行索引、查询处理和相关性评分时,“Term” 是基础的信息单元。
倒排索引
在 Uniterm 的应用场景中,我们需要一种有效的方式来将查询词与文档相匹配。倒排索引就是这样一种高效的解决方案。在文档集合的词汇表里,每一个单词都会被映射到一个“倒排列表”,这个列表记录了该单词在所有文档中出现的位置。倒排索引不仅支持基础查询,还能处理更复杂的查询类型,如合取查询、析取查询、邻近查询、短语查询,甚至包括排除或否定查询。这些查询可以组合使用,从而提供了一种丰富的方式来表达用户的信息需求。作为附加优点,这种索引结构也便于计算如词频-逆文档频率(tf-idf)和BM25等词汇评分函数。


在倒排索引检索系统中,术语是未经解释的,这意味着系统并没有捕获术语之间的语义关联。比如说,尽管“turtle”(乌龟)和“tortoise”(龟)在英语中是近义词,索引系统会将它们视为两个完全不同的词。为了弥补这一缺陷,这类检索系统通常在预检索阶段使用同义词和权重来优化查询词,以便进行更准确的评分。
布尔和邻近运算可以高效地实现,仅需遍历查询词的倒排列表。倒排索引还具有很好的可扩展性,可以通过分片到多台计算机来处理大型语料库。索引还可以实时更新,通过创建多个层次并定期合并它们来实现。
与Salton的术语向量模型非常匹配,倒排索引的结构便于计算词频(tf)、逆文档频率(iDF)或BM25等评分指标。然而,这种方法在寻找语义上相似(而非仅在词汇上)的文档方面表现不佳。
Salton的术语向量模型(Salton’s Term Vector Model)是信息检索和文本挖掘中用于表示文档和查询的一种模型。该模型由Gerard Salton和他的同事们在20世纪60年代末至70年代初提出。在这个模型中,文档和查询都被表示为多维空间中的向量。每个维度对应一个术语(通常是单词),而该维度上的值通常是该术语在文档中的权重,这可以是词频(TF)、逆文档频率(IDF)或其他复杂的权重。
工作原理
假设有一个词汇表,其中包含所有可能出现在文档或查询中的术语。每个文档(或查询)都可以表示为一个向量,其中每个元素对应于词汇表中一个术语的权重。通过这种方式,文档和查询都被转换为同一空间中的点,从而可以使用各种相似度度量(如余弦相似度)来比较它们。简单总结
Salton的术语向量模型是一种将文档和查询表示为多维空间中向量的方法,其中每个维度对应一个术语,而该维度上的值是该术语的权重。这种表示方式便于使用各种相似度度量来比较文档和查询。
“经典”网络搜索引擎的架构

上图展示了一个“经典”网络搜索引擎的架构。
该系统有两个部分,一个离线组件负责获取和预处理网络内容,一个在线组件负责接收查询并返回结果页面。
这两部分通过两个存储库连接在一起——++爬取的网页语料库++ 和 ++这些页面中所有术语(Term)的索引++。
网页内容由爬虫程序抓取,然后存储到语料库并加入到索引中。当用户发起查询时,前端首先从索引里找到相关文档的引用。接着,前端从语料库中拉取这些文档,并为每个结果生成一个摘要。
词嵌入的出现
在语料库(即大量文本数据集)中,语义相关的词语(或术语)更有可能在同一文档或上下文中一起出现,而与之不相关的词则相反。
在信息检索中,有两种主要的模型:
一是 潜在语义分析(LSA),它依赖于词语的共现性质;
二是由Salton提出的 向量空间模型,该模型假设所有词语是统计独立的。
这两种模型各有优缺点,但都受到其基础数据结构(如倒排索引)的限制。
2010年代初,出现了两个重要的突破:词嵌入 和 向量数据库。
词嵌入能够捕捉词语、句子、段落或文档之间的语义相关性。
“The advent of word embeddings”(词嵌入的出现)指的是自然语言处理(NLP)和机器学习领域中一种用于表示词语的高维向量模型的普及和应用。词嵌入模型如Word2Vec、GloVe等,能够捕捉词语之间的语义和句法关系,这是传统基于词袋模型或TF-IDF等方法所难以实现的。
工作原理
词嵌入通常是通过大量文本数据上的无监督学习得到的。这些高维向量能够捕捉词语之间复杂的关系,比如同义词、反义词、上下文关系等。例如,在词嵌入空间中,“king” - “man” + “woman” 接近于 “queen”。
向量数据库则能高效地进行最近邻搜索。
向量数据库 是一种专门用于存储和检索高维向量数据的数据库。这些向量通常是由机器学习模型(如词嵌入或图像识别模型)生成的。向量数据库的主要特点是能够高效地进行最近邻搜索,即在给定一个查询向量的情况下,快速找到数据库中与之最相似(或“最近”)的向量。
谷歌的研究人员在 2014 年的一篇论文中提出将词嵌入技术从单词级别扩展到可变长度词序列(如句子、段落或整个文档)
在原始的词嵌入模型中,每个单词都由一组固定长度的实数表示。这篇后续论文的创新之处在于,它将这种表示法扩展到了更长的文本单位,如句子或段落。尽管这些文本单位的长度是可变的,但它们的表示(即嵌入)仍然是一组固定长度的实数。
与Salton的术语向量模型的区别:
- Salton的术语向量模型主要关注词汇层面的重叠,即文档中出现了哪些词。而这种扩展后的词嵌入模型则更注重“软”语义相似性,即即使两个文档没有明显的词汇重叠,它们也可能在语义上是相似的。
语义相似性:
- 这种扩展后的模型能够捕捉到文本之间更为微妙的语义关系,因为它不仅仅依赖于单词的出现或缺失,而是考虑了文本整体的语义内容。
预训练语言模型
神经网络与语言模型
- 用于将段落映射到嵌入的神经网络捕捉了训练数据中语言的各个方面,包括词汇、语法和形态。这些网络参数实质上构成了一个“语言模型”。
模型规模与准确性
- 模型越大,对语言的理解就越全面。但这也带来了更高的计算成本。
预训练与微调
- 由于训练大型模型计算成本高,因此一种常见的做法是先进行预训练,然后在特定任务上进行微调。这样可以更高效地适应不同的任务。
对于预训练与微调这一趋势的一个关键代表是 2019 年由谷歌发表的 BERT
BERT 模型
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的深度学习模型,用于自然语言处理(NLP)任务。它由谷歌发布,并迅速成为了多种NLP任务的标准模型。
BERT 的主要创新之处在于其双向编码器结构,这使得模型能够同时考虑一个词在句子中的左侧和右侧上下文 ++(这使得表示是上下文相关的——同音异义词将对其不同的含义有不同的表示)++ 。这与传统的单向模型(只考虑左侧或右侧上下文)相比,能够更准确地捕捉词义。
BERT 已经在多个任务上表现出色,包括搜索排名等。预训练语言模型的技术也在不断进步,如2022年发布的“PaLM”(Pathways Language Model)。
基于向量的文档表示,只有在我们能够有效地找到相似向量的情况下才有用。(给定一个向量,返回数据库中最接近的k个向量)
当我们考察信息检索和搜索引擎的历史,我们可以看到它们经历了重要的演变。起初,它们主要使用基于词汇匹配的方法来工作。然而,随着时间的推移,搜索引擎朝着更为复杂和语

2022

被折叠的 条评论
为什么被折叠?



