mcp-local-rag 0.1.5 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +25 -5
  2. package/dist/embedder/index.d.ts +6 -0
  3. package/dist/embedder/index.d.ts.map +1 -1
  4. package/dist/embedder/index.js +33 -6
  5. package/dist/embedder/index.js.map +1 -1
  6. package/dist/server/index.d.ts +16 -0
  7. package/dist/server/index.d.ts.map +1 -1
  8. package/dist/server/index.js +49 -1
  9. package/dist/server/index.js.map +1 -1
  10. package/dist/vectordb/index.js +2 -2
  11. package/dist/vectordb/index.js.map +1 -1
  12. package/package.json +1 -1
  13. package/dist/chunker.d.ts +0 -42
  14. package/dist/chunker.d.ts.map +0 -1
  15. package/dist/chunker.js +0 -68
  16. package/dist/chunker.js.map +0 -1
  17. package/dist/embedder.d.ts +0 -48
  18. package/dist/embedder.d.ts.map +0 -1
  19. package/dist/embedder.js +0 -108
  20. package/dist/embedder.js.map +0 -1
  21. package/dist/parser.d.ts +0 -92
  22. package/dist/parser.d.ts.map +0 -1
  23. package/dist/parser.js +0 -186
  24. package/dist/parser.js.map +0 -1
  25. package/dist/server.d.ts +0 -125
  26. package/dist/server.d.ts.map +0 -1
  27. package/dist/server.js +0 -300
  28. package/dist/server.js.map +0 -1
  29. package/dist/test-helpers/test-data.d.ts +0 -31
  30. package/dist/test-helpers/test-data.d.ts.map +0 -1
  31. package/dist/test-helpers/test-data.js +0 -53
  32. package/dist/test-helpers/test-data.js.map +0 -1
  33. package/dist/test-helpers/test-utils.d.ts +0 -21
  34. package/dist/test-helpers/test-utils.d.ts.map +0 -1
  35. package/dist/test-helpers/test-utils.js +0 -35
  36. package/dist/test-helpers/test-utils.js.map +0 -1
  37. package/dist/vectordb.d.ts +0 -121
  38. package/dist/vectordb.d.ts.map +0 -1
  39. package/dist/vectordb.js +0 -243
  40. package/dist/vectordb.js.map +0 -1
package/dist/server.js DELETED
@@ -1,300 +0,0 @@
1
- "use strict";
2
- // src/server.ts - RAGServer implementation with MCP tools
3
- // Design Doc: rag-mcp-server-design.md (v1.1)
4
- // ADR-0004: MCPセキュリティ対応(MCP 2025-06-18準拠)
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RAGServer = void 0;
7
- const node_crypto_1 = require("node:crypto");
8
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
9
- const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
10
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
11
- const chunker_js_1 = require("./chunker.js");
12
- const embedder_js_1 = require("./embedder.js");
13
- const parser_js_1 = require("./parser.js");
14
- const vectordb_js_1 = require("./vectordb.js");
15
- // ============================================
16
- // RAGServerクラス
17
- // ============================================
18
- /**
19
- * MCP Protocol準拠のRAGサーバー
20
- *
21
- * 責務:
22
- * - MCPツール統合(4つのツール)
23
- * - ツールハンドラ実装
24
- * - エラーハンドリング
25
- * - 初期化処理(LanceDB、Transformers.js)
26
- */
27
- class RAGServer {
28
- constructor(config) {
29
- this.server = new index_js_1.Server({ name: 'rag-mcp-server', version: '1.0.0' }, { capabilities: { tools: {} } });
30
- // コンポーネント初期化
31
- this.vectorStore = new vectordb_js_1.VectorStore({ dbPath: config.dbPath, tableName: 'chunks' });
32
- this.embedder = new embedder_js_1.Embedder({ modelPath: config.modelName, batchSize: 8 });
33
- this.chunker = new chunker_js_1.DocumentChunker({
34
- chunkSize: config.chunkSize,
35
- chunkOverlap: config.chunkOverlap,
36
- });
37
- this.parser = new parser_js_1.DocumentParser({
38
- baseDir: config.baseDir,
39
- maxFileSize: config.maxFileSize,
40
- });
41
- this.setupHandlers();
42
- }
43
- /**
44
- * MCPハンドラをセットアップする
45
- */
46
- setupHandlers() {
47
- // ツール一覧
48
- this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
49
- tools: [
50
- {
51
- name: 'query_documents',
52
- description: 'Search documents using natural language queries',
53
- inputSchema: {
54
- type: 'object',
55
- properties: {
56
- query: { type: 'string', description: 'Natural language query' },
57
- limit: { type: 'number', description: 'Maximum number of results (default: 5)' },
58
- },
59
- required: ['query'],
60
- },
61
- },
62
- {
63
- name: 'ingest_file',
64
- description: 'Ingest a document file (PDF, DOCX, TXT, MD)',
65
- inputSchema: {
66
- type: 'object',
67
- properties: {
68
- filePath: { type: 'string', description: 'Path to the file to ingest' },
69
- },
70
- required: ['filePath'],
71
- },
72
- },
73
- {
74
- name: 'list_files',
75
- description: 'List all ingested files',
76
- inputSchema: { type: 'object', properties: {} },
77
- },
78
- {
79
- name: 'status',
80
- description: 'Get system status',
81
- inputSchema: { type: 'object', properties: {} },
82
- },
83
- ],
84
- }));
85
- // ツール呼び出し
86
- this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
87
- switch (request.params.name) {
88
- case 'query_documents':
89
- return await this.handleQueryDocuments(request.params.arguments);
90
- case 'ingest_file':
91
- return await this.handleIngestFile(request.params.arguments);
92
- case 'list_files':
93
- return await this.handleListFiles();
94
- case 'status':
95
- return await this.handleStatus();
96
- default:
97
- throw new Error(`Unknown tool: ${request.params.name}`);
98
- }
99
- });
100
- }
101
- /**
102
- * 初期化処理
103
- */
104
- async initialize() {
105
- await this.vectorStore.initialize();
106
- await this.embedder.initialize();
107
- await this.chunker.initialize();
108
- console.log('RAGServer initialized');
109
- }
110
- /**
111
- * query_documentsツールハンドラ
112
- */
113
- async handleQueryDocuments(args) {
114
- try {
115
- // クエリ埋め込み生成
116
- const queryVector = await this.embedder.embed(args.query);
117
- // ベクトル検索
118
- const searchResults = await this.vectorStore.search(queryVector, args.limit || 5);
119
- // 結果をフォーマット
120
- const results = searchResults.map((result) => ({
121
- filePath: result.filePath,
122
- chunkIndex: result.chunkIndex,
123
- text: result.text,
124
- score: result.score,
125
- }));
126
- return {
127
- content: [
128
- {
129
- type: 'text',
130
- text: JSON.stringify(results, null, 2),
131
- },
132
- ],
133
- };
134
- }
135
- catch (error) {
136
- console.error('Failed to query documents:', error);
137
- throw error;
138
- }
139
- }
140
- /**
141
- * ingest_fileツールハンドラ(ファイル再取り込み対応、トランザクション処理、ロールバック機能)
142
- */
143
- async handleIngestFile(args) {
144
- let backup = null;
145
- try {
146
- // ファイルパース
147
- const text = await this.parser.parseFile(args.filePath);
148
- // テキストチャンク分割
149
- const chunks = await this.chunker.chunkText(text);
150
- // 埋め込み生成
151
- const embeddings = await this.embedder.embedBatch(chunks.map((chunk) => chunk.text));
152
- // バックアップ作成(既存データがある場合)
153
- try {
154
- const existingFiles = await this.vectorStore.listFiles();
155
- const existingFile = existingFiles.find((file) => file.filePath === args.filePath);
156
- if (existingFile && existingFile.chunkCount > 0) {
157
- // 既存データをバックアップ(検索で取得)
158
- const queryVector = embeddings[0] || [];
159
- if (queryVector.length === 384) {
160
- const allChunks = await this.vectorStore.search(queryVector, 20); // 最大20件取得
161
- backup = allChunks
162
- .filter((chunk) => chunk.filePath === args.filePath)
163
- .map((chunk) => ({
164
- id: (0, node_crypto_1.randomUUID)(),
165
- filePath: chunk.filePath,
166
- chunkIndex: chunk.chunkIndex,
167
- text: chunk.text,
168
- vector: queryVector, // 実際のベクトルは取得できないため、ダミーベクトルを使用
169
- metadata: chunk.metadata,
170
- timestamp: new Date().toISOString(),
171
- }));
172
- }
173
- console.log(`Backup created: ${backup?.length || 0} chunks for ${args.filePath}`);
174
- }
175
- }
176
- catch (error) {
177
- // バックアップ作成失敗は警告のみ(新規ファイルの場合)
178
- console.warn('Failed to create backup (new file?):', error);
179
- }
180
- // 既存データ削除
181
- await this.vectorStore.deleteChunks(args.filePath);
182
- console.log(`Deleted existing chunks for: ${args.filePath}`);
183
- // ベクトルチャンク作成
184
- const timestamp = new Date().toISOString();
185
- const vectorChunks = chunks.map((chunk, index) => {
186
- const embedding = embeddings[index];
187
- if (!embedding) {
188
- throw new Error(`Missing embedding for chunk ${index}`);
189
- }
190
- return {
191
- id: (0, node_crypto_1.randomUUID)(),
192
- filePath: args.filePath,
193
- chunkIndex: chunk.index,
194
- text: chunk.text,
195
- vector: embedding,
196
- metadata: {
197
- fileName: args.filePath.split('/').pop() || args.filePath,
198
- fileSize: text.length,
199
- fileType: args.filePath.split('.').pop() || '',
200
- },
201
- timestamp,
202
- };
203
- });
204
- // ベクトル挿入(トランザクション処理)
205
- try {
206
- await this.vectorStore.insertChunks(vectorChunks);
207
- console.log(`Inserted ${vectorChunks.length} chunks for: ${args.filePath}`);
208
- // 成功時バックアップ削除
209
- backup = null;
210
- }
211
- catch (insertError) {
212
- // エラー時ロールバック
213
- if (backup && backup.length > 0) {
214
- console.error('Ingestion failed, rolling back...', insertError);
215
- try {
216
- await this.vectorStore.insertChunks(backup);
217
- console.log(`Rollback completed: ${backup.length} chunks restored`);
218
- }
219
- catch (rollbackError) {
220
- console.error('Rollback failed:', rollbackError);
221
- throw new Error(`Failed to ingest file and rollback failed: ${insertError.message}`);
222
- }
223
- }
224
- throw insertError;
225
- }
226
- // 結果
227
- const result = {
228
- filePath: args.filePath,
229
- chunkCount: chunks.length,
230
- timestamp,
231
- };
232
- return {
233
- content: [
234
- {
235
- type: 'text',
236
- text: JSON.stringify(result, null, 2),
237
- },
238
- ],
239
- };
240
- }
241
- catch (error) {
242
- // エラーハンドリング: 本番環境でスタックトレース抑制
243
- const errorMessage = process.env['NODE_ENV'] === 'production'
244
- ? error.message
245
- : error.stack || error.message;
246
- console.error('Failed to ingest file:', errorMessage);
247
- throw new Error(`Failed to ingest file: ${errorMessage}`);
248
- }
249
- }
250
- /**
251
- * list_filesツールハンドラ(Phase 1: 基本実装)
252
- */
253
- async handleListFiles() {
254
- try {
255
- const files = await this.vectorStore.listFiles();
256
- return {
257
- content: [
258
- {
259
- type: 'text',
260
- text: JSON.stringify(files, null, 2),
261
- },
262
- ],
263
- };
264
- }
265
- catch (error) {
266
- console.error('Failed to list files:', error);
267
- throw error;
268
- }
269
- }
270
- /**
271
- * statusツールハンドラ(Phase 1: 基本実装)
272
- */
273
- async handleStatus() {
274
- try {
275
- const status = await this.vectorStore.getStatus();
276
- return {
277
- content: [
278
- {
279
- type: 'text',
280
- text: JSON.stringify(status, null, 2),
281
- },
282
- ],
283
- };
284
- }
285
- catch (error) {
286
- console.error('Failed to get status:', error);
287
- throw error;
288
- }
289
- }
290
- /**
291
- * サーバーを起動する
292
- */
293
- async run() {
294
- const transport = new stdio_js_1.StdioServerTransport();
295
- await this.server.connect(transport);
296
- console.log('RAGServer running on stdio transport');
297
- }
298
- }
299
- exports.RAGServer = RAGServer;
300
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Test Data Generation Helpers
3
- * @category test-helpers
4
- * @description テストデータ生成関数のコレクション
5
- */
6
- /**
7
- * PDFテストデータ生成(スタブ)
8
- * @returns PDFファイルパス(モック)
9
- */
10
- export declare function createTestPdf(): string;
11
- /**
12
- * DOCXテストデータ生成(スタブ)
13
- * @returns DOCXファイルパス(モック)
14
- */
15
- export declare function createTestDocx(): string;
16
- /**
17
- * TXTテストデータ生成(スタブ)
18
- * @returns TXTファイルパス(モック)
19
- */
20
- export declare function createTestTxt(): string;
21
- /**
22
- * MDテストデータ生成(スタブ)
23
- * @returns MDファイルパス(モック)
24
- */
25
- export declare function createTestMd(): string;
26
- /**
27
- * 破損PDFテストデータ生成(スタブ)
28
- * @returns 破損PDFファイルパス(モック)
29
- */
30
- export declare function createCorruptedPdf(): string;
31
- //# sourceMappingURL=test-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-data.d.ts","sourceRoot":"","sources":["../../src/test-helpers/test-data.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C"}
@@ -1,53 +0,0 @@
1
- "use strict";
2
- /**
3
- * Test Data Generation Helpers
4
- * @category test-helpers
5
- * @description テストデータ生成関数のコレクション
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createTestPdf = createTestPdf;
9
- exports.createTestDocx = createTestDocx;
10
- exports.createTestTxt = createTestTxt;
11
- exports.createTestMd = createTestMd;
12
- exports.createCorruptedPdf = createCorruptedPdf;
13
- /**
14
- * PDFテストデータ生成(スタブ)
15
- * @returns PDFファイルパス(モック)
16
- */
17
- function createTestPdf() {
18
- // Phase 1以降で実装
19
- return '/tmp/test-sample.pdf';
20
- }
21
- /**
22
- * DOCXテストデータ生成(スタブ)
23
- * @returns DOCXファイルパス(モック)
24
- */
25
- function createTestDocx() {
26
- // Phase 2以降で実装
27
- return '/tmp/test-sample.docx';
28
- }
29
- /**
30
- * TXTテストデータ生成(スタブ)
31
- * @returns TXTファイルパス(モック)
32
- */
33
- function createTestTxt() {
34
- // Phase 1以降で実装
35
- return '/tmp/test-sample.txt';
36
- }
37
- /**
38
- * MDテストデータ生成(スタブ)
39
- * @returns MDファイルパス(モック)
40
- */
41
- function createTestMd() {
42
- // Phase 1以降で実装
43
- return '/tmp/test-sample.md';
44
- }
45
- /**
46
- * 破損PDFテストデータ生成(スタブ)
47
- * @returns 破損PDFファイルパス(モック)
48
- */
49
- function createCorruptedPdf() {
50
- // Phase 1以降で実装
51
- return '/tmp/test-corrupted.pdf';
52
- }
53
- //# sourceMappingURL=test-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-data.js","sourceRoot":"","sources":["../../src/test-helpers/test-data.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAMH,sCAGC;AAMD,wCAGC;AAMD,sCAGC;AAMD,oCAGC;AAMD,gDAGC;AA3CD;;;GAGG;AACH,SAAgB,aAAa;IAC3B,eAAe;IACf,OAAO,sBAAsB,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc;IAC5B,eAAe;IACf,OAAO,uBAAuB,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa;IAC3B,eAAe;IACf,OAAO,sBAAsB,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY;IAC1B,eAAe;IACf,OAAO,qBAAqB,CAAA;AAC9B,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,eAAe;IACf,OAAO,yBAAyB,CAAA;AAClC,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Test Utility Functions
3
- * @category test-helpers
4
- * @description テストユーティリティ関数のコレクション
5
- */
6
- /**
7
- * テストDB削除(スタブ)
8
- * @returns クリーンアップ完了のPromise
9
- */
10
- export declare function cleanupTestDb(): Promise<void>;
11
- /**
12
- * テスト環境セットアップ(スタブ)
13
- * @returns セットアップ完了のPromise
14
- */
15
- export declare function setupTestEnvironment(): Promise<void>;
16
- /**
17
- * テスト環境クリーンアップ(スタブ)
18
- * @returns クリーンアップ完了のPromise
19
- */
20
- export declare function teardownTestEnvironment(): Promise<void>;
21
- //# sourceMappingURL=test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/test-helpers/test-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7D"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
- /**
3
- * Test Utility Functions
4
- * @category test-helpers
5
- * @description テストユーティリティ関数のコレクション
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.cleanupTestDb = cleanupTestDb;
9
- exports.setupTestEnvironment = setupTestEnvironment;
10
- exports.teardownTestEnvironment = teardownTestEnvironment;
11
- /**
12
- * テストDB削除(スタブ)
13
- * @returns クリーンアップ完了のPromise
14
- */
15
- async function cleanupTestDb() {
16
- // Phase 1以降で実装
17
- // LanceDBテストディレクトリを削除
18
- }
19
- /**
20
- * テスト環境セットアップ(スタブ)
21
- * @returns セットアップ完了のPromise
22
- */
23
- async function setupTestEnvironment() {
24
- // Phase 1以降で実装
25
- // LanceDB初期化、Transformers.jsモデルロード等
26
- }
27
- /**
28
- * テスト環境クリーンアップ(スタブ)
29
- * @returns クリーンアップ完了のPromise
30
- */
31
- async function teardownTestEnvironment() {
32
- // Phase 1以降で実装
33
- // テストデータ削除、DB接続クローズ等
34
- }
35
- //# sourceMappingURL=test-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/test-helpers/test-utils.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAMH,sCAGC;AAMD,oDAGC;AAMD,0DAGC;AAzBD;;;GAGG;AACI,KAAK,UAAU,aAAa;IACjC,eAAe;IACf,sBAAsB;AACxB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,oBAAoB;IACxC,eAAe;IACf,oCAAoC;AACtC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,uBAAuB;IAC3C,eAAe;IACf,qBAAqB;AACvB,CAAC"}
@@ -1,121 +0,0 @@
1
- /**
2
- * VectorStore設定
3
- */
4
- export interface VectorStoreConfig {
5
- /** LanceDBデータベースパス */
6
- dbPath: string;
7
- /** テーブル名 */
8
- tableName: string;
9
- }
10
- /**
11
- * ドキュメントメタデータ
12
- */
13
- export interface DocumentMetadata {
14
- /** ファイル名 */
15
- fileName: string;
16
- /** ファイルサイズ(バイト) */
17
- fileSize: number;
18
- /** ファイルタイプ(拡張子) */
19
- fileType: string;
20
- }
21
- /**
22
- * ベクトルチャンク
23
- */
24
- export interface VectorChunk {
25
- /** チャンクID(UUID) */
26
- id: string;
27
- /** ファイルパス(絶対パス) */
28
- filePath: string;
29
- /** チャンクインデックス(0始まり) */
30
- chunkIndex: number;
31
- /** チャンクテキスト */
32
- text: string;
33
- /** 埋め込みベクトル(384次元) */
34
- vector: number[];
35
- /** メタデータ */
36
- metadata: DocumentMetadata;
37
- /** 取り込み日時(ISO 8601形式) */
38
- timestamp: string;
39
- }
40
- /**
41
- * 検索結果
42
- */
43
- export interface SearchResult {
44
- /** ファイルパス */
45
- filePath: string;
46
- /** チャンクインデックス */
47
- chunkIndex: number;
48
- /** チャンクテキスト */
49
- text: string;
50
- /** 類似度スコア(0-1、高いほど類似) */
51
- score: number;
52
- /** メタデータ */
53
- metadata: DocumentMetadata;
54
- }
55
- /**
56
- * データベースエラー
57
- */
58
- export declare class DatabaseError extends Error {
59
- readonly cause?: Error | undefined;
60
- constructor(message: string, cause?: Error | undefined);
61
- }
62
- /**
63
- * LanceDBを活用したベクトルストレージクラス
64
- *
65
- * 責務:
66
- * - LanceDB操作(挿入、削除、検索)
67
- * - トランザクション処理(削除→挿入の原子性)
68
- * - メタデータ管理
69
- */
70
- export declare class VectorStore {
71
- private db;
72
- private table;
73
- private readonly config;
74
- constructor(config: VectorStoreConfig);
75
- /**
76
- * LanceDBを初期化し、テーブルを作成する
77
- */
78
- initialize(): Promise<void>;
79
- /**
80
- * 指定されたファイルパスのすべてのチャンクを削除する
81
- *
82
- * @param filePath - ファイルパス(絶対パス)
83
- */
84
- deleteChunks(filePath: string): Promise<void>;
85
- /**
86
- * ベクトルチャンクをバッチ挿入する
87
- *
88
- * @param chunks - ベクトルチャンクの配列
89
- */
90
- insertChunks(chunks: VectorChunk[]): Promise<void>;
91
- /**
92
- * ベクトル検索を実行する
93
- *
94
- * @param queryVector - クエリベクトル(384次元)
95
- * @param limit - 取得件数(デフォルト5)
96
- * @returns 検索結果の配列(スコア順降順)
97
- */
98
- search(queryVector: number[], limit?: number): Promise<SearchResult[]>;
99
- /**
100
- * 取り込み済みファイル一覧を取得する
101
- *
102
- * @returns ファイル情報の配列
103
- */
104
- listFiles(): Promise<{
105
- filePath: string;
106
- chunkCount: number;
107
- timestamp: string;
108
- }[]>;
109
- /**
110
- * システムステータスを取得する
111
- *
112
- * @returns システムステータス情報
113
- */
114
- getStatus(): Promise<{
115
- documentCount: number;
116
- chunkCount: number;
117
- memoryUsage: number;
118
- uptime: number;
119
- }>;
120
- }
121
- //# sourceMappingURL=vectordb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectordb.d.ts","sourceRoot":"","sources":["../src/vectordb.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY;IACZ,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAMD;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,KAAK,CAAC,EAAE,KAAK;gBAD7B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAMD;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAE9B,MAAM,EAAE,iBAAiB;IAIrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBjC;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnD;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BxD;;;;;;OAMG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkCvE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAyCzF;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC;QACzB,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;KACf,CAAC;CAmCH"}