@dofe/infra-vector 0.1.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.
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Embedding Service
3
+ * 文本嵌入服务,用于生成向量嵌入
4
+ */
5
+ import { OnModuleInit } from '@nestjs/common';
6
+ import { ConfigService } from '@nestjs/config';
7
+ import { Logger } from 'winston';
8
+ import { HttpService } from '@nestjs/axios';
9
+ export declare class EmbeddingService implements OnModuleInit {
10
+ private readonly logger;
11
+ private readonly configService;
12
+ private readonly httpService;
13
+ private config;
14
+ constructor(logger: Logger, configService: ConfigService, httpService: HttpService);
15
+ onModuleInit(): void;
16
+ /**
17
+ * 生成单个文本的嵌入向量
18
+ */
19
+ embed(text: string): Promise<number[]>;
20
+ /**
21
+ * 批量生成嵌入向量
22
+ */
23
+ embedBatch(texts: string[]): Promise<number[][]>;
24
+ /**
25
+ * 为查询生成嵌入(带前缀)
26
+ */
27
+ embedQuery(query: string): Promise<number[]>;
28
+ /**
29
+ * 为文档生成嵌入(带前缀)
30
+ */
31
+ embedDocument(document: string): Promise<number[]>;
32
+ /**
33
+ * 批量为文档生成嵌入
34
+ */
35
+ embedDocuments(documents: string[]): Promise<number[][]>;
36
+ /**
37
+ * 计算两个向量的余弦相似度
38
+ */
39
+ cosineSimilarity(a: number[], b: number[]): number;
40
+ /**
41
+ * 计算 MMR(最大边际相关性)多样性
42
+ */
43
+ mmr(queryEmbedding: number[], candidates: Array<{
44
+ embedding?: number[];
45
+ id: string;
46
+ }>, options?: {
47
+ lambda?: number;
48
+ topK?: number;
49
+ }): string[];
50
+ private buildUrl;
51
+ private buildHeaders;
52
+ private addPrefix;
53
+ }
54
+ //# sourceMappingURL=embedding.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.service.d.ts","sourceRoot":"","sources":["../src/embedding.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,qBACa,gBAAiB,YAAW,YAAY;IAIhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,OAAO,CAAC,MAAM,CAAkB;gBAGoB,MAAM,EAAE,MAAM,EAC/C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW;IAG3C,YAAY;IAsDZ;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAmFtD;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKxD;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAO9D;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAmBlD;;OAEG;IACH,GAAG,CACD,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,EACvD,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/C,MAAM,EAAE;IA8DX,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,SAAS;CAMlB"}
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EmbeddingService = void 0;
16
+ /**
17
+ * Embedding Service
18
+ * 文本嵌入服务,用于生成向量嵌入
19
+ */
20
+ const common_1 = require("@nestjs/common");
21
+ const config_1 = require("@nestjs/config");
22
+ const nest_winston_1 = require("nest-winston");
23
+ const winston_1 = require("winston");
24
+ const axios_1 = require("@nestjs/axios");
25
+ const rxjs_1 = require("rxjs");
26
+ const infra_common_1 = require("@dofe/infra-common");
27
+ let EmbeddingService = class EmbeddingService {
28
+ logger;
29
+ configService;
30
+ httpService;
31
+ config;
32
+ constructor(logger, configService, httpService) {
33
+ this.logger = logger;
34
+ this.configService = configService;
35
+ this.httpService = httpService;
36
+ }
37
+ onModuleInit() {
38
+ const keysConfig = (0, infra_common_1.getKeysConfig)();
39
+ const embeddingKeys = keysConfig?.embedding;
40
+ // keys/config.json 优先,其次才 fallback env(兼容旧配置)
41
+ this.config = {
42
+ baseUrl: embeddingKeys?.baseUrl ??
43
+ this.configService.get('EMBEDDING_BASE_URL', this.configService.get('OPENAI_API_BASE', 'https://api.openai.com/v1')),
44
+ apiKey: embeddingKeys?.apiKey ??
45
+ this.configService.get('EMBEDDING_API_KEY', this.configService.get('OPENAI_API_KEY')),
46
+ model: embeddingKeys?.model ??
47
+ this.configService.get('EMBEDDING_MODEL', 'text-embedding-3-small'),
48
+ dimensions: embeddingKeys?.dimensions ??
49
+ this.configService.get('EMBEDDING_DIMENSIONS'),
50
+ timeoutMs: embeddingKeys?.timeoutMs ??
51
+ this.configService.get('EMBEDDING_TIMEOUT_MS', 20000),
52
+ queryPrefix: embeddingKeys?.queryPrefix ??
53
+ this.configService.get('EMBEDDING_QUERY_PREFIX', 'query:'),
54
+ documentPrefix: embeddingKeys?.documentPrefix ??
55
+ this.configService.get('EMBEDDING_DOCUMENT_PREFIX', 'passage:'),
56
+ };
57
+ this.logger.info('[Embedding] Service initialized', {
58
+ baseUrl: this.config.baseUrl ? '[configured]' : '[not configured]',
59
+ model: this.config.model,
60
+ dimensions: this.config.dimensions,
61
+ });
62
+ }
63
+ // ============================================================================
64
+ // Public API
65
+ // ============================================================================
66
+ /**
67
+ * 生成单个文本的嵌入向量
68
+ */
69
+ async embed(text) {
70
+ const embeddings = await this.embedBatch([text]);
71
+ return embeddings[0] ?? [];
72
+ }
73
+ /**
74
+ * 批量生成嵌入向量
75
+ */
76
+ async embedBatch(texts) {
77
+ if (texts.length === 0) {
78
+ return [];
79
+ }
80
+ if (!this.config.baseUrl || !this.config.apiKey) {
81
+ this.logger.warn('[Embedding] Service not configured, returning empty embeddings');
82
+ return texts.map(() => []);
83
+ }
84
+ const url = this.buildUrl('/embeddings');
85
+ const headers = this.buildHeaders();
86
+ // 过滤空文本
87
+ const validTexts = texts.filter((t) => t && t.trim().length > 0);
88
+ if (validTexts.length === 0) {
89
+ return texts.map(() => []);
90
+ }
91
+ try {
92
+ const response = await (0, rxjs_1.firstValueFrom)(this.httpService
93
+ .post(url, {
94
+ model: this.config.model,
95
+ input: validTexts,
96
+ ...(this.config.dimensions
97
+ ? { dimensions: this.config.dimensions }
98
+ : {}),
99
+ }, { headers })
100
+ .pipe((0, rxjs_1.timeout)(this.config.timeoutMs), (0, rxjs_1.retry)({
101
+ count: 2,
102
+ delay: 500,
103
+ })));
104
+ const data = response.data?.data ?? [];
105
+ // 按索引排序并提取嵌入
106
+ const sortedEmbeddings = data
107
+ .sort((a, b) => (a.index ?? 0) - (b.index ?? 0))
108
+ .map((item) => item.embedding ?? []);
109
+ // 如果请求数量和返回数量不匹配,用空数组填充
110
+ const result = [];
111
+ let dataIndex = 0;
112
+ for (const text of texts) {
113
+ if (text && text.trim().length > 0) {
114
+ result.push(sortedEmbeddings[dataIndex] ?? []);
115
+ dataIndex++;
116
+ }
117
+ else {
118
+ result.push([]);
119
+ }
120
+ }
121
+ this.logger.debug('[Embedding] Generated embeddings', {
122
+ count: result.filter((e) => e.length > 0).length,
123
+ total: texts.length,
124
+ });
125
+ return result;
126
+ }
127
+ catch (error) {
128
+ const errorMessage = error instanceof Error ? error.message : String(error);
129
+ this.logger.error('[Embedding] Failed to generate embeddings', {
130
+ error: errorMessage,
131
+ textsCount: texts.length,
132
+ });
133
+ // 返回空嵌入而不是抛出错误
134
+ return texts.map(() => []);
135
+ }
136
+ }
137
+ /**
138
+ * 为查询生成嵌入(带前缀)
139
+ */
140
+ async embedQuery(query) {
141
+ const prefixedQuery = this.addPrefix(query, this.config.queryPrefix);
142
+ return this.embed(prefixedQuery);
143
+ }
144
+ /**
145
+ * 为文档生成嵌入(带前缀)
146
+ */
147
+ async embedDocument(document) {
148
+ const prefixedDoc = this.addPrefix(document, this.config.documentPrefix);
149
+ return this.embed(prefixedDoc);
150
+ }
151
+ /**
152
+ * 批量为文档生成嵌入
153
+ */
154
+ async embedDocuments(documents) {
155
+ const prefixedDocs = documents.map((doc) => this.addPrefix(doc, this.config.documentPrefix));
156
+ return this.embedBatch(prefixedDocs);
157
+ }
158
+ /**
159
+ * 计算两个向量的余弦相似度
160
+ */
161
+ cosineSimilarity(a, b) {
162
+ if (a.length !== b.length || a.length === 0) {
163
+ return 0;
164
+ }
165
+ let dotProduct = 0;
166
+ let normA = 0;
167
+ let normB = 0;
168
+ for (let i = 0; i < a.length; i++) {
169
+ dotProduct += a[i] * b[i];
170
+ normA += a[i] * a[i];
171
+ normB += b[i] * b[i];
172
+ }
173
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
174
+ return denominator === 0 ? 0 : dotProduct / denominator;
175
+ }
176
+ /**
177
+ * 计算 MMR(最大边际相关性)多样性
178
+ */
179
+ mmr(queryEmbedding, candidates, options = {}) {
180
+ const { lambda = 0.7, topK = 10 } = options;
181
+ if (candidates.length === 0) {
182
+ return [];
183
+ }
184
+ const selected = [];
185
+ const remaining = [...candidates];
186
+ const selectedEmbeddings = [];
187
+ while (selected.length < topK && remaining.length > 0) {
188
+ let bestScore = -Infinity;
189
+ let bestIndex = -1;
190
+ for (let i = 0; i < remaining.length; i++) {
191
+ const candidate = remaining[i];
192
+ if (!candidate.embedding || candidate.embedding.length === 0) {
193
+ continue;
194
+ }
195
+ // 与查询的相似度
196
+ const querySimilarity = this.cosineSimilarity(queryEmbedding, candidate.embedding);
197
+ // 与已选择文档的最大相似度
198
+ let maxSelectedSimilarity = 0;
199
+ for (const selectedEmb of selectedEmbeddings) {
200
+ const sim = this.cosineSimilarity(candidate.embedding, selectedEmb);
201
+ maxSelectedSimilarity = Math.max(maxSelectedSimilarity, sim);
202
+ }
203
+ // MMR 分数
204
+ const mmrScore = lambda * querySimilarity - (1 - lambda) * maxSelectedSimilarity;
205
+ if (mmrScore > bestScore) {
206
+ bestScore = mmrScore;
207
+ bestIndex = i;
208
+ }
209
+ }
210
+ if (bestIndex >= 0) {
211
+ const best = remaining.splice(bestIndex, 1)[0];
212
+ selected.push(best.id);
213
+ if (best.embedding) {
214
+ selectedEmbeddings.push(best.embedding);
215
+ }
216
+ }
217
+ else {
218
+ break;
219
+ }
220
+ }
221
+ return selected;
222
+ }
223
+ // ============================================================================
224
+ // Private Methods
225
+ // ============================================================================
226
+ buildUrl(path) {
227
+ const baseUrl = this.config.baseUrl.endsWith('/')
228
+ ? this.config.baseUrl.slice(0, -1)
229
+ : this.config.baseUrl;
230
+ const normalizedPath = path.startsWith('/') ? path : `/${path}`;
231
+ return `${baseUrl}${normalizedPath}`;
232
+ }
233
+ buildHeaders() {
234
+ return {
235
+ 'Content-Type': 'application/json',
236
+ Authorization: `Bearer ${this.config.apiKey}`,
237
+ };
238
+ }
239
+ addPrefix(text, prefix) {
240
+ if (!prefix || text.startsWith(prefix)) {
241
+ return text;
242
+ }
243
+ return `${prefix}${text}`;
244
+ }
245
+ };
246
+ exports.EmbeddingService = EmbeddingService;
247
+ exports.EmbeddingService = EmbeddingService = __decorate([
248
+ (0, common_1.Injectable)(),
249
+ __param(0, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
250
+ __metadata("design:paramtypes", [winston_1.Logger,
251
+ config_1.ConfigService,
252
+ axios_1.HttpService])
253
+ ], EmbeddingService);
254
+ //# sourceMappingURL=embedding.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.service.js","sourceRoot":"","sources":["../src/embedding.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,2CAAkE;AAClE,2CAA+C;AAC/C,+CAAuD;AACvD,qCAAiC;AACjC,yCAA4C;AAC5C,+BAAsD;AACtD,qDAAmD;AAK5C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAIyB;IACjC;IACA;IALX,MAAM,CAAkB;IAEhC,YACoD,MAAc,EAC/C,aAA4B,EAC5B,WAAwB;QAFS,WAAM,GAAN,MAAM,CAAQ;QAC/C,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;IACxC,CAAC;IAEJ,YAAY;QACV,MAAM,UAAU,GAAG,IAAA,4BAAa,GAAE,CAAC;QACnC,MAAM,aAAa,GAAG,UAAU,EAAE,SAErB,CAAC;QAEd,8CAA8C;QAC9C,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EACL,aAAa,EAAE,OAAO;gBACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,oBAAoB,EACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,iBAAiB,EACjB,2BAA2B,CAC5B,CACF;YACH,MAAM,EACJ,aAAa,EAAE,MAAM;gBACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,mBAAmB,EACnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,gBAAgB,CAAC,CACjD;YACH,KAAK,EACH,aAAa,EAAE,KAAK;gBACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,iBAAiB,EACjB,wBAAwB,CACzB;YACH,UAAU,EACR,aAAa,EAAE,UAAU;gBACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,sBAAsB,CAAC;YACxD,SAAS,EACP,aAAa,EAAE,SAAS;gBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,sBAAsB,EAAE,KAAK,CAAC;YAC/D,WAAW,EACT,aAAa,EAAE,WAAW;gBAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,wBAAwB,EAAE,QAAQ,CAAC;YACpE,cAAc,EACZ,aAAa,EAAE,cAAc;gBAC7B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAS,2BAA2B,EAAE,UAAU,CAAC;SAC1E,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB;YAClE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SACnC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,aAAa;IACb,+EAA+E;IAE/E;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gEAAgE,CACjE,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpC,QAAQ;QACR,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAc,EACnC,IAAI,CAAC,WAAW;iBACb,IAAI,CAGH,GAAG,EACH;gBACE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,KAAK,EAAE,UAAU;gBACjB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;oBACxB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;oBACxC,CAAC,CAAC,EAAE,CAAC;aACR,EACD,EAAE,OAAO,EAAE,CACZ;iBACA,IAAI,CACH,IAAA,cAAO,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAC9B,IAAA,YAAK,EAAC;gBACJ,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,GAAG;aACX,CAAC,CACH,CACJ,CAAC;YAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YAEvC,aAAa;YACb,MAAM,gBAAgB,GAAG,IAAI;iBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;iBAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAEvC,wBAAwB;YACxB,MAAM,MAAM,GAAe,EAAE,CAAC;YAC9B,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC/C,SAAS,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;gBACpD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;gBAChD,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;gBAC7D,KAAK,EAAE,YAAY;gBACnB,UAAU,EAAE,KAAK,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,eAAe;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,SAAmB;QACtC,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACzC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAChD,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,CAAW,EAAE,CAAW;QACvC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,GAAG,CACD,cAAwB,EACxB,UAAuD,EACvD,UAA8C,EAAE;QAEhD,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAClC,MAAM,kBAAkB,GAAe,EAAE,CAAC;QAE1C,OAAO,QAAQ,CAAC,MAAM,GAAG,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,SAAS,GAAG,CAAC,QAAQ,CAAC;YAC1B,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;YAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7D,SAAS;gBACX,CAAC;gBAED,UAAU;gBACV,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAC3C,cAAc,EACd,SAAS,CAAC,SAAS,CACpB,CAAC;gBAEF,eAAe;gBACf,IAAI,qBAAqB,GAAG,CAAC,CAAC;gBAC9B,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE,CAAC;oBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACpE,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBAC/D,CAAC;gBAED,SAAS;gBACT,MAAM,QAAQ,GACZ,MAAM,GAAG,eAAe,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,qBAAqB,CAAC;gBAElE,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;oBACzB,SAAS,GAAG,QAAQ,CAAC;oBACrB,SAAS,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAEvE,QAAQ,CAAC,IAAY;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACxB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAChE,OAAO,GAAG,OAAO,GAAG,cAAc,EAAE,CAAC;IACvC,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;SAC9C,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,IAAY,EAAE,MAAc;QAC5C,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;IAC5B,CAAC;CACF,CAAA;AAvSY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,sCAAuB,CAAC,CAAA;qCAA0B,gBAAM;QAChC,sBAAa;QACf,mBAAW;GANhC,gBAAgB,CAuS5B"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Vector 模块导出
3
+ */
4
+ export { VectorModule } from './vector.module';
5
+ export * from './vikingdb-client.service';
6
+ export * from './embedding.service';
7
+ export * from './knowledge-base-vikingdb.client';
8
+ export * from './vikingdb.types';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.VectorModule = void 0;
18
+ /**
19
+ * Vector 模块导出
20
+ */
21
+ var vector_module_1 = require("./vector.module");
22
+ Object.defineProperty(exports, "VectorModule", { enumerable: true, get: function () { return vector_module_1.VectorModule; } });
23
+ __exportStar(require("./vikingdb-client.service"), exports);
24
+ __exportStar(require("./embedding.service"), exports);
25
+ __exportStar(require("./knowledge-base-vikingdb.client"), exports);
26
+ __exportStar(require("./vikingdb.types"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,4DAA0C;AAC1C,sDAAoC;AACpC,mEAAiD;AACjD,mDAAiC"}
@@ -0,0 +1,29 @@
1
+ import type { Logger } from 'winston';
2
+ import { VikingDbClientService } from './vikingdb-client.service';
3
+ export interface KnowledgeBaseVectorDocument {
4
+ documentId: string;
5
+ knowledgeBaseId: string;
6
+ tenantId: string;
7
+ title: string;
8
+ content: string;
9
+ summary?: string | null;
10
+ sourceType: string;
11
+ sourceUrl?: string | null;
12
+ mimeType?: string | null;
13
+ fileExtension?: string | null;
14
+ embedding: number[];
15
+ }
16
+ export declare class KnowledgeBaseVikingdbClient {
17
+ private readonly vikingDbClientService;
18
+ private readonly logger;
19
+ constructor(vikingDbClientService: VikingDbClientService, logger: Logger);
20
+ upsertDocument(document: KnowledgeBaseVectorDocument): Promise<void>;
21
+ deleteDocument(documentId: string): Promise<void>;
22
+ /**
23
+ * 批量更新知识库下所有文档的 bots 字段
24
+ * @param documentIds 该知识库下所有文档的 ID 列表
25
+ * @param bots 关联的员工 ID 数组
26
+ */
27
+ updateKnowledgeBaseBots(documentIds: string[], bots: string[]): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=knowledge-base-vikingdb.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-base-vikingdb.client.d.ts","sourceRoot":"","sources":["../src/knowledge-base-vikingdb.client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qBACa,2BAA2B;IAGpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvC,qBAAqB,EAAE,qBAAqB,EACX,MAAM,EAAE,MAAM;IAG5D,cAAc,CAAC,QAAQ,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;;;OAIG;IACG,uBAAuB,CAC3B,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;CA2BjB"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.KnowledgeBaseVikingdbClient = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const nest_winston_1 = require("nest-winston");
18
+ const vikingdb_client_service_1 = require("./vikingdb-client.service");
19
+ let KnowledgeBaseVikingdbClient = class KnowledgeBaseVikingdbClient {
20
+ vikingDbClientService;
21
+ logger;
22
+ constructor(vikingDbClientService, logger) {
23
+ this.vikingDbClientService = vikingDbClientService;
24
+ this.logger = logger;
25
+ }
26
+ async upsertDocument(document) {
27
+ await this.vikingDbClientService.upsert([
28
+ {
29
+ id: document.documentId,
30
+ text: document.content,
31
+ summary: document.summary ?? undefined,
32
+ tags: [document.sourceType],
33
+ taskType: 'knowledge-base',
34
+ embedding: document.embedding,
35
+ scope: {
36
+ tenantId: document.tenantId,
37
+ scopeType: 'knowledge-base',
38
+ scopeId: document.knowledgeBaseId,
39
+ },
40
+ metadata: {
41
+ knowledgeBaseId: document.knowledgeBaseId,
42
+ documentId: document.documentId,
43
+ title: document.title,
44
+ sourceType: document.sourceType,
45
+ sourceUrl: document.sourceUrl ?? null,
46
+ mimeType: document.mimeType ?? null,
47
+ fileExtension: document.fileExtension ?? null,
48
+ },
49
+ },
50
+ ]);
51
+ }
52
+ async deleteDocument(documentId) {
53
+ await this.vikingDbClientService.delete({ ids: [documentId] });
54
+ }
55
+ /**
56
+ * 批量更新知识库下所有文档的 bots 字段
57
+ * @param documentIds 该知识库下所有文档的 ID 列表
58
+ * @param bots 关联的员工 ID 数组
59
+ */
60
+ async updateKnowledgeBaseBots(documentIds, bots) {
61
+ if (documentIds.length === 0) {
62
+ this.logger.info('[KnowledgeBaseVikingdbClient] No documents to update');
63
+ return;
64
+ }
65
+ this.logger.info('[KnowledgeBaseVikingdbClient] Updating bots for documents', {
66
+ documentCount: documentIds.length,
67
+ bots,
68
+ });
69
+ // 批量更新所有文档的 bots 字段
70
+ const updateDocs = documentIds.map((docId) => ({
71
+ id: docId,
72
+ bots,
73
+ }));
74
+ await this.vikingDbClientService.update(updateDocs);
75
+ this.logger.info('[KnowledgeBaseVikingdbClient] Update completed for documents', { count: documentIds.length });
76
+ }
77
+ };
78
+ exports.KnowledgeBaseVikingdbClient = KnowledgeBaseVikingdbClient;
79
+ exports.KnowledgeBaseVikingdbClient = KnowledgeBaseVikingdbClient = __decorate([
80
+ (0, common_1.Injectable)(),
81
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => vikingdb_client_service_1.VikingDbClientService))),
82
+ __param(1, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
83
+ __metadata("design:paramtypes", [vikingdb_client_service_1.VikingDbClientService, Function])
84
+ ], KnowledgeBaseVikingdbClient);
85
+ //# sourceMappingURL=knowledge-base-vikingdb.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-base-vikingdb.client.js","sourceRoot":"","sources":["../src/knowledge-base-vikingdb.client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,+CAAuD;AAEvD,uEAAkE;AAiB3D,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAGnB;IACiC;IAHpD,YAEmB,qBAA4C,EACX,MAAc;QAD/C,0BAAqB,GAArB,qBAAqB,CAAuB;QACX,WAAM,GAAN,MAAM,CAAQ;IAC/D,CAAC;IAEJ,KAAK,CAAC,cAAc,CAAC,QAAqC;QACxD,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;YACtC;gBACE,EAAE,EAAE,QAAQ,CAAC,UAAU;gBACvB,IAAI,EAAE,QAAQ,CAAC,OAAO;gBACtB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS;gBACtC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC3B,QAAQ,EAAE,gBAAgB;gBAC1B,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,KAAK,EAAE;oBACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,SAAS,EAAE,gBAAgB;oBAC3B,OAAO,EAAE,QAAQ,CAAC,eAAe;iBAClC;gBACD,QAAQ,EAAE;oBACR,eAAe,EAAE,QAAQ,CAAC,eAAe;oBACzC,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;oBACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;oBACnC,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;iBAC9C;aACK;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAC3B,WAAqB,EACrB,IAAc;QAEd,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,2DAA2D,EAC3D;YACE,aAAa,EAAE,WAAW,CAAC,MAAM;YACjC,IAAI;SACL,CACF,CAAC;QAEF,oBAAoB;QACpB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,EAAE,EAAE,KAAK;YACT,IAAI;SACL,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,8DAA8D,EAC9D,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AAzEY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,+CAAqB,CAAC,CAAC,CAAA;IAE/C,WAAA,IAAA,eAAM,EAAC,sCAAuB,CAAC,CAAA;qCADQ,+CAAqB;GAHpD,2BAA2B,CAyEvC"}
@@ -0,0 +1,3 @@
1
+ export declare class VectorModule {
2
+ }
3
+ //# sourceMappingURL=vector.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.module.d.ts","sourceRoot":"","sources":["../src/vector.module.ts"],"names":[],"mappings":"AAWA,qBAmBa,YAAY;CAAG"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.VectorModule = void 0;
10
+ /**
11
+ * Vector Module
12
+ * 向量服务模块,包含 VikingDB 客户端和 Embedding 服务
13
+ */
14
+ const common_1 = require("@nestjs/common");
15
+ const axios_1 = require("@nestjs/axios");
16
+ const vikingdb_client_service_1 = require("./vikingdb-client.service");
17
+ const embedding_service_1 = require("./embedding.service");
18
+ const knowledge_base_vikingdb_client_1 = require("./knowledge-base-vikingdb.client");
19
+ const config_1 = require("@nestjs/config");
20
+ let VectorModule = class VectorModule {
21
+ };
22
+ exports.VectorModule = VectorModule;
23
+ exports.VectorModule = VectorModule = __decorate([
24
+ (0, common_1.Module)({
25
+ imports: [
26
+ config_1.ConfigModule,
27
+ axios_1.HttpModule.register({
28
+ timeout: 30000,
29
+ maxRedirects: 5,
30
+ }),
31
+ ],
32
+ providers: [
33
+ vikingdb_client_service_1.VikingDbClientService,
34
+ embedding_service_1.EmbeddingService,
35
+ knowledge_base_vikingdb_client_1.KnowledgeBaseVikingdbClient,
36
+ ],
37
+ exports: [
38
+ vikingdb_client_service_1.VikingDbClientService,
39
+ embedding_service_1.EmbeddingService,
40
+ knowledge_base_vikingdb_client_1.KnowledgeBaseVikingdbClient,
41
+ ],
42
+ })
43
+ ], VectorModule);
44
+ //# sourceMappingURL=vector.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.module.js","sourceRoot":"","sources":["../src/vector.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;GAGG;AACH,2CAAoD;AACpD,yCAA2C;AAC3C,uEAAkE;AAClE,2DAAuD;AACvD,qFAA+E;AAC/E,2CAA8C;AAqBvC,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAnBxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY;YACZ,kBAAU,CAAC,QAAQ,CAAC;gBAClB,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,CAAC;aAChB,CAAC;SACH;QACD,SAAS,EAAE;YACT,+CAAqB;YACrB,oCAAgB;YAChB,4DAA2B;SAC5B;QACD,OAAO,EAAE;YACP,+CAAqB;YACrB,oCAAgB;YAChB,4DAA2B;SAC5B;KACF,CAAC;GACW,YAAY,CAAG"}