@vivantel/virage-reranker-cross-encoder 0.1.24 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,9 +15,10 @@ export declare class CrossEncoderReranker implements Reranker {
15
15
  private readonly modelId;
16
16
  private readonly defaultTopK;
17
17
  private readonly minScore;
18
- private _pipeline;
18
+ private _tokenizer;
19
+ private _model;
19
20
  constructor(options?: CrossEncoderRerankerOptions);
20
- private getPipeline;
21
+ private load;
21
22
  rerank(query: string, candidates: VectorSearchResult[], topK?: number): Promise<VectorSearchResult[]>;
22
23
  }
23
24
  //# sourceMappingURL=reranker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reranker.d.ts","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,2BAA2B;IAC1C,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,SAAS,CAA2B;gBAEhC,OAAO,GAAE,2BAAgC;YAMvC,WAAW;IAUnB,MAAM,CACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,kBAAkB,EAAE,EAChC,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAkDjC"}
1
+ {"version":3,"file":"reranker.d.ts","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,2BAA2B;IAC1C,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAcD,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,MAAM,CAA4C;gBAE9C,OAAO,GAAE,2BAAgC;YAMvC,IAAI;IAoBZ,MAAM,CACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,kBAAkB,EAAE,EAChC,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC;CA+BjC"}
package/dist/reranker.js CHANGED
@@ -3,62 +3,48 @@ export class CrossEncoderReranker {
3
3
  modelId;
4
4
  defaultTopK;
5
5
  minScore;
6
- _pipeline = null;
6
+ _tokenizer = null;
7
+ _model = null;
7
8
  constructor(options = {}) {
8
9
  this.modelId = options.model ?? "Xenova/ms-marco-MiniLM-L-6-v2";
9
10
  this.defaultTopK = options.topK ?? 5;
10
11
  this.minScore = options.minScore ?? 0;
11
12
  }
12
- async getPipeline() {
13
- if (!this._pipeline) {
14
- const { pipeline } = await import("@huggingface/transformers");
15
- this._pipeline = (await pipeline("text-classification", this.modelId, {
13
+ async load() {
14
+ if (!this._tokenizer || !this._model) {
15
+ const { AutoTokenizer, AutoModelForSequenceClassification } = await import("@huggingface/transformers");
16
+ this._tokenizer = (await AutoTokenizer.from_pretrained(this.modelId));
17
+ this._model = (await AutoModelForSequenceClassification.from_pretrained(this.modelId, {
16
18
  dtype: "fp32",
17
19
  }));
18
20
  }
19
- return this._pipeline;
21
+ return { tokenizer: this._tokenizer, model: this._model };
20
22
  }
21
23
  async rerank(query, candidates, topK) {
22
24
  if (candidates.length === 0)
23
25
  return [];
24
26
  const k = topK ?? this.defaultTopK;
25
- const pipe = await this.getPipeline();
26
- const inputs = candidates.map((c) => ({
27
- text: query,
28
- text_pair: c.content,
29
- }));
30
- // Request raw logits (no sigmoid/softmax) so scores are not saturated at 1.0
31
- // for all inputs. The ms-marco cross-encoder produces logits in roughly [-10, 10];
32
- // normalizing within the batch gives meaningful relative similarities.
33
- const outputs = await pipe._call(inputs, {
34
- function_to_apply: "none",
35
- });
36
- // Extract raw logit for each candidate
37
- const indexed = candidates.map((c, i) => {
38
- const result = Array.isArray(outputs) ? outputs[i] : undefined;
39
- const raw = Array.isArray(result) ? result[0] : result;
40
- const typed = raw;
41
- return { c, logit: typed?.score };
42
- });
43
- // If the pipeline returned no usable scores, preserve original order and similarities
44
- if (!indexed.some((x) => x.logit !== undefined)) {
45
- return candidates.slice(0, k).map((c) => ({ ...c }));
46
- }
47
- // Sort by logit descending (higher raw score = more relevant)
48
- indexed.sort((a, b) => (b.logit ?? b.c.similarity) - (a.logit ?? a.c.similarity));
49
- const top = indexed.slice(0, k);
50
- // Apply sigmoid to convert raw logits to calibrated relevance probabilities.
51
- // sigmoid(logit) ≈ P(relevant | query, doc) for ms-marco cross-encoders:
52
- // logit +8 → ~100%, logit +2 → ~88%, logit -2 → ~12%, logit -8 → ~0%
53
- // This gives absolute scores so irrelevant queries don't saturate at 100%.
27
+ const { tokenizer, model } = await this.load();
54
28
  const sigmoid = (x) => 1 / (1 + Math.exp(-x));
55
- const scored = top.map((x) => ({
56
- ...x.c,
57
- similarity: x.logit !== undefined ? sigmoid(x.logit) : x.c.similarity,
29
+ // Score each candidate independently — ms-marco cross-encoders output a
30
+ // single relevance logit per (query, document) pair.
31
+ const scored = await Promise.all(candidates.map(async (c) => {
32
+ const inputs = tokenizer(query, {
33
+ text_pair: c.content,
34
+ padding: true,
35
+ truncation: true,
36
+ });
37
+ const output = await model(inputs);
38
+ const logit = output.logits.data[0];
39
+ return { c, similarity: sigmoid(logit) };
58
40
  }));
41
+ scored.sort((a, b) => b.similarity - a.similarity);
42
+ const top = scored
43
+ .slice(0, k)
44
+ .map(({ c, similarity }) => ({ ...c, similarity }));
59
45
  return this.minScore > 0
60
- ? scored.filter((r) => r.similarity >= this.minScore)
61
- : scored;
46
+ ? top.filter((r) => r.similarity >= this.minScore)
47
+ : top;
62
48
  }
63
49
  }
64
50
  //# sourceMappingURL=reranker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reranker.js","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reranker.js","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,40 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
2
  import { CrossEncoderReranker } from "./reranker.js";
3
3
  import { createReranker } from "./index.js";
4
- const mockCall = vi.fn();
5
- const mockPipelineFactory = vi.fn().mockResolvedValue({ _call: mockCall });
4
+ const mockTokenize = vi.fn().mockReturnValue({});
5
+ const mockModelCall = vi.fn();
6
+ const mockFromPretrainedTokenizer = vi.fn().mockResolvedValue(mockTokenize);
7
+ const mockFromPretrainedModel = vi.fn().mockResolvedValue(mockModelCall);
6
8
  vi.mock("@huggingface/transformers", () => ({
7
- pipeline: mockPipelineFactory,
9
+ AutoTokenizer: { from_pretrained: mockFromPretrainedTokenizer },
10
+ AutoModelForSequenceClassification: {
11
+ from_pretrained: mockFromPretrainedModel,
12
+ },
8
13
  }));
9
14
  function makeCandidate(id, content, similarity = 0.5) {
10
15
  return { id, content, similarity, metadata: {} };
11
16
  }
12
17
  describe("CrossEncoderReranker", () => {
13
18
  beforeEach(() => {
14
- mockCall.mockReset();
15
- mockPipelineFactory.mockClear();
19
+ mockModelCall.mockReset();
20
+ mockFromPretrainedTokenizer.mockClear();
21
+ mockFromPretrainedModel.mockClear();
22
+ mockTokenize.mockClear();
16
23
  });
17
24
  it("returns empty array immediately when no candidates given", async () => {
18
25
  const reranker = new CrossEncoderReranker();
19
26
  const result = await reranker.rerank("some query", []);
20
27
  expect(result).toEqual([]);
21
- expect(mockCall).not.toHaveBeenCalled();
28
+ expect(mockModelCall).not.toHaveBeenCalled();
22
29
  });
23
- it("requests raw logits via function_to_apply: none", async () => {
30
+ it("tokenizes each candidate as a query/document pair", async () => {
24
31
  const reranker = new CrossEncoderReranker();
25
- mockCall.mockResolvedValue([[{ score: 5.2 }]]);
26
- await reranker.rerank("q", [makeCandidate("a", "text")]);
27
- expect(mockCall).toHaveBeenCalledWith(expect.any(Array), {
28
- function_to_apply: "none",
32
+ mockModelCall.mockResolvedValue({ logits: { data: [5.2] } });
33
+ await reranker.rerank("my query", [makeCandidate("a", "some text")]);
34
+ expect(mockTokenize).toHaveBeenCalledWith("my query", {
35
+ text_pair: "some text",
36
+ padding: true,
37
+ truncation: true,
29
38
  });
30
39
  });
31
40
  it("reorders candidates by raw logit descending", async () => {
@@ -36,11 +45,10 @@ describe("CrossEncoderReranker", () => {
36
45
  makeCandidate("c", "medium relevance", 0.5),
37
46
  ];
38
47
  // Raw logits (not sigmoid/softmax) — higher = more relevant
39
- mockCall.mockResolvedValue([
40
- [{ score: -3.0 }], // a: not relevant
41
- [{ score: 8.5 }], // b: highly relevant
42
- [{ score: 2.1 }], // c: somewhat relevant
43
- ]);
48
+ mockModelCall
49
+ .mockResolvedValueOnce({ logits: { data: [-3.0] } }) // a: not relevant
50
+ .mockResolvedValueOnce({ logits: { data: [8.5] } }) // b: highly relevant
51
+ .mockResolvedValueOnce({ logits: { data: [2.1] } }); // c: somewhat relevant
44
52
  const result = await reranker.rerank("query", candidates);
45
53
  expect(result.map((r) => r.id)).toEqual(["b", "c", "a"]);
46
54
  });
@@ -51,11 +59,10 @@ describe("CrossEncoderReranker", () => {
51
59
  makeCandidate("b", "high", 0.3),
52
60
  makeCandidate("c", "mid", 0.5),
53
61
  ];
54
- mockCall.mockResolvedValue([
55
- [{ score: 0.1 }], // a: sigmoid(0.1) ≈ 0.525
56
- [{ score: 0.9 }], // b: sigmoid(0.9) ≈ 0.711
57
- [{ score: 0.5 }], // c: sigmoid(0.5) ≈ 0.622
58
- ]);
62
+ mockModelCall
63
+ .mockResolvedValueOnce({ logits: { data: [0.1] } }) // a: sigmoid(0.1) ≈ 0.525
64
+ .mockResolvedValueOnce({ logits: { data: [0.9] } }) // b: sigmoid(0.9) ≈ 0.711
65
+ .mockResolvedValueOnce({ logits: { data: [0.5] } }); // c: sigmoid(0.5) ≈ 0.622
59
66
  const result = await reranker.rerank("query", candidates);
60
67
  // Order: b > c > a
61
68
  expect(result[0].id).toBe("b");
@@ -69,7 +76,7 @@ describe("CrossEncoderReranker", () => {
69
76
  it("single result gets sigmoid-calibrated similarity (not forced to 1)", async () => {
70
77
  const reranker = new CrossEncoderReranker();
71
78
  const candidates = [makeCandidate("x", "some content", 0.5)];
72
- mockCall.mockResolvedValue([[{ score: 7.3 }]]);
79
+ mockModelCall.mockResolvedValue({ logits: { data: [7.3] } });
73
80
  const result = await reranker.rerank("query", candidates);
74
81
  // sigmoid(7.3) ≈ 0.9993 — very high but not exactly 1
75
82
  expect(result[0].similarity).toBeCloseTo(1 / (1 + Math.exp(-7.3)), 5);
@@ -78,7 +85,7 @@ describe("CrossEncoderReranker", () => {
78
85
  it("assigns near-zero similarity to highly negative logit", async () => {
79
86
  const reranker = new CrossEncoderReranker();
80
87
  const candidates = [makeCandidate("x", "irrelevant content", 0.5)];
81
- mockCall.mockResolvedValue([[{ score: -8 }]]);
88
+ mockModelCall.mockResolvedValue({ logits: { data: [-8] } });
82
89
  const result = await reranker.rerank("query", candidates);
83
90
  // sigmoid(-8) ≈ 0.000335 — clearly not relevant
84
91
  expect(result[0].similarity).toBeLessThan(0.01);
@@ -90,7 +97,9 @@ describe("CrossEncoderReranker", () => {
90
97
  makeCandidate("b", "irrelevant", 0.3),
91
98
  ];
92
99
  // sigmoid(2) ≈ 0.88, sigmoid(-2) ≈ 0.12 — only "a" passes minScore 0.5
93
- mockCall.mockResolvedValue([[{ score: 2 }], [{ score: -2 }]]);
100
+ mockModelCall
101
+ .mockResolvedValueOnce({ logits: { data: [2] } })
102
+ .mockResolvedValueOnce({ logits: { data: [-2] } });
94
103
  const result = await reranker.rerank("query", candidates);
95
104
  expect(result).toHaveLength(1);
96
105
  expect(result[0].id).toBe("a");
@@ -102,11 +111,10 @@ describe("CrossEncoderReranker", () => {
102
111
  makeCandidate("b", "b"),
103
112
  makeCandidate("c", "c"),
104
113
  ];
105
- mockCall.mockResolvedValue([
106
- [{ score: 9.0 }],
107
- [{ score: 8.0 }],
108
- [{ score: 7.0 }],
109
- ]);
114
+ mockModelCall
115
+ .mockResolvedValueOnce({ logits: { data: [9.0] } })
116
+ .mockResolvedValueOnce({ logits: { data: [8.0] } })
117
+ .mockResolvedValueOnce({ logits: { data: [7.0] } });
110
118
  const result = await reranker.rerank("query", candidates);
111
119
  expect(result).toHaveLength(2);
112
120
  });
@@ -117,33 +125,29 @@ describe("CrossEncoderReranker", () => {
117
125
  makeCandidate("b", "b"),
118
126
  makeCandidate("c", "c"),
119
127
  ];
120
- mockCall.mockResolvedValue([
121
- [{ score: 9.0 }],
122
- [{ score: 8.0 }],
123
- [{ score: 7.0 }],
124
- ]);
128
+ mockModelCall
129
+ .mockResolvedValueOnce({ logits: { data: [9.0] } })
130
+ .mockResolvedValueOnce({ logits: { data: [8.0] } })
131
+ .mockResolvedValueOnce({ logits: { data: [7.0] } });
125
132
  const result = await reranker.rerank("query", candidates, 1);
126
133
  expect(result).toHaveLength(1);
127
134
  });
128
- it("lazily initialises and caches the pipeline across calls", async () => {
135
+ it("lazily initialises and caches the model across calls", async () => {
129
136
  const reranker = new CrossEncoderReranker();
130
- mockCall.mockResolvedValue([[{ score: 0.5 }]]);
137
+ mockModelCall.mockResolvedValue({ logits: { data: [0.5] } });
131
138
  await reranker.rerank("q1", [makeCandidate("a", "text")]);
132
139
  await reranker.rerank("q2", [makeCandidate("b", "text")]);
133
- expect(mockPipelineFactory).toHaveBeenCalledTimes(1);
140
+ expect(mockFromPretrainedTokenizer).toHaveBeenCalledTimes(1);
141
+ expect(mockFromPretrainedModel).toHaveBeenCalledTimes(1);
134
142
  });
135
- it("forwards custom model to the pipeline factory", async () => {
143
+ it("forwards custom model to AutoModelForSequenceClassification", async () => {
136
144
  const reranker = new CrossEncoderReranker({ model: "custom/model-v1" });
137
- mockCall.mockResolvedValue([[{ score: 0.5 }]]);
145
+ mockModelCall.mockResolvedValue({ logits: { data: [0.5] } });
138
146
  await reranker.rerank("q", [makeCandidate("a", "text")]);
139
- expect(mockPipelineFactory).toHaveBeenCalledWith("text-classification", "custom/model-v1", { dtype: "fp32" });
140
- });
141
- it("preserves original similarity when pipeline returns no scores", async () => {
142
- const reranker = new CrossEncoderReranker();
143
- const candidates = [makeCandidate("a", "content", 0.42)];
144
- mockCall.mockResolvedValue("unexpected non-array");
145
- const result = await reranker.rerank("q", candidates);
146
- expect(result[0].similarity).toBe(0.42);
147
+ expect(mockFromPretrainedTokenizer).toHaveBeenCalledWith("custom/model-v1");
148
+ expect(mockFromPretrainedModel).toHaveBeenCalledWith("custom/model-v1", {
149
+ dtype: "fp32",
150
+ });
147
151
  });
148
152
  it("exposes name 'cross-encoder'", () => {
149
153
  expect(new CrossEncoderReranker().name).toBe("cross-encoder");
@@ -1 +1 @@
1
- {"version":3,"file":"reranker.test.js","sourceRoot":"","sources":["../src/reranker.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reranker.test.js","sourceRoot":"","sources":["../src/reranker.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vivantel/virage-reranker-cross-encoder",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "description": "Local cross-encoder re-ranker for Virage (ONNX, no API key required)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -40,13 +40,13 @@
40
40
  "directory": "packages/virage-reranker-cross-encoder"
41
41
  },
42
42
  "dependencies": {
43
- "@huggingface/transformers": "^3.0.0"
43
+ "@huggingface/transformers": "^4.0.0"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@vivantel/virage-core": "*"
47
47
  },
48
48
  "devDependencies": {
49
- "@vivantel/virage-core": "0.2.46",
49
+ "@vivantel/virage-core": "0.2.48",
50
50
  "@types/node": "^25.9.3",
51
51
  "typescript": "^6.0.3",
52
52
  "vitest": "^4.1.9"