@leolee9086/hnsw
Version:
JavaScript HNSW (Hierarchical Navigable Small World) 向量索引库,支持动态操作和泛型搜索
58 lines (54 loc) • 1.48 kB
text/typescript
interface HNSWConfig$1<T> {
M: number;
efConstruction: number;
distanceFunction: (a: T, b: T) => number;
distanceToQuery?: (query: T, target: T) => number;
}
interface Neighbor$1 {
idx: number;
distance: number;
}
interface HNSWIndex$1<T> {
insertNode: (vector: T) => void;
search: (queryVector: T, k: number, efSearch?: number) => Neighbor$1[];
deleteNode: (nodeIdx: number) => boolean;
getStats: () => {
nodeCount: number;
activeNodeCount: number;
deletedNodeCount: number;
entryPoint: {
idx: number;
level: number;
};
};
}
declare function createHNSWIndex$1<T>(config: HNSWConfig$1<T>): HNSWIndex$1<T>;
interface HNSWConfig {
M: number;
efConstruction: number;
metricType: 'cosine' | 'l2';
}
interface Neighbor {
idx: number;
distance: number;
}
interface HNSWIndex {
insertNode: (vector: number[]) => void;
search: (queryVector: number[], k: number, efSearch?: number) => Neighbor[];
deleteNode: (nodeIdx: number) => boolean;
getStats: () => {
nodeCount: number;
activeNodeCount: number;
deletedNodeCount: number;
entryPoint: {
idx: number;
level: number;
};
};
}
declare function createHNSWIndex(config: HNSWConfig): HNSWIndex;
declare const hnsw: {
createIndex: typeof createHNSWIndex;
createIndexGeneric: typeof createHNSWIndex$1;
};
export { hnsw };