在第 1 部分中,我们概述了 txtai、支持技术以及如何使用它进行相似性搜索的示例。第 2 部分介绍了具有更大数据集的嵌入索引。
对于现实世界的大规模用例,数据通常存储在数据库中(Elasticsearch、SQL、MongoDB、文件等)。在这里,我们将展示如何从 SQLite 读取数据,构建一个由词嵌入支持的嵌入索引,以及如何对生成的嵌入索引运行查询。
此示例涵盖了paperai库中的功能。有关可与下面讨论的数据集一起使用的完整解决方案,请参阅该库。
安装依赖
安装txtai和所有依赖项。由于本文是构建词向量,所以我们需要安装 similarity extras 包。
pip install txtai[similarity]
下载数据
这个例子将处理CORD-19数据集的一个子集。COVID-19 开放研究数据集 (CORD-19) 是一个免费的学术文章资源,由领先的研究小组联盟汇总,涵盖 COVID-19 和冠状病毒病毒家族。
下面下载的是一个从Kaggle notebook生成的 SQLite 数据库。有关此数据格式的更多信息,请参阅CORD-19 分析笔记本。
wget https://github.com/neuml/txtai/releases/download/v1.1.0/tests.gz
gunzip tests.gz
mv tests articles.sqlite
构建词向量
此示例将构建一个由词嵌入支持的搜索系统。虽然不如 transformer 嵌入那么强大,但它们通常为基于嵌入的搜索系统提供性能与功能的良好折衷。
对于本文,我们将构建自己的自定义嵌入以用于演示目的。许多预训练的词嵌入模型可用:
来自 pymagnitude 的通用语言模型
CORD-19 快速文本
import os