import { SpaceName } from 'hnswlib-node'; import { Memory, Vector } from '../../types'; /** * 基于HNSW算法的向量索引实现 * 使用hnswlib-node库提供高效的相似向量搜索 */ export declare class HnswVectorIndex { private index; private dimensions; private maxElements; private memories; private idToIndex; private indexToId; private currentCount; private spacetype; private logger; private indexPath; private efConstruction; private M; /** * 创建HNSW向量索引 * @param dimensions 向量维度 * @param maxElements 最大元素数量 * @param indexPath 索引保存路径 * @param efConstruction 构建索引时的ef参数(默认200) * @param M 最大出边数(默认16) * @param spacetype 空间类型('l2'或'ip',默认'cosine') */ constructor(dimensions: number, maxElements?: number, indexPath?: string, efConstruction?: number, M?: number, spacetype?: SpaceName); /** * 初始化索引 */ private initIndex; /** * 添加记忆到索引 * @param memory 记忆对象 * @returns 是否成功添加 */ addMemory(memory: Memory): boolean; /** * 从索引中移除记忆 * @param id 记忆ID * @returns 是否成功移除 */ removeMemory(id: string): boolean; /** * 基于向量相似度搜索记忆 * @param vector 查询向量 * @param limit 返回结果数量 * @returns 相似记忆数组,按相似度降序排列 */ search(vector: Vector, limit?: number): Memory[]; /** * 将距离转换为相似度 * 根据不同的空间类型,使用不同的转换方法 */ private convertDistanceToSimilarity; /** * 获取所有索引中的记忆 * @returns 所有记忆的数组 */ getAllMemories(): Memory[]; /** * 获取索引中的记忆数量 * @returns 记忆数量 */ getSize(): number; /** * 保存索引到文件 * @param filePath 可选的文件路径,不提供则使用构造函数的路径 * @returns 是否成功保存 */ saveIndex(filePath?: string): boolean; /** * 从文件加载索引 * @param filePath 可选的文件路径,不提供则使用构造函数的路径 * @returns 是否成功加载 */ loadIndex(filePath?: string): boolean; /** * 清空索引 */ clear(): void; }