您的位置 首页 行业资讯

txtai:基于 Transformer 的人工智能搜索引擎

自然语言处理领域正在迅速发展,出现了许多新的进展。大规模的通用语言模型是一种令人兴奋的新能力,使我们能够在有限的计算和人力的情况下快速添加惊人的功能。创新仍在继

自然语言处理领域发展迅速,出现了许多新的进展。大规模通用语言模型是一种令人兴奋的新能力,它使我们能够在有限的计算和人力下快速添加令人惊叹的功能。创新在继续,新的模式和进步似乎每周都会到来。本文将介绍基于人工智能的搜索引擎txtai,它可以在任何应用中实现基于自然语言理解的搜索。

txtai

txtai简介在文本部分建立一个基于人工智能的索引。Txtai支持建立文本索引进行相似性搜索,创建基于抽取的问答系统。Tatai是开源的,可以在github上获得:http://github.com/neuml/txtai

txtai是建立在下面的技术栈上的:

句子转换者转换者Faiss,惹恼、HnswlibPython 3.6

txtai背后的概念已经被用来支持下面的自然语言处理应用:

cord19q:新冠肺炎文献分析paperai:用于医学/科学论文的人工智能文献发现和评论引擎neuspo:一个以事实为导向的实时体育赛事和新闻网站codequestion:直接从终端询问编码问题

安装并运行txtai

下面的代码段展示了如何安装TXTAI并创建一个嵌入式模型。

pip install txtai

接下来我们可以用一些样本记录创建一个简单的内存模型来尝试txtai。

import numpy as NP from txtai。嵌入导入嵌入#创建嵌入模型,支持方式句子-transformers transformers embedges=embedges({ ” method ” ” : ” ” transformers ” ” path ” ” : ” “句子-transformers/Bert-base-nli-mean-token ” })节=[” ‘美国最多500万例确诊病毒病例“,”加拿大最后一个完整无缺的冰架突然坍塌,形成一个曼哈顿大小的冰山,”北京调动沿海的入侵艇作为”国家公园管理局警告不要在熊袭击中牺牲较慢的朋友“,”缅因州人从25美元的彩票中赢得100万美元“,”不用工作就能获得巨额利润,每天可赚10万美元”])打印(“%”-20s % s“%(”查询“,”最佳匹配”)打印(“-“”* 50 “)用于查询(“’感觉好故事),”气候变化“,”健康“,”战争“,”野生动物“,”亚洲“,”北美“,”不诚实的垃圾”、33333 sections[uid])

运行上面的代码会打印出如下内容:

txtai:基于 Transformer 的人工智能搜索引擎图.

上面的例子显示,对于几乎所有的查询,实际的文本并不存储在文本部分的列表中。这是Transformer模型相对于基于令牌的搜索的真正优势。

建立嵌入式索引

对于小的文本列表,以上方法是有效的。然而,对于一个大型文档库来说,标记和转换每个查询是没有意义的。Txtai支持建立预计算索引,显著提高性能。

基于前面的示例,下面的示例运行index方法来构建和存储文本嵌入。在这种情况下,每次搜索仅将查询转换为嵌入向量。

# # #为区段嵌入列表创建一个索引。索引([(uid,文本,无)为uid,枚举(部分)中的文本)】打印(%-20s % s ” %(‘查询”,’最佳匹配’ ‘)))打印((-‘ ‘ * 50)#为每个查询运行一个嵌入搜索,以查询(”感觉好故事,”气候变化,”健康,”战争,”野生动物,”亚洲,”北美,’ ‘

再次返回相同的结果,唯一的区别是嵌入是预先计算的。

txtai:基于 Transformer 的人工智能搜索引擎图.

保存并加载嵌入索引

嵌入索引可以保存到磁盘并重新加载。在这种情况下,索引不是增量创建的,需要完全重建才能合并新数据。

以上代码运行的结果:

加拿大最后一个完全act的冰架突然崩塌,形成了曼哈顿大小的冰山

用有限的代码,我们可以构建一个对自然语言有深刻理解的系统。来自Transformer模型的知识量是惊人的。

句子嵌入

Txtai构造句子嵌入来执行相似性搜索。Txtai获取每个文本记录条目,对其进行标记,并构建记录的嵌入式表示。搜索时,将查询转换为文本嵌入,然后与文本嵌入存储库进行比较。

txtai支持两种创建文本嵌入的方法:句子转换器和单词嵌入向量。这两种方法各有优势,如下图。

句子变形金刚

GitHub项目地址:

https://github.com/huggingface/transformers

通过对转换器库生成的向量求平均值来创建一个嵌入向量。支持模型存储在拥抱面模型中心或本地。有关如何创建自定义模型的详细信息,请参见句子变形金刚,这些模型可以保存在本地或上传到拥抱脸模型中心。基本模型需要很大的计算能力。你可以以牺牲精度为代价来换取速度,从而制造更小/更轻的模型。

word embeddings

用BM25给每个单词成分打分,创建一个嵌入向量。该参考文献详细描述了该方法。在pymagnitude库的支持下,可以从参考链接中安装预先训练好的单词向量。请参阅vectors.py了解可以为自定义数据集构建单词向量的代码。使用默认模型可以显著提高速度。对于大型数据集,它在速度和准确性之间提供了一个很好的折衷。

大规模相似性搜索

如上所述,txtai使用相似性搜索来比较句子嵌入和存储库中的所有句子嵌入。我们可能想到的第一个问题是,这是如何延伸到数百万或数十亿条记录的?答案是用近似最近邻搜索算法。人工神经网络可以有效地对海量数据进行相似性查询。

Python中有很多健壮的库,可以支持ANN搜索。Txtai有一个可配置的索引后端,允许插入不同的人工神经网络库。目前txtai支持以下库:

FaissAnnoyHnswlib

txtai对上述每个库使用合理的默认设置,尽可能方便的启动和运行。默认情况下,索引选择基于目标环境进行抽象。

以上库要么没有关联嵌入和记录ID的方法,要么假设ID为整数。Txtai会处理这个问题,保留一个内部ID映射,允许任何ID类型。

对每个支持的系统进行基准测试有助于指导哪种人工神经网络最适合给定的数据集。还有平台差异。比如Faiss只支持Linux和macOS。

抽取式问答系统

除了相似度搜索,txtai还支持返回结果的抽象问答。这个强大的功能允许您询问一系列关于搜索结果列表的其他问题。

这方面的一个用例例子是关于卡格尔上的CORD-10挑战。这项工作需要为一系列医疗查询创建汇总表,并为每个结果提取额外的列。

以下展示了如何在txtai中创建一个Extractive QA组件:

from txtai . embeddeds import Embedings from txtai . Extractor import Extractor # Create embedments模型,由句子-变形金刚-变形金刚-嵌入=嵌入({“method”“:”“变形金刚”,“path”“:”“句子-变形金刚/Bert-base-nli-mean-tokens ‘ ‘ })# Create Extractor instance Extractor=Extractor(embedges,“”extract-base-cased-sultured-squad ‘ ‘)

下一步是加载一组要询问的结果。以下示例包含一系列比赛的体育成绩的文本片段:

部分=[“巨人队在道奇队落后3小时“,”巨人队5道奇队4决赛“,”道奇队在第二场比赛中以5比4输给巨人队“,”蓝鸟队2红袜队1决赛“,”红袜队以2比1输给蓝鸟队“,”蓝鸟队对红袜队的比赛结束了” .比分: 2-1 ‘ ‘ ,’费城人队战胜勇士队,5-0 ‘ ‘,’费城人队5勇士队0决赛’,’最终:勇士队在系列赛揭幕战中输给了费城人队,5-0 ‘ ‘,’最终比分:飞人队4闪电队1 ‘ ‘,’飞人队4闪电队1决赛’,’飞人队赢4-1”] #为每个部分添加唯一的编号以协助qa提取部分=[(uid,section) for uid,section in enumerate(sections)]问题=[‘ “哪个队赢了”,””分数是多少?”]execute=lambda query : extractor(sections,[(question,query,question,False)for question)])for query in[” ‘ Red Sox-Blue Jays ‘,’ Phillies-Braves ‘,’ Dodgers-gisters ‘,’ fleers-lighting ‘]]: print(“-“,”,”,”,”-“)for answer in execute(query): print(answer)print()# Ad-hoc questions questions question=” ‘哪个曲棍球队赢了?”打印”(“-“、”-“、”-“)打印(提取器(部分,[(问题、问题、问题、错误)])

上述示例代码的运行结果如下:

txtai:基于 Transformer 的人工智能搜索引擎图.

我们可以看到,提取器可以理解上述部分的上下文,可以回答相关问题。提取器组件可以使用txtai嵌入索引以及外部数据存储。这种模块化允许我们选择txtai中的那些功能来创建一个自然语言感知的搜索系统。

扩展阅读

更详细的txtai例子和用例可以在下面的笔记本里找到。

结论

txtai:基于 Transformer 的人工智能搜索引擎图.

自然语言处理发展迅速。一年前不可能的事现在有可能了。本文介绍了一个人工智能驱动的搜索引擎txtai,可以快速集成强大的模型和对自然语言的深入理解。拥抱脸模型中心有很多社区提供的基础模型和模型,可以用来定制几乎所有数据集的搜索。可能性是无限的,我们很高兴看到人们可以在txtai上构建什么!

作者简介:

MeUml创始人/CEO大卫·梅泽蒂(David Mezzetti)专注于应用机器学习解决日常问题。他与他人共同创立了数据工作公司(Data Works wITh others),并将其打造为一家成功的信息技术服务公司。

原文链接:

https://towards data science . com/introduction-txtai-an-ai-power-search-engine-on-on-transformers-37674 be 252 EC

关注我转发这篇文章,私信我“获取信息”,就可以免费获得价值4999元的InfoQ迷你书!

更多AI智能建筑安防科技-txtai:基于 Transformer 的人工智能搜索引擎,欢迎订阅本站,滁州智能门禁、门禁报价、工地伸缩大门、门禁系统原理、车辆识别门禁玩转智能建筑安防科技社群最新新闻。

本文来自网络,不代表红雨智能安防资讯网立场,转载请注明出处:http://www.zdm365.cn/zx/4592.html
返回顶部