Skip to content

Commit a97d081

Browse files
author
福晋
committed
chore: code optimization
1 parent 347bc4e commit a97d081

16 files changed

Lines changed: 448 additions & 588 deletions

File tree

src/embedder/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
export type { Embedder } from './types';
1616

1717
// Language detection & CJK utilities — re-exported from utils for backward compatibility
18-
export { isCJK, splitMixed, detectLanguage, tokenizerForLanguage, detectTokenizer } from '../utils/tokenizer';
18+
export { isCJK, detectLanguage, tokenizerForLanguage, detectTokenizer } from '../utils/tokenizer';
1919
export type { LanguageHint } from '../utils/tokenizer';
2020

2121
// TransformersEmbedder — production-quality model embedder
@@ -26,4 +26,4 @@ export { EmbedderManager, getEmbedder, resetEmbedder } from './manager';
2626

2727
// Embedder resolution
2828
export { resolveEmbedder } from './resolve';
29-
export type { EmbedderInfo, EmbedderKind, ResolveResult } from './resolve';
29+
export type { EmbedderInfo, EmbedderKind } from './resolve';

src/embedder/manager.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,16 @@ export interface EmbedderManagerOptions {
3030
export class EmbedderManager {
3131
private _defaultEmbedder: Embedder | null = null;
3232
private readonly _loader: TransformersLoader;
33-
private readonly _ownsLoader: boolean;
3433

3534
constructor(options?: EmbedderManagerOptions) {
3635
if (options?.transformersLoader) {
3736
this._loader = options.transformersLoader;
38-
this._ownsLoader = false;
3937
} else {
4038
// Default: use global shared loader (backward-compatible)
4139
this._loader = {
4240
load: loadTransformersModule,
4341
reset: resetTransformersModule,
4442
};
45-
this._ownsLoader = false;
4643
}
4744
}
4845

@@ -70,12 +67,12 @@ export class EmbedderManager {
7067
if (!t) {
7168
throw new Error(
7269
'@huggingface/transformers is not installed. Semantic search requires a model-based embedder.\n' +
73-
' Install it with:\n' +
74-
' npm install @huggingface/transformers\n' +
75-
' Then download the model:\n' +
76-
' node scripts/download-model.mjs\n' +
77-
' Or set mirror for China:\n' +
78-
' export HF_ENDPOINT=https://hf-mirror.com'
70+
' Install it with:\n' +
71+
' npm install @huggingface/transformers\n' +
72+
' Then download the model:\n' +
73+
' node scripts/download-model.mjs\n' +
74+
' Or set mirror for China:\n' +
75+
' export HF_ENDPOINT=https://hf-mirror.com',
7976
);
8077
}
8178

@@ -86,9 +83,9 @@ export class EmbedderManager {
8683
} catch (err) {
8784
throw new Error(
8885
`Failed to load embedding model (bge-small-zh-v1.5): ${(err as Error).message?.split('\n')[0] ?? 'unknown'}\n` +
89-
' To fix model download:\n' +
90-
' 1. Set mirror: export HF_ENDPOINT=https://hf-mirror.com\n' +
91-
' 2. Manual download: node scripts/download-model.mjs'
86+
' To fix model download:\n' +
87+
' 1. Set mirror: export HF_ENDPOINT=https://hf-mirror.com\n' +
88+
' 2. Manual download: node scripts/download-model.mjs',
9289
);
9390
}
9491
return this._defaultEmbedder;

src/index.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,19 @@ export {
3737
tokenizerForLanguage,
3838
detectTokenizer,
3939
} from './embedder';
40-
export type { Embedder } from './embedder';
41-
export type { LanguageHint } from './embedder';
42-
export type { EmbedderInfo, EmbedderKind } from './embedder';
40+
export type { Embedder, LanguageHint, EmbedderInfo, EmbedderKind } from './embedder';
4341

4442
// Zvec store — custom vector storage backends
4543
export {
46-
IZvecStore,
4744
ActualZvecStore,
4845
createZvecStore,
4946
openZvecStore,
5047
openZvecStoreSync,
5148
isZvecAvailable,
5249
buildZvecSchema,
53-
cosineSimilarity,
5450
} from './storage/zvec-store';
5551
export type {
52+
IZvecStore,
5653
ZvecDoc,
5754
ZvecQueryResult,
5855
ZvecSearchParams,
@@ -66,3 +63,4 @@ export type {
6663
export { Store } from './storage/store';
6764
export type { StoreQueryParams } from './storage/store';
6865

66+

src/loaders/util.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import * as crypto from 'crypto';
21
import * as path from 'path';
2+
import { computeContentHash } from '../utils/hash';
33

44
/**
55
* Convert a file path to a safe, collision-resistant ID for zvec.
@@ -20,7 +20,7 @@ export function pathToId(filePath: string): string {
2020
const normalized = path.normalize(filePath).replace(/\\/g, '/').replace(/^\/+/, '');
2121

2222
// Generate a compact hash of the full path (16 hex chars = 64-bit)
23-
const hash = crypto.createHash('sha256').update(normalized).digest('hex').slice(0, 16);
23+
const hash = computeContentHash(normalized);
2424

2525
// Derive a short readable suffix from the filename (without extension)
2626
const basename = normalized.split('/').pop() ?? '';

0 commit comments

Comments
 (0)