向量检索库
Annoy
介绍:Annoy是高维空间求近似最近邻的一个开源库。全称:Approximate Nearest Neighbors Oh Yeah,是一种适合实际应用的快速相似查找算法。
Annoy构建一个二叉树,查询时间为O(logn)。
Faiss
介绍:Faiss库是由 Facebook 开发的适用于稠密向量匹配的开源库,支持 c++ 与 python 调用。Faiss提供了高效的索引类库。是向量化检索开山鼻祖的应用。
Faiss 支持多种向量检索方式,包括内积、欧氏距离等,同时支持精确检索与模糊搜索。
ElasticSearch
介绍:Elasticsearch 是⼀个分布式可扩展的实时搜索和分析引擎,⼀个建⽴在全⽂搜索引擎 Apache Lucene(TM)基础上的搜索引擎,当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全⽂搜索功能,还可以进行以下⼯作:
-
分布式实时⽂件存储,并将每⼀个字段都编入索引,使其可以被搜索。
-
实时分析的分布式搜索引擎。
-
可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
-
ES本质上是一个支持全文搜索的分布式内存数据库,特别适用于构建搜索系统,比如内容检索、文本检索、日志检索。其原因是采用了倒排索引。
-
倒排索引是一种特别为搜索而设计的索引结构。
-
先对需要索引的字段进行分词,然后以分词为索引组成一个查找树,这样就把一个全文匹配的查找转换成了对树的查找。
-
倒排索引相比于一般数据库采用B树索引,其写入和更新的性能比较差,因此倒排索引只适合全文搜索,不适合更新频繁的交易类数据。
-
github:https://github.com/elastic/elasticsearch
BGE
北京智源人工智能研究院发布了其开源的中英文语义向量(embedding)模型BGE,此模型在多个重要指标上均超越了其他同类模型。
论文:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/2309.07597.pdf
github:https://github.com/FlagOpen/FlagEmbedding/blob/master/README_zh.md
评估指标
Hit Rate
即命中率,一般指的是预期的召回文本(真实值)在召回结果的前 k 个文本中出现。一般,Hit Rate越高,就说明召回算法效果越好。衡量返回结果的准确率。
Mean Reciprocal Rank
即平均倒数排名,是一种常见的评估检索效果的指标。MRR 是衡量系统在一系列查询中返回相关文档或信息的平均排名的逆数的平均值。例如,如果一个系统对第一个查询的正确答案排在第二位,对第二个查询的正确答案排在第一位,则 MRR 为 (1/2 + 1/1) / 2。衡量返回结果的排名质量。
RANK代表第i个查询文本命中的排序,Q为查询的集合