Skip to content

Commit 6e77a04

Browse files
committed
Upgrade Transformers.js to v4
Move the local embedding and reranker integrations onto the stable v4 API and ONNX Runtime 1.24.3. This removes the macOS crash dependency while preserving the tokenizer pair fix already covered by this branch.
1 parent b51adeb commit 6e77a04

4 files changed

Lines changed: 70 additions & 46 deletions

File tree

‎package.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,8 @@
128128
"prepare": "husky"
129129
},
130130
"dependencies": {
131+
"@huggingface/transformers": "^4.2.0",
131132
"@inquirer/prompts": "^3.0.0",
132-
"@huggingface/transformers": "^3.8.1",
133133
"@lancedb/lancedb": "^0.4.0",
134134
"@modelcontextprotocol/sdk": "^1.27.1",
135135
"@typescript-eslint/typescript-estree": "^7.0.0",
@@ -172,7 +172,7 @@
172172
"@modelcontextprotocol/sdk>ajv": "8.18.0",
173173
"@modelcontextprotocol/sdk>@hono/node-server": "1.19.13",
174174
"@modelcontextprotocol/sdk>express-rate-limit": "8.2.2",
175-
"@huggingface/transformers>onnxruntime-node": "1.24.2",
175+
"@huggingface/transformers>onnxruntime-node": "1.24.3",
176176
"path-to-regexp": "8.4.0",
177177
"brace-expansion": "5.0.5",
178178
"micromatch>picomatch": "2.3.2",

‎pnpm-lock.yaml‎

Lines changed: 63 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/core/reranker.ts‎

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010

1111
import type { SearchResult } from '../types/index.js';
12+
import type { PreTrainedTokenizer } from '@huggingface/transformers';
1213
import os from 'os';
1314

1415
const DEFAULT_RERANKER_MODEL = 'Xenova/ms-marco-MiniLM-L-6-v2';
@@ -19,25 +20,11 @@ const RERANK_TOP_K = 10;
1920
/** Trigger reranking when the score gap between #1 and #3 is below this threshold */
2021
const AMBIGUITY_THRESHOLD = 0.08;
2122

22-
interface CrossEncoderTokenizer {
23-
(
24-
text: string,
25-
options?: {
26-
text_pair?: string | null;
27-
padding?: boolean | 'max_length';
28-
truncation?: boolean | null;
29-
max_length?: number | null;
30-
return_tensor?: boolean;
31-
return_token_type_ids?: boolean | null;
32-
}
33-
): unknown;
34-
}
35-
3623
interface CrossEncoderModel {
3724
(inputs: unknown): Promise<{ logits: { data: ArrayLike<number> } }>;
3825
}
3926

40-
let cachedTokenizer: CrossEncoderTokenizer | null = null;
27+
let cachedTokenizer: PreTrainedTokenizer | null = null;
4128
let cachedModel: CrossEncoderModel | null = null;
4229
let initPromise: Promise<void> | null = null;
4330

‎src/embeddings/transformers.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { EmbeddingProvider, DEFAULT_MODEL } from './types.js';
2-
import type { FeatureExtractionPipelineType } from '@huggingface/transformers';
2+
import type { FeatureExtractionPipeline } from '@huggingface/transformers';
33
import os from 'os';
44

55
/**
@@ -43,7 +43,7 @@ export class TransformersEmbeddingProvider implements EmbeddingProvider {
4343
readonly modelName: string;
4444
readonly dimensions: number;
4545

46-
private pipeline: FeatureExtractionPipelineType | null = null;
46+
private pipeline: FeatureExtractionPipeline | null = null;
4747
private ready = false;
4848
private initPromise: Promise<void> | null = null;
4949

@@ -75,7 +75,7 @@ export class TransformersEmbeddingProvider implements EmbeddingProvider {
7575
task: 'feature-extraction',
7676
model: string,
7777
opts: Record<string, unknown>
78-
) => Promise<FeatureExtractionPipelineType>;
78+
) => Promise<FeatureExtractionPipeline>;
7979
this.pipeline = await (pipeline as PipelineFn)('feature-extraction', this.modelName, {
8080
dtype: 'q8',
8181
// Limit ONNX Runtime to half cores by default — prevents system freeze during indexing.

0 commit comments

Comments
 (0)