数据集:

Cohere/miracl-th-queries-22-12

语言:

th

计算机处理:

multilingual

批注创建人:

expert-generated

许可:

apache-2.0
英文

MIRACL(第三季度)嵌入cohere.ai多语言-22-12编码器

我们使用多语言-22-12嵌入模型将 MIRACL dataset 进行了编码,使用的模型是 cohere.ai

查询嵌入可以在 Cohere/miracl-th-queries-22-12 中找到,语料库嵌入可以在 Cohere/miracl-th-corpus-22-12 中找到。

对于原始数据集,请参阅 miracl/miracl miracl/miracl-corpus

数据集信息:

MIRACL ???(跨语言信息检索)是一个跨越18种不同语言的多语言检索数据集,这些语言共有超过30亿的母语使用者。

对于每种语言,我们从维基百科转储中准备了语料库,只保留纯文本,丢弃图像、表格等。每篇文章被WikiExtractor分割成多个段落,以自然话语单位作为依据(例如维基标记中的\n\n)。每个段落都是一个“文档”或检索单元。我们保留了每个段落的维基百科文章标题。

嵌入

我们使用我们的多语言-22-12嵌入模型计算标题+文本的嵌入向量,这是一种在100种语言中进行语义搜索的最先进模型。如果您想了解更多关于该模型的信息,请查阅 cohere.ai multilingual embedding model

加载数据集

miracl-th-corpus-22-12 中我们提供了语料库的嵌入。请注意,根据所选的分割方式,相应的文件可能会很大。

您可以按照以下方式加载数据集:

from datasets import load_dataset
docs = load_dataset(f"Cohere/miracl-th-corpus-22-12", split="train")

或者在不下载之前直接流式传输数据集:

from datasets import load_dataset
docs = load_dataset(f"Cohere/miracl-th-corpus-22-12", split="train", streaming=True)

for doc in docs:
    docid = doc['docid']
    title = doc['title']
    text = doc['text']
    emb = doc['emb']

搜索

请查看 miracl-th-queries-22-12 ,我们在其中提供了MIRACL数据集的查询嵌入。

要在文档中进行搜索,您必须使用点积。

然后,将此查询嵌入与向量数据库进行比较(推荐)或直接计算点积。

完整的搜索示例:

# Attention! For large datasets, this requires a lot of memory to store
# all document embeddings and to compute the dot product scores.
# Only use this for smaller datasets. For large datasets, use a vector DB

from datasets import load_dataset
import torch

#Load documents + embeddings
docs = load_dataset(f"Cohere/miracl-th-corpus-22-12", split="train")
doc_embeddings = torch.tensor(docs['emb'])

# Load queries 
queries = load_dataset(f"Cohere/miracl-th-queries-22-12", split="dev")

# Select the first query as example
qid = 0
query = queries[qid]
query_embedding = torch.tensor(queries['emb'])

# Compute dot score between query embedding and document embeddings
dot_scores = torch.mm(query_embedding, doc_embeddings.transpose(0, 1))
top_k = torch.topk(dot_scores, k=3)

# Print results
print("Query:", query['query'])
for doc_id in top_k.indices[0].tolist():
    print(docs[doc_id]['title'])
    print(docs[doc_id]['text'])

您可以使用我们的API获取新查询的嵌入向量:

#Run: pip install cohere
import cohere
co = cohere.Client(f"{api_key}")  # You should add your cohere API Key here :))
texts = ['my search query']
response = co.embed(texts=texts, model='multilingual-22-12')
query_embedding = response.embeddings[0] # Get the embedding for the first text

性能

在以下表格中,我们将cohere多语言-22-12模型与Elasticsearch 8.6.0版本的词汇搜索进行了比较(标题和段落被索引为独立字段)。请注意,Elasticsearch不支持MIRACL数据集中的所有语言。

我们计算nDCG@10(基于排名的损失),以及hit@3:在前3个结果中是否至少有一个相关文档。我们发现hit@3更容易解释,因为它表示在前3个结果中找到的相关文档的数量。

注意:MIRACL仅对少部分段落(每个查询10个)进行了相关性标注。尤其是对于较大的维基百科(如英文),我们经常发现更多相关段落。这被称为注释漏洞。真实的nDCG@10和hit@3性能很可能高于描绘的情况。

Model cohere multilingual-22-12 nDCG@10 cohere multilingual-22-12 hit@3 ES 8.6.0 nDCG@10 ES 8.6.0 acc@3
miracl-ar 64.2 75.2 46.8 56.2
miracl-bn 61.5 75.7 49.2 60.1
miracl-de 44.4 60.7 19.6 29.8
miracl-en 44.6 62.2 30.2 43.2
miracl-es 47.0 74.1 27.0 47.2
miracl-fi 63.7 76.2 51.4 61.6
miracl-fr 46.8 57.1 17.0 21.6
miracl-hi 50.7 62.9 41.0 48.9
miracl-id 44.8 63.8 39.2 54.7
miracl-ru 49.2 66.9 25.4 36.7
Avg 51.7 67.5 34.7 46.0

其他语言(Elasticsearch不支持):

Model cohere multilingual-22-12 nDCG@10 cohere multilingual-22-12 hit@3
miracl-fa 44.8 53.6
miracl-ja 49.0 61.0
miracl-ko 50.9 64.8
miracl-sw 61.4 74.5
miracl-te 67.8 72.3
miracl-th 60.2 71.9
miracl-yo 56.4 62.2
miracl-zh 43.8 56.5
Avg 54.3 64.6