@cmdoss/memwal-sdk 0.6.2 → 0.8.0
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/ARCHITECTURE.md +547 -547
- package/BENCHMARKS.md +238 -238
- package/README.md +310 -181
- package/dist/ai-sdk/tools.d.ts +2 -2
- package/dist/ai-sdk/tools.js +2 -2
- package/dist/client/ClientMemoryManager.js +2 -2
- package/dist/client/ClientMemoryManager.js.map +1 -1
- package/dist/client/PersonalDataWallet.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.d.ts +29 -1
- package/dist/client/SimplePDWClient.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.js +45 -13
- package/dist/client/SimplePDWClient.js.map +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
- package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
- package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/MemoryNamespace.js +272 -39
- package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
- package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js +62 -4
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
- package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
- package/dist/config/ConfigurationHelper.js +61 -61
- package/dist/config/defaults.js +2 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/graph/GraphService.js +21 -21
- package/dist/graph/GraphService.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
- package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.js +37 -15
- package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
- package/dist/infrastructure/seal/SealService.d.ts +13 -5
- package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
- package/dist/infrastructure/seal/SealService.js +36 -34
- package/dist/infrastructure/seal/SealService.js.map +1 -1
- package/dist/langchain/createPDWRAG.js +30 -30
- package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
- package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.js +44 -4
- package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
- package/dist/services/CapabilityService.d.ts.map +1 -1
- package/dist/services/CapabilityService.js +30 -14
- package/dist/services/CapabilityService.js.map +1 -1
- package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
- package/dist/services/CrossContextPermissionService.js +9 -7
- package/dist/services/CrossContextPermissionService.js.map +1 -1
- package/dist/services/EmbeddingService.d.ts +28 -1
- package/dist/services/EmbeddingService.d.ts.map +1 -1
- package/dist/services/EmbeddingService.js +54 -0
- package/dist/services/EmbeddingService.js.map +1 -1
- package/dist/services/EncryptionService.d.ts.map +1 -1
- package/dist/services/EncryptionService.js +6 -5
- package/dist/services/EncryptionService.js.map +1 -1
- package/dist/services/GeminiAIService.js +309 -309
- package/dist/services/IndexManager.d.ts +5 -1
- package/dist/services/IndexManager.d.ts.map +1 -1
- package/dist/services/IndexManager.js +17 -40
- package/dist/services/IndexManager.js.map +1 -1
- package/dist/services/QueryService.js +1 -1
- package/dist/services/QueryService.js.map +1 -1
- package/dist/services/StorageService.d.ts +11 -0
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.js +73 -10
- package/dist/services/StorageService.js.map +1 -1
- package/dist/services/TransactionService.d.ts +20 -0
- package/dist/services/TransactionService.d.ts.map +1 -1
- package/dist/services/TransactionService.js +43 -0
- package/dist/services/TransactionService.js.map +1 -1
- package/dist/services/ViewService.js +2 -2
- package/dist/services/ViewService.js.map +1 -1
- package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
- package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
- package/dist/services/storage/QuiltBatchManager.js +410 -20
- package/dist/services/storage/QuiltBatchManager.js.map +1 -1
- package/dist/services/storage/index.d.ts +1 -1
- package/dist/services/storage/index.d.ts.map +1 -1
- package/dist/services/storage/index.js.map +1 -1
- package/dist/utils/LRUCache.d.ts +106 -0
- package/dist/utils/LRUCache.d.ts.map +1 -0
- package/dist/utils/LRUCache.js +281 -0
- package/dist/utils/LRUCache.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/memoryIndexOnChain.d.ts +212 -0
- package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
- package/dist/utils/memoryIndexOnChain.js +312 -0
- package/dist/utils/memoryIndexOnChain.js.map +1 -0
- package/dist/utils/rebuildIndexNode.d.ts +29 -0
- package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
- package/dist/utils/rebuildIndexNode.js +366 -98
- package/dist/utils/rebuildIndexNode.js.map +1 -1
- package/dist/vector/HnswWasmService.d.ts +20 -5
- package/dist/vector/HnswWasmService.d.ts.map +1 -1
- package/dist/vector/HnswWasmService.js +73 -40
- package/dist/vector/HnswWasmService.js.map +1 -1
- package/dist/vector/IHnswService.d.ts +10 -1
- package/dist/vector/IHnswService.d.ts.map +1 -1
- package/dist/vector/IHnswService.js.map +1 -1
- package/dist/vector/NodeHnswService.d.ts +16 -0
- package/dist/vector/NodeHnswService.d.ts.map +1 -1
- package/dist/vector/NodeHnswService.js +84 -5
- package/dist/vector/NodeHnswService.js.map +1 -1
- package/dist/vector/createHnswService.d.ts +1 -1
- package/dist/vector/createHnswService.js +1 -1
- package/dist/vector/index.d.ts +1 -1
- package/dist/vector/index.js +1 -1
- package/package.json +157 -157
- package/src/access/PermissionService.ts +635 -635
- package/src/aggregation/AggregationService.ts +389 -389
- package/src/ai-sdk/PDWVectorStore.ts +715 -715
- package/src/ai-sdk/index.ts +65 -65
- package/src/ai-sdk/tools.ts +460 -460
- package/src/ai-sdk/types.ts +404 -404
- package/src/batch/BatchManager.ts +597 -597
- package/src/batch/BatchingService.ts +429 -429
- package/src/batch/MemoryProcessingCache.ts +492 -492
- package/src/batch/index.ts +30 -30
- package/src/browser.ts +200 -200
- package/src/client/ClientMemoryManager.ts +987 -987
- package/src/client/PersonalDataWallet.ts +345 -345
- package/src/client/SimplePDWClient.ts +1289 -1222
- package/src/client/factory.ts +154 -154
- package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
- package/src/client/namespaces/BatchNamespace.ts +356 -356
- package/src/client/namespaces/CacheNamespace.ts +123 -123
- package/src/client/namespaces/CapabilityNamespace.ts +217 -217
- package/src/client/namespaces/ClassifyNamespace.ts +169 -169
- package/src/client/namespaces/ContextNamespace.ts +297 -297
- package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
- package/src/client/namespaces/EncryptionNamespace.ts +221 -221
- package/src/client/namespaces/GraphNamespace.ts +468 -468
- package/src/client/namespaces/IndexNamespace.ts +361 -361
- package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
- package/src/client/namespaces/PermissionsNamespace.ts +254 -254
- package/src/client/namespaces/PipelineNamespace.ts +220 -220
- package/src/client/namespaces/SearchNamespace.ts +1049 -1049
- package/src/client/namespaces/StorageNamespace.ts +458 -458
- package/src/client/namespaces/TxNamespace.ts +260 -260
- package/src/client/namespaces/WalletNamespace.ts +243 -243
- package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
- package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
- package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
- package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
- package/src/client/namespaces/consolidated/index.ts +39 -39
- package/src/client/signers/KeypairSigner.ts +108 -108
- package/src/client/signers/UnifiedSigner.ts +110 -110
- package/src/client/signers/WalletAdapterSigner.ts +159 -159
- package/src/client/signers/index.ts +26 -26
- package/src/config/ConfigurationHelper.ts +412 -412
- package/src/config/defaults.ts +51 -51
- package/src/config/index.ts +8 -8
- package/src/config/validation.ts +70 -70
- package/src/core/index.ts +14 -14
- package/src/core/interfaces/IService.ts +307 -307
- package/src/core/interfaces/index.ts +8 -8
- package/src/core/types/capability.ts +297 -297
- package/src/core/types/index.ts +870 -870
- package/src/core/types/wallet.ts +270 -270
- package/src/core/types.ts +9 -9
- package/src/core/wallet.ts +222 -222
- package/src/embedding/index.ts +19 -19
- package/src/embedding/types.ts +357 -357
- package/src/errors/index.ts +602 -602
- package/src/errors/recovery.ts +461 -461
- package/src/errors/validation.ts +567 -567
- package/src/generated/pdw/capability.ts +319 -319
- package/src/graph/GraphService.ts +887 -887
- package/src/graph/KnowledgeGraphManager.ts +728 -728
- package/src/graph/index.ts +25 -25
- package/src/index.ts +498 -474
- package/src/infrastructure/index.ts +22 -22
- package/src/infrastructure/seal/EncryptionService.ts +628 -603
- package/src/infrastructure/seal/SealService.ts +613 -615
- package/src/infrastructure/seal/index.ts +9 -9
- package/src/infrastructure/sui/BlockchainManager.ts +627 -627
- package/src/infrastructure/sui/SuiService.ts +888 -888
- package/src/infrastructure/sui/index.ts +9 -9
- package/src/infrastructure/walrus/StorageManager.ts +604 -604
- package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
- package/src/infrastructure/walrus/index.ts +9 -9
- package/src/langchain/PDWEmbeddings.ts +145 -145
- package/src/langchain/PDWVectorStore.ts +456 -456
- package/src/langchain/createPDWRAG.ts +303 -303
- package/src/langchain/index.ts +47 -47
- package/src/permissions/ConsentRepository.browser.ts +249 -249
- package/src/permissions/ConsentRepository.ts +364 -364
- package/src/pipeline/MemoryPipeline.ts +862 -862
- package/src/pipeline/PipelineManager.ts +683 -683
- package/src/pipeline/index.ts +26 -26
- package/src/retrieval/AdvancedSearchService.ts +629 -629
- package/src/retrieval/MemoryAnalyticsService.ts +711 -711
- package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
- package/src/retrieval/MemoryRetrievalService.ts +904 -830
- package/src/retrieval/index.ts +42 -42
- package/src/services/BatchService.ts +352 -352
- package/src/services/CapabilityService.ts +464 -448
- package/src/services/ClassifierService.ts +465 -465
- package/src/services/CrossContextPermissionService.ts +486 -484
- package/src/services/EmbeddingService.ts +771 -706
- package/src/services/EncryptionService.ts +712 -711
- package/src/services/GeminiAIService.ts +753 -753
- package/src/services/IndexManager.ts +977 -1004
- package/src/services/MemoryIndexService.ts +1003 -1003
- package/src/services/MemoryService.ts +369 -369
- package/src/services/QueryService.ts +890 -890
- package/src/services/StorageService.ts +1182 -1111
- package/src/services/TransactionService.ts +838 -790
- package/src/services/VectorService.ts +462 -462
- package/src/services/ViewService.ts +484 -484
- package/src/services/index.ts +25 -25
- package/src/services/storage/BlobAttributesManager.ts +333 -333
- package/src/services/storage/KnowledgeGraphManager.ts +425 -425
- package/src/services/storage/MemorySearchManager.ts +387 -387
- package/src/services/storage/QuiltBatchManager.ts +1130 -660
- package/src/services/storage/WalrusMetadataManager.ts +268 -268
- package/src/services/storage/WalrusStorageManager.ts +287 -287
- package/src/services/storage/index.ts +57 -52
- package/src/types/index.ts +13 -13
- package/src/utils/LRUCache.ts +378 -0
- package/src/utils/index.ts +76 -68
- package/src/utils/memoryIndexOnChain.ts +507 -0
- package/src/utils/rebuildIndex.ts +290 -290
- package/src/utils/rebuildIndexNode.ts +771 -424
- package/src/vector/BrowserHnswIndexService.ts +758 -758
- package/src/vector/HnswWasmService.ts +731 -679
- package/src/vector/IHnswService.ts +233 -224
- package/src/vector/NodeHnswService.ts +833 -735
- package/src/vector/VectorManager.ts +478 -478
- package/src/vector/createHnswService.ts +135 -135
- package/src/vector/index.ts +56 -56
- package/src/wallet/ContextWalletService.ts +656 -656
- package/src/wallet/MainWalletService.ts +317 -317
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Walrus Storage Infrastructure
|
|
3
|
-
*
|
|
4
|
-
* Decentralized storage integration using Walrus protocol
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export { WalrusStorageService } from './WalrusStorageService';
|
|
8
|
-
export { StorageManager } from './StorageManager';
|
|
9
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Walrus Storage Infrastructure
|
|
3
|
+
*
|
|
4
|
+
* Decentralized storage integration using Walrus protocol
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { WalrusStorageService } from './WalrusStorageService';
|
|
8
|
+
export { StorageManager } from './StorageManager';
|
|
9
|
+
|
|
@@ -1,145 +1,145 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PDWEmbeddings - LangChain Embeddings adapter for Personal Data Wallet
|
|
3
|
-
*
|
|
4
|
-
* Integrates PDW's EmbeddingService (Google Gemini) with LangChain's Embeddings interface.
|
|
5
|
-
* Enables seamless use of PDW embeddings in any LangChain workflow.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { PDWEmbeddings } from 'personal-data-wallet-sdk/langchain';
|
|
10
|
-
*
|
|
11
|
-
* const embeddings = new PDWEmbeddings({
|
|
12
|
-
* geminiApiKey: process.env.GEMINI_API_KEY
|
|
13
|
-
* });
|
|
14
|
-
*
|
|
15
|
-
* // Use with any LangChain VectorStore
|
|
16
|
-
* const vectorStore = new SomeVectorStore(embeddings, config);
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import { Embeddings, EmbeddingsParams } from '@langchain/core/embeddings';
|
|
21
|
-
import { EmbeddingService } from '../services/EmbeddingService';
|
|
22
|
-
import type { EmbeddingConfig } from '../services/EmbeddingService';
|
|
23
|
-
|
|
24
|
-
export interface PDWEmbeddingsParams extends EmbeddingsParams {
|
|
25
|
-
/**
|
|
26
|
-
* Google Gemini API key for embedding generation
|
|
27
|
-
* Get your key from: https://aistudio.google.com/app/apikey
|
|
28
|
-
*/
|
|
29
|
-
geminiApiKey: string;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Embedding model to use
|
|
33
|
-
* @default 'text-embedding-004'
|
|
34
|
-
*/
|
|
35
|
-
model?: string;
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Embedding dimensions
|
|
39
|
-
* @default 3072
|
|
40
|
-
*/
|
|
41
|
-
dimensions?: number;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Maximum requests per minute (rate limiting)
|
|
45
|
-
* @default 1500
|
|
46
|
-
*/
|
|
47
|
-
requestsPerMinute?: number;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* LangChain Embeddings implementation using Personal Data Wallet's EmbeddingService
|
|
52
|
-
*
|
|
53
|
-
* This adapter wraps PDW's existing EmbeddingService to provide a standard
|
|
54
|
-
* LangChain Embeddings interface, enabling drop-in compatibility with the
|
|
55
|
-
* entire LangChain ecosystem.
|
|
56
|
-
*/
|
|
57
|
-
export class PDWEmbeddings extends Embeddings {
|
|
58
|
-
private embeddingService: EmbeddingService;
|
|
59
|
-
private readonly model: string;
|
|
60
|
-
private readonly dimensions: number;
|
|
61
|
-
|
|
62
|
-
constructor(params: PDWEmbeddingsParams) {
|
|
63
|
-
super(params);
|
|
64
|
-
|
|
65
|
-
// Validate API key
|
|
66
|
-
if (!params.geminiApiKey) {
|
|
67
|
-
throw new Error(
|
|
68
|
-
'geminiApiKey is required for PDWEmbeddings. ' +
|
|
69
|
-
'Get your API key from: https://aistudio.google.com/app/apikey'
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
this.model = params.model || 'text-embedding-004';
|
|
74
|
-
this.dimensions = params.dimensions || 3072;
|
|
75
|
-
|
|
76
|
-
// Initialize PDW's EmbeddingService
|
|
77
|
-
const config: EmbeddingConfig = {
|
|
78
|
-
apiKey: params.geminiApiKey,
|
|
79
|
-
model: this.model,
|
|
80
|
-
dimensions: this.dimensions,
|
|
81
|
-
requestsPerMinute: params.requestsPerMinute || 1500,
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
this.embeddingService = new EmbeddingService(config);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Embed multiple documents (LangChain interface)
|
|
89
|
-
*
|
|
90
|
-
* @param texts - Array of document texts to embed
|
|
91
|
-
* @returns Promise resolving to array of embedding vectors
|
|
92
|
-
*/
|
|
93
|
-
async embedDocuments(texts: string[]): Promise<number[][]> {
|
|
94
|
-
try {
|
|
95
|
-
// Use batch embedding for efficiency
|
|
96
|
-
const result = await this.embeddingService.embedBatch(texts, {
|
|
97
|
-
type: 'content', // Documents are content, not queries
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
return result.vectors;
|
|
101
|
-
} catch (error) {
|
|
102
|
-
throw new Error(
|
|
103
|
-
`Failed to embed documents: ${error instanceof Error ? error.message : String(error)}`
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Embed a single query (LangChain interface)
|
|
110
|
-
*
|
|
111
|
-
* @param text - Query text to embed
|
|
112
|
-
* @returns Promise resolving to embedding vector
|
|
113
|
-
*/
|
|
114
|
-
async embedQuery(text: string): Promise<number[]> {
|
|
115
|
-
try {
|
|
116
|
-
// Use query-optimized embedding
|
|
117
|
-
const result = await this.embeddingService.embedText({
|
|
118
|
-
text,
|
|
119
|
-
type: 'query', // Queries get different optimization
|
|
120
|
-
taskType: 'RETRIEVAL_QUERY',
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
return result.vector;
|
|
124
|
-
} catch (error) {
|
|
125
|
-
throw new Error(
|
|
126
|
-
`Failed to embed query: ${error instanceof Error ? error.message : String(error)}`
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Get embedding model information
|
|
133
|
-
*/
|
|
134
|
-
getModelInfo(): {
|
|
135
|
-
model: string;
|
|
136
|
-
dimensions: number;
|
|
137
|
-
provider: string;
|
|
138
|
-
} {
|
|
139
|
-
return {
|
|
140
|
-
model: this.model,
|
|
141
|
-
dimensions: this.dimensions,
|
|
142
|
-
provider: 'Google Gemini',
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* PDWEmbeddings - LangChain Embeddings adapter for Personal Data Wallet
|
|
3
|
+
*
|
|
4
|
+
* Integrates PDW's EmbeddingService (Google Gemini) with LangChain's Embeddings interface.
|
|
5
|
+
* Enables seamless use of PDW embeddings in any LangChain workflow.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { PDWEmbeddings } from 'personal-data-wallet-sdk/langchain';
|
|
10
|
+
*
|
|
11
|
+
* const embeddings = new PDWEmbeddings({
|
|
12
|
+
* geminiApiKey: process.env.GEMINI_API_KEY
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* // Use with any LangChain VectorStore
|
|
16
|
+
* const vectorStore = new SomeVectorStore(embeddings, config);
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { Embeddings, EmbeddingsParams } from '@langchain/core/embeddings';
|
|
21
|
+
import { EmbeddingService } from '../services/EmbeddingService';
|
|
22
|
+
import type { EmbeddingConfig } from '../services/EmbeddingService';
|
|
23
|
+
|
|
24
|
+
export interface PDWEmbeddingsParams extends EmbeddingsParams {
|
|
25
|
+
/**
|
|
26
|
+
* Google Gemini API key for embedding generation
|
|
27
|
+
* Get your key from: https://aistudio.google.com/app/apikey
|
|
28
|
+
*/
|
|
29
|
+
geminiApiKey: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Embedding model to use
|
|
33
|
+
* @default 'text-embedding-004'
|
|
34
|
+
*/
|
|
35
|
+
model?: string;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Embedding dimensions
|
|
39
|
+
* @default 3072
|
|
40
|
+
*/
|
|
41
|
+
dimensions?: number;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Maximum requests per minute (rate limiting)
|
|
45
|
+
* @default 1500
|
|
46
|
+
*/
|
|
47
|
+
requestsPerMinute?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* LangChain Embeddings implementation using Personal Data Wallet's EmbeddingService
|
|
52
|
+
*
|
|
53
|
+
* This adapter wraps PDW's existing EmbeddingService to provide a standard
|
|
54
|
+
* LangChain Embeddings interface, enabling drop-in compatibility with the
|
|
55
|
+
* entire LangChain ecosystem.
|
|
56
|
+
*/
|
|
57
|
+
export class PDWEmbeddings extends Embeddings {
|
|
58
|
+
private embeddingService: EmbeddingService;
|
|
59
|
+
private readonly model: string;
|
|
60
|
+
private readonly dimensions: number;
|
|
61
|
+
|
|
62
|
+
constructor(params: PDWEmbeddingsParams) {
|
|
63
|
+
super(params);
|
|
64
|
+
|
|
65
|
+
// Validate API key
|
|
66
|
+
if (!params.geminiApiKey) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
'geminiApiKey is required for PDWEmbeddings. ' +
|
|
69
|
+
'Get your API key from: https://aistudio.google.com/app/apikey'
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
this.model = params.model || 'text-embedding-004';
|
|
74
|
+
this.dimensions = params.dimensions || 3072;
|
|
75
|
+
|
|
76
|
+
// Initialize PDW's EmbeddingService
|
|
77
|
+
const config: EmbeddingConfig = {
|
|
78
|
+
apiKey: params.geminiApiKey,
|
|
79
|
+
model: this.model,
|
|
80
|
+
dimensions: this.dimensions,
|
|
81
|
+
requestsPerMinute: params.requestsPerMinute || 1500,
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
this.embeddingService = new EmbeddingService(config);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Embed multiple documents (LangChain interface)
|
|
89
|
+
*
|
|
90
|
+
* @param texts - Array of document texts to embed
|
|
91
|
+
* @returns Promise resolving to array of embedding vectors
|
|
92
|
+
*/
|
|
93
|
+
async embedDocuments(texts: string[]): Promise<number[][]> {
|
|
94
|
+
try {
|
|
95
|
+
// Use batch embedding for efficiency
|
|
96
|
+
const result = await this.embeddingService.embedBatch(texts, {
|
|
97
|
+
type: 'content', // Documents are content, not queries
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
return result.vectors;
|
|
101
|
+
} catch (error) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Failed to embed documents: ${error instanceof Error ? error.message : String(error)}`
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Embed a single query (LangChain interface)
|
|
110
|
+
*
|
|
111
|
+
* @param text - Query text to embed
|
|
112
|
+
* @returns Promise resolving to embedding vector
|
|
113
|
+
*/
|
|
114
|
+
async embedQuery(text: string): Promise<number[]> {
|
|
115
|
+
try {
|
|
116
|
+
// Use query-optimized embedding
|
|
117
|
+
const result = await this.embeddingService.embedText({
|
|
118
|
+
text,
|
|
119
|
+
type: 'query', // Queries get different optimization
|
|
120
|
+
taskType: 'RETRIEVAL_QUERY',
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
return result.vector;
|
|
124
|
+
} catch (error) {
|
|
125
|
+
throw new Error(
|
|
126
|
+
`Failed to embed query: ${error instanceof Error ? error.message : String(error)}`
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Get embedding model information
|
|
133
|
+
*/
|
|
134
|
+
getModelInfo(): {
|
|
135
|
+
model: string;
|
|
136
|
+
dimensions: number;
|
|
137
|
+
provider: string;
|
|
138
|
+
} {
|
|
139
|
+
return {
|
|
140
|
+
model: this.model,
|
|
141
|
+
dimensions: this.dimensions,
|
|
142
|
+
provider: 'Google Gemini',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|