@vivantel/virage-reranker-cross-encoder 0.1.20 → 0.1.22
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.
- package/dist/reranker.d.ts +6 -0
- package/dist/reranker.d.ts.map +1 -1
- package/dist/reranker.js +35 -20
- package/dist/reranker.js.map +1 -1
- package/dist/reranker.test.js +69 -17
- package/dist/reranker.test.js.map +1 -1
- package/package.json +2 -2
package/dist/reranker.d.ts
CHANGED
|
@@ -4,11 +4,17 @@ export interface CrossEncoderRerankerOptions {
|
|
|
4
4
|
model?: string;
|
|
5
5
|
/** Number of results to return after re-ranking. Defaults to 5. */
|
|
6
6
|
topK?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Minimum sigmoid-calibrated relevance score (0–1) to include in results.
|
|
9
|
+
* Results below this threshold are dropped. Default: 0 (no filtering).
|
|
10
|
+
*/
|
|
11
|
+
minScore?: number;
|
|
7
12
|
}
|
|
8
13
|
export declare class CrossEncoderReranker implements Reranker {
|
|
9
14
|
readonly name = "cross-encoder";
|
|
10
15
|
private readonly modelId;
|
|
11
16
|
private readonly defaultTopK;
|
|
17
|
+
private readonly minScore;
|
|
12
18
|
private _pipeline;
|
|
13
19
|
constructor(options?: CrossEncoderRerankerOptions);
|
|
14
20
|
private getPipeline;
|
package/dist/reranker.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/reranker.js
CHANGED
|
@@ -2,17 +2,19 @@ export class CrossEncoderReranker {
|
|
|
2
2
|
name = "cross-encoder";
|
|
3
3
|
modelId;
|
|
4
4
|
defaultTopK;
|
|
5
|
+
minScore;
|
|
5
6
|
_pipeline = null;
|
|
6
7
|
constructor(options = {}) {
|
|
7
8
|
this.modelId = options.model ?? "Xenova/ms-marco-MiniLM-L-6-v2";
|
|
8
9
|
this.defaultTopK = options.topK ?? 5;
|
|
10
|
+
this.minScore = options.minScore ?? 0;
|
|
9
11
|
}
|
|
10
12
|
async getPipeline() {
|
|
11
13
|
if (!this._pipeline) {
|
|
12
14
|
const { pipeline } = await import("@huggingface/transformers");
|
|
13
|
-
this._pipeline = await pipeline("text-classification", this.modelId, {
|
|
15
|
+
this._pipeline = (await pipeline("text-classification", this.modelId, {
|
|
14
16
|
dtype: "fp32",
|
|
15
|
-
});
|
|
17
|
+
}));
|
|
16
18
|
}
|
|
17
19
|
return this._pipeline;
|
|
18
20
|
}
|
|
@@ -25,25 +27,38 @@ export class CrossEncoderReranker {
|
|
|
25
27
|
text: query,
|
|
26
28
|
text_pair: c.content,
|
|
27
29
|
}));
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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) => {
|
|
31
38
|
const result = Array.isArray(outputs) ? outputs[i] : undefined;
|
|
32
|
-
const
|
|
33
|
-
const typed =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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%.
|
|
54
|
+
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,
|
|
58
|
+
}));
|
|
59
|
+
return this.minScore > 0
|
|
60
|
+
? scored.filter((r) => r.similarity >= this.minScore)
|
|
61
|
+
: scored;
|
|
47
62
|
}
|
|
48
63
|
}
|
|
49
64
|
//# sourceMappingURL=reranker.js.map
|
package/dist/reranker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reranker.js","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reranker.js","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"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"}
|
package/dist/reranker.test.js
CHANGED
|
@@ -20,28 +20,80 @@ describe("CrossEncoderReranker", () => {
|
|
|
20
20
|
expect(result).toEqual([]);
|
|
21
21
|
expect(mockCall).not.toHaveBeenCalled();
|
|
22
22
|
});
|
|
23
|
-
it("
|
|
23
|
+
it("requests raw logits via function_to_apply: none", async () => {
|
|
24
|
+
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",
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
it("reorders candidates by raw logit descending", async () => {
|
|
24
32
|
const reranker = new CrossEncoderReranker();
|
|
25
33
|
const candidates = [
|
|
26
34
|
makeCandidate("a", "low relevance", 0.8),
|
|
27
35
|
makeCandidate("b", "high relevance", 0.3),
|
|
28
36
|
makeCandidate("c", "medium relevance", 0.5),
|
|
29
37
|
];
|
|
30
|
-
//
|
|
38
|
+
// Raw logits (not sigmoid/softmax) — higher = more relevant
|
|
31
39
|
mockCall.mockResolvedValue([
|
|
32
|
-
[{
|
|
33
|
-
[{
|
|
34
|
-
[{
|
|
40
|
+
[{ score: -3.0 }], // a: not relevant
|
|
41
|
+
[{ score: 8.5 }], // b: highly relevant
|
|
42
|
+
[{ score: 2.1 }], // c: somewhat relevant
|
|
35
43
|
]);
|
|
36
44
|
const result = await reranker.rerank("query", candidates);
|
|
37
45
|
expect(result.map((r) => r.id)).toEqual(["b", "c", "a"]);
|
|
38
46
|
});
|
|
39
|
-
it("
|
|
47
|
+
it("calibrates scores via sigmoid so higher logit → higher similarity", async () => {
|
|
48
|
+
const reranker = new CrossEncoderReranker();
|
|
49
|
+
const candidates = [
|
|
50
|
+
makeCandidate("a", "low", 0.8),
|
|
51
|
+
makeCandidate("b", "high", 0.3),
|
|
52
|
+
makeCandidate("c", "mid", 0.5),
|
|
53
|
+
];
|
|
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
|
+
]);
|
|
59
|
+
const result = await reranker.rerank("query", candidates);
|
|
60
|
+
// Order: b > c > a
|
|
61
|
+
expect(result[0].id).toBe("b");
|
|
62
|
+
expect(result[1].id).toBe("c");
|
|
63
|
+
expect(result[2].id).toBe("a");
|
|
64
|
+
// Scores are sigmoid-calibrated, not min-max normalized
|
|
65
|
+
expect(result[0].similarity).toBeCloseTo(1 / (1 + Math.exp(-0.9)), 5);
|
|
66
|
+
expect(result[1].similarity).toBeCloseTo(1 / (1 + Math.exp(-0.5)), 5);
|
|
67
|
+
expect(result[2].similarity).toBeCloseTo(1 / (1 + Math.exp(-0.1)), 5);
|
|
68
|
+
});
|
|
69
|
+
it("single result gets sigmoid-calibrated similarity (not forced to 1)", async () => {
|
|
40
70
|
const reranker = new CrossEncoderReranker();
|
|
41
71
|
const candidates = [makeCandidate("x", "some content", 0.5)];
|
|
42
|
-
mockCall.mockResolvedValue([[{
|
|
72
|
+
mockCall.mockResolvedValue([[{ score: 7.3 }]]);
|
|
43
73
|
const result = await reranker.rerank("query", candidates);
|
|
44
|
-
|
|
74
|
+
// sigmoid(7.3) ≈ 0.9993 — very high but not exactly 1
|
|
75
|
+
expect(result[0].similarity).toBeCloseTo(1 / (1 + Math.exp(-7.3)), 5);
|
|
76
|
+
expect(result[0].similarity).toBeGreaterThan(0.99);
|
|
77
|
+
});
|
|
78
|
+
it("assigns near-zero similarity to highly negative logit", async () => {
|
|
79
|
+
const reranker = new CrossEncoderReranker();
|
|
80
|
+
const candidates = [makeCandidate("x", "irrelevant content", 0.5)];
|
|
81
|
+
mockCall.mockResolvedValue([[{ score: -8 }]]);
|
|
82
|
+
const result = await reranker.rerank("query", candidates);
|
|
83
|
+
// sigmoid(-8) ≈ 0.000335 — clearly not relevant
|
|
84
|
+
expect(result[0].similarity).toBeLessThan(0.01);
|
|
85
|
+
});
|
|
86
|
+
it("filters results below minScore threshold", async () => {
|
|
87
|
+
const reranker = new CrossEncoderReranker({ minScore: 0.5 });
|
|
88
|
+
const candidates = [
|
|
89
|
+
makeCandidate("a", "relevant", 0.8),
|
|
90
|
+
makeCandidate("b", "irrelevant", 0.3),
|
|
91
|
+
];
|
|
92
|
+
// sigmoid(2) ≈ 0.88, sigmoid(-2) ≈ 0.12 — only "a" passes minScore 0.5
|
|
93
|
+
mockCall.mockResolvedValue([[{ score: 2 }], [{ score: -2 }]]);
|
|
94
|
+
const result = await reranker.rerank("query", candidates);
|
|
95
|
+
expect(result).toHaveLength(1);
|
|
96
|
+
expect(result[0].id).toBe("a");
|
|
45
97
|
});
|
|
46
98
|
it("respects topK from constructor", async () => {
|
|
47
99
|
const reranker = new CrossEncoderReranker({ topK: 2 });
|
|
@@ -51,9 +103,9 @@ describe("CrossEncoderReranker", () => {
|
|
|
51
103
|
makeCandidate("c", "c"),
|
|
52
104
|
];
|
|
53
105
|
mockCall.mockResolvedValue([
|
|
54
|
-
[{
|
|
55
|
-
[{
|
|
56
|
-
[{
|
|
106
|
+
[{ score: 9.0 }],
|
|
107
|
+
[{ score: 8.0 }],
|
|
108
|
+
[{ score: 7.0 }],
|
|
57
109
|
]);
|
|
58
110
|
const result = await reranker.rerank("query", candidates);
|
|
59
111
|
expect(result).toHaveLength(2);
|
|
@@ -66,27 +118,27 @@ describe("CrossEncoderReranker", () => {
|
|
|
66
118
|
makeCandidate("c", "c"),
|
|
67
119
|
];
|
|
68
120
|
mockCall.mockResolvedValue([
|
|
69
|
-
[{
|
|
70
|
-
[{
|
|
71
|
-
[{
|
|
121
|
+
[{ score: 9.0 }],
|
|
122
|
+
[{ score: 8.0 }],
|
|
123
|
+
[{ score: 7.0 }],
|
|
72
124
|
]);
|
|
73
125
|
const result = await reranker.rerank("query", candidates, 1);
|
|
74
126
|
expect(result).toHaveLength(1);
|
|
75
127
|
});
|
|
76
128
|
it("lazily initialises and caches the pipeline across calls", async () => {
|
|
77
129
|
const reranker = new CrossEncoderReranker();
|
|
78
|
-
mockCall.mockResolvedValue([[{
|
|
130
|
+
mockCall.mockResolvedValue([[{ score: 0.5 }]]);
|
|
79
131
|
await reranker.rerank("q1", [makeCandidate("a", "text")]);
|
|
80
132
|
await reranker.rerank("q2", [makeCandidate("b", "text")]);
|
|
81
133
|
expect(mockPipelineFactory).toHaveBeenCalledTimes(1);
|
|
82
134
|
});
|
|
83
135
|
it("forwards custom model to the pipeline factory", async () => {
|
|
84
136
|
const reranker = new CrossEncoderReranker({ model: "custom/model-v1" });
|
|
85
|
-
mockCall.mockResolvedValue([[{
|
|
137
|
+
mockCall.mockResolvedValue([[{ score: 0.5 }]]);
|
|
86
138
|
await reranker.rerank("q", [makeCandidate("a", "text")]);
|
|
87
139
|
expect(mockPipelineFactory).toHaveBeenCalledWith("text-classification", "custom/model-v1", { dtype: "fp32" });
|
|
88
140
|
});
|
|
89
|
-
it("
|
|
141
|
+
it("preserves original similarity when pipeline returns no scores", async () => {
|
|
90
142
|
const reranker = new CrossEncoderReranker();
|
|
91
143
|
const candidates = [makeCandidate("a", "content", 0.42)];
|
|
92
144
|
mockCall.mockResolvedValue("unexpected non-array");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reranker.test.js","sourceRoot":"","sources":["../src/reranker.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACzB,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE3E,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC,CAAC;AAEJ,SAAS,aAAa,CACpB,EAAU,EACV,OAAe,EACf,UAAU,GAAG,GAAG;IAEhB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACnD,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrB,mBAAmB,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
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.
|
|
3
|
+
"version": "0.1.22",
|
|
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",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@vivantel/virage-core": "*"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@vivantel/virage-core": "0.2.
|
|
49
|
+
"@vivantel/virage-core": "0.2.44",
|
|
50
50
|
"@types/node": "^25.9.3",
|
|
51
51
|
"typescript": "^6.0.3",
|
|
52
52
|
"vitest": "^4.1.9"
|