-
Notifications
You must be signed in to change notification settings - Fork 464
/
msmarco-v1-passage.cohere-embed-english-v3.0.hnsw-int8.cached.template
90 lines (58 loc) · 4.22 KB
/
msmarco-v1-passage.cohere-embed-english-v3.0.hnsw-int8.cached.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Anserini Regressions: MS MARCO Passage Ranking
**Model**: [Cohere embed-english-v3.0](https://docs.cohere.com/reference/embed) with quantized HNSW indexes (using cached queries)
This page describes regression experiments, integrated into Anserini's regression testing framework, using the [Cohere embed-english-v3.0](https://docs.cohere.com/reference/embed) model on the [MS MARCO passage ranking task](https://github.com/microsoft/MSMARCO-Passage-Ranking).
In these experiments, we are using cached queries (i.e., cached results of query encoding).
The exact configurations for these regressions are stored in [this YAML file](${yaml}).
Note that this page is automatically generated from [this template](${template}) as part of Anserini's regression pipeline, so do not modify this page directly; modify the template instead and then run `bin/build.sh` to rebuild the documentation.
From one of our Waterloo servers (e.g., `orca`), the following command will perform the complete regression, end to end:
```bash
python src/main/python/run_regression.py --index --verify --search --regression ${test_name}
```
We make available a version of the MS MARCO Passage Corpus that has already been encoded with Cohere embed-english-v3.0.
From any machine, the following command will download the corpus and perform the complete regression, end to end:
```bash
python src/main/python/run_regression.py --download --index --verify --search --regression ${test_name}
```
The `run_regression.py` script automates the following steps, but if you want to perform each step manually, simply copy/paste from the commands below and you'll obtain the same regression results.
## Corpus Download
Download the corpus and unpack into `collections/`:
```bash
wget ${download_url} -P collections/
tar xvf collections/${corpus}.tar -C collections/
```
To confirm, `${corpus}.tar` is 38 GB and has MD5 checksum `${download_checksum}`.
With the corpus downloaded, the following command will perform the remaining steps below:
```bash
python src/main/python/run_regression.py --index --verify --search --regression ${test_name} \
--corpus-path collections/${corpus}
```
## Indexing
Sample indexing command, building quantized HNSW indexes:
```bash
${index_cmds}
```
The path `/path/to/${corpus}/` should point to the corpus downloaded above.
Upon completion, we should have an index with 8,841,823 documents.
Note that here we are explicitly using Lucene's `NoMergePolicy` merge policy, which suppresses any merging of index segments.
This is because merging index segments is a costly operation and not worthwhile given our query set.
Furthermore, we are using Lucene's [Automatic Byte Quantization](https://www.elastic.co/search-labs/blog/articles/scalar-quantization-in-lucene) feature, which increase the on-disk footprint of the indexes since we're storing both the int8 quantized vectors and the float32 vectors, but only the int8 quantized vectors need to be loaded into memory.
See [issue #2292](https://github.com/castorini/anserini/issues/2292) for some experiments reporting the performance impact.
## Retrieval
Topics and qrels are stored [here](https://github.com/castorini/anserini-tools/tree/master/topics-and-qrels), which is linked to the Anserini repo as a submodule.
The regression experiments here evaluate on the 6980 dev set questions; see [this page](${root_path}/docs/experiments-msmarco-passage.md) for more details.
After indexing has completed, you should be able to perform retrieval as follows using HNSW indexes:
```bash
${ranking_cmds}
```
Evaluation can be performed using `trec_eval`:
```bash
${eval_cmds}
```
## Effectiveness
With the above commands, you should be able to reproduce the following results:
${effectiveness}
The above figures are from running brute-force search with cached queries on non-quantized **flat** indexes.
With cached queries on quantized HNSW indexes, observed results are likely to differ; scores may be lower by up to 0.01, sometimes more.
Note that both HNSW indexing and quantization are non-deterministic (i.e., results may differ slightly between trials).
## Reproduction Log[*](${root_path}/docs/reproducibility.md)
To add to this reproduction log, modify [this template](${template}) and run `bin/build.sh` to rebuild the documentation.