@zilliz/claude-context-core 0.0.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.
- package/LICENSE +21 -0
- package/README.md +275 -0
- package/dist/context.d.ts +234 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +879 -0
- package/dist/context.js.map +1 -0
- package/dist/embedding/base-embedding.d.ts +45 -0
- package/dist/embedding/base-embedding.d.ts.map +1 -0
- package/dist/embedding/base-embedding.js +36 -0
- package/dist/embedding/base-embedding.js.map +1 -0
- package/dist/embedding/gemini-embedding.d.ts +51 -0
- package/dist/embedding/gemini-embedding.d.ts.map +1 -0
- package/dist/embedding/gemini-embedding.js +143 -0
- package/dist/embedding/gemini-embedding.js.map +1 -0
- package/dist/embedding/index.d.ts +6 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +24 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/ollama-embedding.d.ts +64 -0
- package/dist/embedding/ollama-embedding.d.ts.map +1 -0
- package/dist/embedding/ollama-embedding.js +205 -0
- package/dist/embedding/ollama-embedding.js.map +1 -0
- package/dist/embedding/openai-embedding.d.ts +36 -0
- package/dist/embedding/openai-embedding.d.ts.map +1 -0
- package/dist/embedding/openai-embedding.js +103 -0
- package/dist/embedding/openai-embedding.js.map +1 -0
- package/dist/embedding/voyageai-embedding.d.ts +43 -0
- package/dist/embedding/voyageai-embedding.d.ts.map +1 -0
- package/dist/embedding/voyageai-embedding.js +223 -0
- package/dist/embedding/voyageai-embedding.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/splitter/ast-splitter.d.ts +22 -0
- package/dist/splitter/ast-splitter.d.ts.map +1 -0
- package/dist/splitter/ast-splitter.js +227 -0
- package/dist/splitter/ast-splitter.js.map +1 -0
- package/dist/splitter/index.d.ts +41 -0
- package/dist/splitter/index.d.ts.map +1 -0
- package/dist/splitter/index.js +27 -0
- package/dist/splitter/index.js.map +1 -0
- package/dist/splitter/langchain-splitter.d.ts +13 -0
- package/dist/splitter/langchain-splitter.d.ts.map +1 -0
- package/dist/splitter/langchain-splitter.js +118 -0
- package/dist/splitter/langchain-splitter.js.map +1 -0
- package/dist/sync/merkle.d.ts +26 -0
- package/dist/sync/merkle.d.ts.map +1 -0
- package/dist/sync/merkle.js +112 -0
- package/dist/sync/merkle.js.map +1 -0
- package/dist/sync/synchronizer.d.ts +30 -0
- package/dist/sync/synchronizer.d.ts.map +1 -0
- package/dist/sync/synchronizer.js +339 -0
- package/dist/sync/synchronizer.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/env-manager.d.ts +19 -0
- package/dist/utils/env-manager.d.ts.map +1 -0
- package/dist/utils/env-manager.js +125 -0
- package/dist/utils/env-manager.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/vectordb/index.d.ts +5 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +14 -0
- package/dist/vectordb/index.js.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts +51 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.js +406 -0
- package/dist/vectordb/milvus-restful-vectordb.js.map +1 -0
- package/dist/vectordb/milvus-vectordb.d.ts +34 -0
- package/dist/vectordb/milvus-vectordb.d.ts.map +1 -0
- package/dist/vectordb/milvus-vectordb.js +248 -0
- package/dist/vectordb/milvus-vectordb.js.map +1 -0
- package/dist/vectordb/types.d.ts +75 -0
- package/dist/vectordb/types.d.ts.map +1 -0
- package/dist/vectordb/types.js +9 -0
- package/dist/vectordb/types.js.map +1 -0
- package/dist/vectordb/zilliz-utils.d.ts +135 -0
- package/dist/vectordb/zilliz-utils.d.ts.map +1 -0
- package/dist/vectordb/zilliz-utils.js +192 -0
- package/dist/vectordb/zilliz-utils.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.envManager = exports.EnvManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
class EnvManager {
|
|
41
|
+
constructor() {
|
|
42
|
+
const homeDir = os.homedir();
|
|
43
|
+
this.envFilePath = path.join(homeDir, '.codecontext', '.env');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get environment variable by name
|
|
47
|
+
* Priority: process.env > .env file > undefined
|
|
48
|
+
*/
|
|
49
|
+
get(name) {
|
|
50
|
+
// First try to get from process environment variables
|
|
51
|
+
if (process.env[name]) {
|
|
52
|
+
return process.env[name];
|
|
53
|
+
}
|
|
54
|
+
// If not found in process env, try to read from .env file
|
|
55
|
+
try {
|
|
56
|
+
if (fs.existsSync(this.envFilePath)) {
|
|
57
|
+
const content = fs.readFileSync(this.envFilePath, 'utf-8');
|
|
58
|
+
const lines = content.split('\n');
|
|
59
|
+
for (const line of lines) {
|
|
60
|
+
const trimmedLine = line.trim();
|
|
61
|
+
if (trimmedLine.startsWith(`${name}=`)) {
|
|
62
|
+
return trimmedLine.substring(name.length + 1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
// Ignore file read errors
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Set environment variable to the .env file
|
|
74
|
+
*/
|
|
75
|
+
set(name, value) {
|
|
76
|
+
try {
|
|
77
|
+
// Ensure directory exists
|
|
78
|
+
const envDir = path.dirname(this.envFilePath);
|
|
79
|
+
if (!fs.existsSync(envDir)) {
|
|
80
|
+
fs.mkdirSync(envDir, { recursive: true });
|
|
81
|
+
}
|
|
82
|
+
let content = '';
|
|
83
|
+
let found = false;
|
|
84
|
+
// Read existing content if file exists
|
|
85
|
+
if (fs.existsSync(this.envFilePath)) {
|
|
86
|
+
content = fs.readFileSync(this.envFilePath, 'utf-8');
|
|
87
|
+
// Update existing variable
|
|
88
|
+
const lines = content.split('\n');
|
|
89
|
+
for (let i = 0; i < lines.length; i++) {
|
|
90
|
+
if (lines[i].trim().startsWith(`${name}=`)) {
|
|
91
|
+
// Replace the existing value
|
|
92
|
+
lines[i] = `${name}=${value}`;
|
|
93
|
+
found = true;
|
|
94
|
+
console.log(`✅ Updated ${name} in ${this.envFilePath}`);
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
content = lines.join('\n');
|
|
99
|
+
}
|
|
100
|
+
// If variable not found, append it
|
|
101
|
+
if (!found) {
|
|
102
|
+
if (content && !content.endsWith('\n')) {
|
|
103
|
+
content += '\n';
|
|
104
|
+
}
|
|
105
|
+
content += `${name}=${value}\n`;
|
|
106
|
+
console.log(`✅ Added ${name} to ${this.envFilePath}`);
|
|
107
|
+
}
|
|
108
|
+
fs.writeFileSync(this.envFilePath, content, 'utf-8');
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(`Failed to write env file: ${error}`);
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the path to the .env file
|
|
117
|
+
*/
|
|
118
|
+
getEnvFilePath() {
|
|
119
|
+
return this.envFilePath;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.EnvManager = EnvManager;
|
|
123
|
+
// Export a default instance for convenience
|
|
124
|
+
exports.envManager = new EnvManager();
|
|
125
|
+
//# sourceMappingURL=env-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-manager.js","sourceRoot":"","sources":["../../src/utils/env-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAa,UAAU;IAGnB;QACI,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,IAAY;QACZ,sDAAsD;QACtD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChC,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;wBACrC,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAClD,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,0BAA0B;QAC9B,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY,EAAE,KAAa;QAC3B,IAAI,CAAC;YACD,0BAA0B;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,KAAK,CAAC;YAElB,uCAAuC;YACvC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAErD,2BAA2B;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;wBACzC,6BAA6B;wBAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;wBAC9B,KAAK,GAAG,IAAI,CAAC;wBACb,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;wBACxD,MAAM;oBACV,CAAC;gBACL,CAAC;gBACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAED,mCAAmC;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,OAAO,IAAI,IAAI,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ;AA7FD,gCA6FC;AAED,4CAA4C;AAC/B,QAAA,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.envManager = exports.EnvManager = void 0;
|
|
4
|
+
var env_manager_1 = require("./env-manager");
|
|
5
|
+
Object.defineProperty(exports, "EnvManager", { enumerable: true, get: function () { return env_manager_1.EnvManager; } });
|
|
6
|
+
Object.defineProperty(exports, "envManager", { enumerable: true, get: function () { return env_manager_1.envManager; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAA9C,yGAAA,UAAU,OAAA;AAAE,yGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { VectorDocument, SearchOptions, VectorSearchResult, VectorDatabase, COLLECTION_LIMIT_MESSAGE } from './types';
|
|
2
|
+
export { MilvusRestfulVectorDatabase, MilvusRestfulConfig } from './milvus-restful-vectordb';
|
|
3
|
+
export { MilvusVectorDatabase, MilvusConfig } from './milvus-vectordb';
|
|
4
|
+
export { ClusterManager, ZillizConfig, Project, Cluster, CreateFreeClusterRequest, CreateFreeClusterResponse, CreateFreeClusterWithDetailsResponse, DescribeClusterResponse } from './zilliz-utils';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vectordb/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACH,cAAc,EACd,YAAY,EACZ,OAAO,EACP,OAAO,EACP,wBAAwB,EACxB,yBAAyB,EACzB,oCAAoC,EACpC,uBAAuB,EAC1B,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClusterManager = exports.MilvusVectorDatabase = exports.MilvusRestfulVectorDatabase = exports.COLLECTION_LIMIT_MESSAGE = void 0;
|
|
4
|
+
// Re-export types and interfaces
|
|
5
|
+
var types_1 = require("./types");
|
|
6
|
+
Object.defineProperty(exports, "COLLECTION_LIMIT_MESSAGE", { enumerable: true, get: function () { return types_1.COLLECTION_LIMIT_MESSAGE; } });
|
|
7
|
+
// Implementation class exports
|
|
8
|
+
var milvus_restful_vectordb_1 = require("./milvus-restful-vectordb");
|
|
9
|
+
Object.defineProperty(exports, "MilvusRestfulVectorDatabase", { enumerable: true, get: function () { return milvus_restful_vectordb_1.MilvusRestfulVectorDatabase; } });
|
|
10
|
+
var milvus_vectordb_1 = require("./milvus-vectordb");
|
|
11
|
+
Object.defineProperty(exports, "MilvusVectorDatabase", { enumerable: true, get: function () { return milvus_vectordb_1.MilvusVectorDatabase; } });
|
|
12
|
+
var zilliz_utils_1 = require("./zilliz-utils");
|
|
13
|
+
Object.defineProperty(exports, "ClusterManager", { enumerable: true, get: function () { return zilliz_utils_1.ClusterManager; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vectordb/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,iCAMiB;AADb,iHAAA,wBAAwB,OAAA;AAG5B,+BAA+B;AAC/B,qEAA6F;AAApF,sIAAA,2BAA2B,OAAA;AACpC,qDAAuE;AAA9D,uHAAA,oBAAoB,OAAA;AAC7B,+CASwB;AARpB,8GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { VectorDocument, SearchOptions, VectorSearchResult, VectorDatabase } from './types';
|
|
2
|
+
export interface MilvusRestfulConfig {
|
|
3
|
+
address?: string;
|
|
4
|
+
token?: string;
|
|
5
|
+
username?: string;
|
|
6
|
+
password?: string;
|
|
7
|
+
database?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Milvus Vector Database implementation using REST API
|
|
11
|
+
* This implementation is designed for environments where gRPC is not available,
|
|
12
|
+
* such as VSCode extensions or browser environments.
|
|
13
|
+
*/
|
|
14
|
+
export declare class MilvusRestfulVectorDatabase implements VectorDatabase {
|
|
15
|
+
protected config: MilvusRestfulConfig;
|
|
16
|
+
private baseUrl;
|
|
17
|
+
protected initializationPromise: Promise<void>;
|
|
18
|
+
constructor(config: MilvusRestfulConfig);
|
|
19
|
+
private initialize;
|
|
20
|
+
private initializeClient;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve address from config or token
|
|
23
|
+
* Common logic for both gRPC and REST implementations
|
|
24
|
+
*/
|
|
25
|
+
protected resolveAddress(): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Ensure initialization is complete before method execution
|
|
28
|
+
*/
|
|
29
|
+
protected ensureInitialized(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Make HTTP request to Milvus REST API
|
|
32
|
+
*/
|
|
33
|
+
private makeRequest;
|
|
34
|
+
createCollection(collectionName: string, dimension: number, description?: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Create index for vector field using the Index Create API
|
|
37
|
+
*/
|
|
38
|
+
private createIndex;
|
|
39
|
+
/**
|
|
40
|
+
* Load collection to memory for searching
|
|
41
|
+
*/
|
|
42
|
+
private loadCollection;
|
|
43
|
+
dropCollection(collectionName: string): Promise<void>;
|
|
44
|
+
hasCollection(collectionName: string): Promise<boolean>;
|
|
45
|
+
listCollections(): Promise<string[]>;
|
|
46
|
+
insert(collectionName: string, documents: VectorDocument[]): Promise<void>;
|
|
47
|
+
search(collectionName: string, queryVector: number[], options?: SearchOptions): Promise<VectorSearchResult[]>;
|
|
48
|
+
delete(collectionName: string, ids: string[]): Promise<void>;
|
|
49
|
+
query(collectionName: string, filter: string, outputFields: string[], limit?: number): Promise<Record<string, any>[]>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=milvus-restful-vectordb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"milvus-restful-vectordb.d.ts","sourceRoot":"","sources":["../../src/vectordb/milvus-restful-vectordb.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,cAAc,EAEjB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,mBAAmB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAwBD;;;;GAIG;AACH,qBAAa,2BAA4B,YAAW,cAAc;IAC9D,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACtC,OAAO,CAAC,OAAO,CAAuB;IACtC,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEnC,MAAM,EAAE,mBAAmB;YAOzB,UAAU;YAKV,gBAAgB;IAY9B;;;OAGG;cACa,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAejD;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlD;;OAEG;YACW,WAAW;IA4CnB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFtG;;OAEG;YACW,WAAW;IAuBzB;;OAEG;YACW,cAAc;IAatB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBvD,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBpC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1E,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgE7G,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5D,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CA2B9H"}
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MilvusRestfulVectorDatabase = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const zilliz_utils_1 = require("./zilliz-utils");
|
|
6
|
+
/**
|
|
7
|
+
* Wrapper function to handle collection creation with limit detection
|
|
8
|
+
* This is the single point where collection limit errors are detected and handled
|
|
9
|
+
*/
|
|
10
|
+
async function createCollectionWithLimitCheck(makeRequestFn, collectionSchema) {
|
|
11
|
+
try {
|
|
12
|
+
await makeRequestFn('/collections/create', 'POST', collectionSchema);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
// Check if the error message contains the collection limit exceeded pattern
|
|
16
|
+
const errorMessage = error.message || error.toString() || '';
|
|
17
|
+
if (/exceeded the limit number of collections/i.test(errorMessage)) {
|
|
18
|
+
// Throw the exact message string, not an Error object
|
|
19
|
+
throw types_1.COLLECTION_LIMIT_MESSAGE;
|
|
20
|
+
}
|
|
21
|
+
// Re-throw other errors as-is
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Milvus Vector Database implementation using REST API
|
|
27
|
+
* This implementation is designed for environments where gRPC is not available,
|
|
28
|
+
* such as VSCode extensions or browser environments.
|
|
29
|
+
*/
|
|
30
|
+
class MilvusRestfulVectorDatabase {
|
|
31
|
+
constructor(config) {
|
|
32
|
+
this.baseUrl = null;
|
|
33
|
+
this.config = config;
|
|
34
|
+
// Start initialization asynchronously without waiting
|
|
35
|
+
this.initializationPromise = this.initialize();
|
|
36
|
+
}
|
|
37
|
+
async initialize() {
|
|
38
|
+
const resolvedAddress = await this.resolveAddress();
|
|
39
|
+
await this.initializeClient(resolvedAddress);
|
|
40
|
+
}
|
|
41
|
+
async initializeClient(address) {
|
|
42
|
+
// Ensure address has protocol prefix
|
|
43
|
+
let processedAddress = address;
|
|
44
|
+
if (!processedAddress.startsWith('http://') && !processedAddress.startsWith('https://')) {
|
|
45
|
+
processedAddress = `http://${processedAddress}`;
|
|
46
|
+
}
|
|
47
|
+
this.baseUrl = processedAddress.replace(/\/$/, '') + '/v2/vectordb';
|
|
48
|
+
console.log(`🔌 Connecting to Milvus REST API at: ${processedAddress}`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolve address from config or token
|
|
52
|
+
* Common logic for both gRPC and REST implementations
|
|
53
|
+
*/
|
|
54
|
+
async resolveAddress() {
|
|
55
|
+
let finalConfig = { ...this.config };
|
|
56
|
+
// If address is not provided, get it using token
|
|
57
|
+
if (!finalConfig.address && finalConfig.token) {
|
|
58
|
+
finalConfig.address = await zilliz_utils_1.ClusterManager.getAddressFromToken(finalConfig.token);
|
|
59
|
+
}
|
|
60
|
+
if (!finalConfig.address) {
|
|
61
|
+
throw new Error('Address is required and could not be resolved from token');
|
|
62
|
+
}
|
|
63
|
+
return finalConfig.address;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Ensure initialization is complete before method execution
|
|
67
|
+
*/
|
|
68
|
+
async ensureInitialized() {
|
|
69
|
+
await this.initializationPromise;
|
|
70
|
+
if (!this.baseUrl) {
|
|
71
|
+
throw new Error('Base URL not initialized');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Make HTTP request to Milvus REST API
|
|
76
|
+
*/
|
|
77
|
+
async makeRequest(endpoint, method = 'POST', data) {
|
|
78
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
79
|
+
const headers = {
|
|
80
|
+
'Content-Type': 'application/json',
|
|
81
|
+
'Accept': 'application/json'
|
|
82
|
+
};
|
|
83
|
+
// Handle authentication
|
|
84
|
+
if (this.config.token) {
|
|
85
|
+
headers['Authorization'] = `Bearer ${this.config.token}`;
|
|
86
|
+
}
|
|
87
|
+
else if (this.config.username && this.config.password) {
|
|
88
|
+
headers['Authorization'] = `Bearer ${this.config.username}:${this.config.password}`;
|
|
89
|
+
}
|
|
90
|
+
const requestOptions = {
|
|
91
|
+
method,
|
|
92
|
+
headers,
|
|
93
|
+
};
|
|
94
|
+
if (data && method === 'POST') {
|
|
95
|
+
requestOptions.body = JSON.stringify(data);
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const response = await fetch(url, requestOptions);
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
101
|
+
}
|
|
102
|
+
const result = await response.json();
|
|
103
|
+
if (result.code !== 0 && result.code !== 200) {
|
|
104
|
+
throw new Error(`Milvus API error: ${result.message || 'Unknown error'}`);
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error(`Milvus REST API request failed:`, error);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async createCollection(collectionName, dimension, description) {
|
|
114
|
+
await this.ensureInitialized();
|
|
115
|
+
try {
|
|
116
|
+
const restfulConfig = this.config;
|
|
117
|
+
// Build collection schema based on the original milvus-vectordb.ts implementation
|
|
118
|
+
// Note: REST API doesn't support description parameter in collection creation
|
|
119
|
+
// Unlike gRPC version, the description parameter is ignored in REST API
|
|
120
|
+
const collectionSchema = {
|
|
121
|
+
collectionName,
|
|
122
|
+
dbName: restfulConfig.database,
|
|
123
|
+
schema: {
|
|
124
|
+
enableDynamicField: false,
|
|
125
|
+
fields: [
|
|
126
|
+
{
|
|
127
|
+
fieldName: "id",
|
|
128
|
+
dataType: "VarChar",
|
|
129
|
+
isPrimary: true,
|
|
130
|
+
elementTypeParams: {
|
|
131
|
+
max_length: 512
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
fieldName: "vector",
|
|
136
|
+
dataType: "FloatVector",
|
|
137
|
+
elementTypeParams: {
|
|
138
|
+
dim: dimension
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
fieldName: "content",
|
|
143
|
+
dataType: "VarChar",
|
|
144
|
+
elementTypeParams: {
|
|
145
|
+
max_length: 65535
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
fieldName: "relativePath",
|
|
150
|
+
dataType: "VarChar",
|
|
151
|
+
elementTypeParams: {
|
|
152
|
+
max_length: 1024
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
fieldName: "startLine",
|
|
157
|
+
dataType: "Int64"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
fieldName: "endLine",
|
|
161
|
+
dataType: "Int64"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
fieldName: "fileExtension",
|
|
165
|
+
dataType: "VarChar",
|
|
166
|
+
elementTypeParams: {
|
|
167
|
+
max_length: 32
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
fieldName: "metadata",
|
|
172
|
+
dataType: "VarChar",
|
|
173
|
+
elementTypeParams: {
|
|
174
|
+
max_length: 65535
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
// Step 1: Create collection with schema
|
|
181
|
+
await createCollectionWithLimitCheck(this.makeRequest.bind(this), collectionSchema);
|
|
182
|
+
// Step 2: Create index for vector field (separate API call)
|
|
183
|
+
await this.createIndex(collectionName);
|
|
184
|
+
// Step 3: Load collection to memory for searching
|
|
185
|
+
await this.loadCollection(collectionName);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.error(`❌ Failed to create collection '${collectionName}':`, error);
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create index for vector field using the Index Create API
|
|
194
|
+
*/
|
|
195
|
+
async createIndex(collectionName) {
|
|
196
|
+
try {
|
|
197
|
+
const restfulConfig = this.config;
|
|
198
|
+
const indexParams = {
|
|
199
|
+
collectionName,
|
|
200
|
+
dbName: restfulConfig.database,
|
|
201
|
+
indexParams: [
|
|
202
|
+
{
|
|
203
|
+
fieldName: "vector",
|
|
204
|
+
indexName: "vector_index",
|
|
205
|
+
metricType: "COSINE",
|
|
206
|
+
index_type: "AUTOINDEX"
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
};
|
|
210
|
+
await this.makeRequest('/indexes/create', 'POST', indexParams);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
console.error(`❌ Failed to create index for collection '${collectionName}':`, error);
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Load collection to memory for searching
|
|
219
|
+
*/
|
|
220
|
+
async loadCollection(collectionName) {
|
|
221
|
+
try {
|
|
222
|
+
const restfulConfig = this.config;
|
|
223
|
+
await this.makeRequest('/collections/load', 'POST', {
|
|
224
|
+
collectionName,
|
|
225
|
+
dbName: restfulConfig.database
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.error(`❌ Failed to load collection '${collectionName}':`, error);
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async dropCollection(collectionName) {
|
|
234
|
+
await this.ensureInitialized();
|
|
235
|
+
try {
|
|
236
|
+
const restfulConfig = this.config;
|
|
237
|
+
await this.makeRequest('/collections/drop', 'POST', {
|
|
238
|
+
collectionName,
|
|
239
|
+
dbName: restfulConfig.database
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
console.error(`❌ Failed to drop collection '${collectionName}':`, error);
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
async hasCollection(collectionName) {
|
|
248
|
+
await this.ensureInitialized();
|
|
249
|
+
try {
|
|
250
|
+
const restfulConfig = this.config;
|
|
251
|
+
const response = await this.makeRequest('/collections/has', 'POST', {
|
|
252
|
+
collectionName,
|
|
253
|
+
dbName: restfulConfig.database
|
|
254
|
+
});
|
|
255
|
+
const exists = response.data?.has || false;
|
|
256
|
+
return exists;
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
console.error(`❌ Failed to check collection '${collectionName}' existence:`, error);
|
|
260
|
+
throw error;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
async listCollections() {
|
|
264
|
+
await this.ensureInitialized();
|
|
265
|
+
try {
|
|
266
|
+
const restfulConfig = this.config;
|
|
267
|
+
const response = await this.makeRequest('/collections/list', 'POST', {
|
|
268
|
+
dbName: restfulConfig.database
|
|
269
|
+
});
|
|
270
|
+
return response.data || [];
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.error(`❌ Failed to list collections:`, error);
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async insert(collectionName, documents) {
|
|
278
|
+
await this.ensureInitialized();
|
|
279
|
+
try {
|
|
280
|
+
const restfulConfig = this.config;
|
|
281
|
+
// Transform VectorDocument array to Milvus entity format
|
|
282
|
+
const data = documents.map(doc => ({
|
|
283
|
+
id: doc.id,
|
|
284
|
+
vector: doc.vector,
|
|
285
|
+
content: doc.content,
|
|
286
|
+
relativePath: doc.relativePath,
|
|
287
|
+
startLine: doc.startLine,
|
|
288
|
+
endLine: doc.endLine,
|
|
289
|
+
fileExtension: doc.fileExtension,
|
|
290
|
+
metadata: JSON.stringify(doc.metadata) // Convert metadata object to JSON string
|
|
291
|
+
}));
|
|
292
|
+
const insertRequest = {
|
|
293
|
+
collectionName,
|
|
294
|
+
data,
|
|
295
|
+
dbName: restfulConfig.database
|
|
296
|
+
};
|
|
297
|
+
await this.makeRequest('/entities/insert', 'POST', insertRequest);
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
console.error(`❌ Failed to insert documents into collection '${collectionName}':`, error);
|
|
301
|
+
throw error;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
async search(collectionName, queryVector, options) {
|
|
305
|
+
await this.ensureInitialized();
|
|
306
|
+
const topK = options?.topK || 10;
|
|
307
|
+
try {
|
|
308
|
+
const restfulConfig = this.config;
|
|
309
|
+
// Build search request according to Milvus REST API specification
|
|
310
|
+
const searchRequest = {
|
|
311
|
+
collectionName,
|
|
312
|
+
dbName: restfulConfig.database,
|
|
313
|
+
data: [queryVector], // Array of query vectors
|
|
314
|
+
annsField: "vector", // Vector field name
|
|
315
|
+
limit: topK,
|
|
316
|
+
outputFields: [
|
|
317
|
+
"content",
|
|
318
|
+
"relativePath",
|
|
319
|
+
"startLine",
|
|
320
|
+
"endLine",
|
|
321
|
+
"fileExtension",
|
|
322
|
+
"metadata"
|
|
323
|
+
],
|
|
324
|
+
searchParams: {
|
|
325
|
+
metricType: "COSINE", // Match the index metric type
|
|
326
|
+
params: {}
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
const response = await this.makeRequest('/entities/search', 'POST', searchRequest);
|
|
330
|
+
// Transform response to VectorSearchResult format
|
|
331
|
+
const results = (response.data || []).map((item) => {
|
|
332
|
+
// Parse metadata from JSON string
|
|
333
|
+
let metadata = {};
|
|
334
|
+
try {
|
|
335
|
+
metadata = JSON.parse(item.metadata || '{}');
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
console.warn(`Failed to parse metadata for item ${item.id}:`, error);
|
|
339
|
+
metadata = {};
|
|
340
|
+
}
|
|
341
|
+
return {
|
|
342
|
+
document: {
|
|
343
|
+
id: item.id?.toString() || '',
|
|
344
|
+
vector: queryVector, // Vector not returned in search results
|
|
345
|
+
content: item.content || '',
|
|
346
|
+
relativePath: item.relativePath || '',
|
|
347
|
+
startLine: item.startLine || 0,
|
|
348
|
+
endLine: item.endLine || 0,
|
|
349
|
+
fileExtension: item.fileExtension || '',
|
|
350
|
+
metadata: metadata
|
|
351
|
+
},
|
|
352
|
+
score: item.distance || 0
|
|
353
|
+
};
|
|
354
|
+
});
|
|
355
|
+
return results;
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
358
|
+
console.error(`❌ Failed to search in collection '${collectionName}':`, error);
|
|
359
|
+
throw error;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
async delete(collectionName, ids) {
|
|
363
|
+
await this.ensureInitialized();
|
|
364
|
+
try {
|
|
365
|
+
const restfulConfig = this.config;
|
|
366
|
+
// Build filter expression for deleting by IDs
|
|
367
|
+
// Format: id in ["id1", "id2", "id3"]
|
|
368
|
+
const filter = `id in [${ids.map(id => `"${id}"`).join(', ')}]`;
|
|
369
|
+
const deleteRequest = {
|
|
370
|
+
collectionName,
|
|
371
|
+
filter,
|
|
372
|
+
dbName: restfulConfig.database
|
|
373
|
+
};
|
|
374
|
+
await this.makeRequest('/entities/delete', 'POST', deleteRequest);
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
console.error(`❌ Failed to delete documents from collection '${collectionName}':`, error);
|
|
378
|
+
throw error;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
async query(collectionName, filter, outputFields, limit) {
|
|
382
|
+
await this.ensureInitialized();
|
|
383
|
+
try {
|
|
384
|
+
const restfulConfig = this.config;
|
|
385
|
+
const queryRequest = {
|
|
386
|
+
collectionName,
|
|
387
|
+
dbName: restfulConfig.database,
|
|
388
|
+
filter,
|
|
389
|
+
outputFields,
|
|
390
|
+
limit: limit || 16384, // Use provided limit or default
|
|
391
|
+
offset: 0
|
|
392
|
+
};
|
|
393
|
+
const response = await this.makeRequest('/entities/query', 'POST', queryRequest);
|
|
394
|
+
if (response.code !== 0) {
|
|
395
|
+
throw new Error(`Failed to query Milvus: ${response.message || 'Unknown error'}`);
|
|
396
|
+
}
|
|
397
|
+
return response.data || [];
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
console.error(`❌ Failed to query collection '${collectionName}':`, error);
|
|
401
|
+
throw error;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
exports.MilvusRestfulVectorDatabase = MilvusRestfulVectorDatabase;
|
|
406
|
+
//# sourceMappingURL=milvus-restful-vectordb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"milvus-restful-vectordb.js","sourceRoot":"","sources":["../../src/vectordb/milvus-restful-vectordb.ts"],"names":[],"mappings":"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"}
|