/** * KnowledgeBase — 本地知识库 * * 让 Agent 拥有「个人知识」: * 1. 导入文档(TXT/MD/JSON) * 2. 自动分块(Chunking) * 3. 向量化索引 * 4. 语义查询 → RAG 注入 * 5. 知识管理(增删改查) * * 参考: OpenClaw Knowledge + LobeChat Files */ export interface KnowledgeDocument { id: string; title: string; source: string; format: "txt" | "md" | "json" | "html"; content: string; chunks: KnowledgeChunk[]; metadata: { createdAt: string; updatedAt: string; wordCount: number; chunkCount: number; tags?: string[]; }; } export interface KnowledgeChunk { chunkId: string; docId: string; content: string; vector: number[]; position: number; metadata: { heading?: string; lineStart?: number; lineEnd?: number; }; } export interface QueryResult { chunk: string; docId: string; docTitle: string; similarity: number; heading?: string; } export interface KnowledgeBaseConfig { dataPath: string; chunkSize: number; chunkOverlap: number; maxDocuments: number; maxChunksPerDoc: number; } export declare class KnowledgeBase { private config; private documents; private embedder; constructor(config?: Partial); /** 从文本导入 */ addDocument(title: string, content: string, options?: { format?: "txt" | "md" | "json" | "html"; tags?: string[]; source?: string; }): KnowledgeDocument; /** 从文件导入 */ addFromFile(filePath: string, options?: { tags?: string[]; }): KnowledgeDocument | null; /** 批量导入目录 */ addFromDirectory(dirPath: string, options?: { extensions?: string[]; tags?: string[]; }): number; /** 语义查询 */ query(question: string, limit?: number): QueryResult[]; /** 构建 RAG 上下文 */ buildContext(question: string, maxTokens?: number): string; /** 删除文档 */ removeDocument(docId: string): boolean; /** 列出所有文档 */ listDocuments(): Array<{ id: string; title: string; source: string; wordCount: number; chunkCount: number; tags?: string[]; createdAt: string; }>; /** 按标签搜索文档 */ searchByTag(tag: string): KnowledgeDocument[]; /** 状态 */ getStatus(): { totalDocuments: number; totalChunks: number; totalWords: number; vocabularySize: number; formats: Record; }; private preprocessContent; private chunkText; private rebuildIndex; private load; private save; } //# sourceMappingURL=base.d.ts.map