agentfootprint 9.2.0 → 9.3.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/dist/adapters/memory/pgVector.js +731 -0
- package/dist/adapters/memory/pgVector.js.map +1 -0
- package/dist/adapters/memory/s3Vectors.js +628 -0
- package/dist/adapters/memory/s3Vectors.js.map +1 -0
- package/dist/adapters/memory/sqliteVector.js +16 -79
- package/dist/adapters/memory/sqliteVector.js.map +1 -1
- package/dist/embedders/index.js +240 -76
- package/dist/embedders/index.js.map +1 -1
- package/dist/esm/adapters/memory/pgVector.d.ts +243 -0
- package/dist/esm/adapters/memory/pgVector.js +726 -0
- package/dist/esm/adapters/memory/pgVector.js.map +1 -0
- package/dist/esm/adapters/memory/s3Vectors.d.ts +208 -0
- package/dist/esm/adapters/memory/s3Vectors.js +624 -0
- package/dist/esm/adapters/memory/s3Vectors.js.map +1 -0
- package/dist/esm/adapters/memory/sqliteVector.d.ts +5 -27
- package/dist/esm/adapters/memory/sqliteVector.js +10 -73
- package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
- package/dist/esm/embedders/index.d.ts +99 -19
- package/dist/esm/embedders/index.js +240 -76
- package/dist/esm/embedders/index.js.map +1 -1
- package/dist/esm/lib/embedderMismatch.d.ts +67 -0
- package/dist/esm/lib/embedderMismatch.js +96 -0
- package/dist/esm/lib/embedderMismatch.js.map +1 -0
- package/dist/esm/lib/rag/defineRAG.d.ts +28 -6
- package/dist/esm/lib/rag/defineRAG.js +39 -5
- package/dist/esm/lib/rag/defineRAG.js.map +1 -1
- package/dist/esm/memory/define.js +31 -1
- package/dist/esm/memory/define.js.map +1 -1
- package/dist/esm/memory/define.types.d.ts +13 -2
- package/dist/esm/memory/define.types.js.map +1 -1
- package/dist/esm/memory/embedding/loadRelevant.d.ts +10 -2
- package/dist/esm/memory/embedding/loadRelevant.js +36 -18
- package/dist/esm/memory/embedding/loadRelevant.js.map +1 -1
- package/dist/esm/memory/pipeline/semantic.d.ts +13 -2
- package/dist/esm/memory/pipeline/semantic.js +11 -5
- package/dist/esm/memory/pipeline/semantic.js.map +1 -1
- package/dist/esm/memory/store/capability.d.ts +25 -6
- package/dist/esm/memory/store/capability.js +68 -3
- package/dist/esm/memory/store/capability.js.map +1 -1
- package/dist/esm/memory/store/index.d.ts +1 -0
- package/dist/esm/memory/store/index.js +4 -0
- package/dist/esm/memory/store/index.js.map +1 -1
- package/dist/esm/memory/store/types.d.ts +40 -0
- package/dist/esm/memory-providers.d.ts +7 -4
- package/dist/esm/memory-providers.js +18 -4
- package/dist/esm/memory-providers.js.map +1 -1
- package/dist/lib/embedderMismatch.js +103 -0
- package/dist/lib/embedderMismatch.js.map +1 -0
- package/dist/lib/rag/defineRAG.js +39 -5
- package/dist/lib/rag/defineRAG.js.map +1 -1
- package/dist/memory/define.js +31 -1
- package/dist/memory/define.js.map +1 -1
- package/dist/memory/define.types.js.map +1 -1
- package/dist/memory/embedding/loadRelevant.js +36 -18
- package/dist/memory/embedding/loadRelevant.js.map +1 -1
- package/dist/memory/pipeline/semantic.js +11 -5
- package/dist/memory/pipeline/semantic.js.map +1 -1
- package/dist/memory/store/capability.js +70 -4
- package/dist/memory/store/capability.js.map +1 -1
- package/dist/memory/store/index.js +7 -1
- package/dist/memory/store/index.js.map +1 -1
- package/dist/memory-providers.js +22 -5
- package/dist/memory-providers.js.map +1 -1
- package/dist/types/adapters/memory/pgVector.d.ts +244 -0
- package/dist/types/adapters/memory/pgVector.d.ts.map +1 -0
- package/dist/types/adapters/memory/s3Vectors.d.ts +209 -0
- package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -0
- package/dist/types/adapters/memory/sqliteVector.d.ts +5 -27
- package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
- package/dist/types/embedders/index.d.ts +99 -19
- package/dist/types/embedders/index.d.ts.map +1 -1
- package/dist/types/lib/embedderMismatch.d.ts +68 -0
- package/dist/types/lib/embedderMismatch.d.ts.map +1 -0
- package/dist/types/lib/rag/defineRAG.d.ts +28 -6
- package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
- package/dist/types/memory/define.d.ts.map +1 -1
- package/dist/types/memory/define.types.d.ts +13 -2
- package/dist/types/memory/define.types.d.ts.map +1 -1
- package/dist/types/memory/embedding/loadRelevant.d.ts +10 -2
- package/dist/types/memory/embedding/loadRelevant.d.ts.map +1 -1
- package/dist/types/memory/pipeline/semantic.d.ts +13 -2
- package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
- package/dist/types/memory/store/capability.d.ts +25 -6
- package/dist/types/memory/store/capability.d.ts.map +1 -1
- package/dist/types/memory/store/index.d.ts +1 -0
- package/dist/types/memory/store/index.d.ts.map +1 -1
- package/dist/types/memory/store/types.d.ts +40 -0
- package/dist/types/memory/store/types.d.ts.map +1 -1
- package/dist/types/memory-providers.d.ts +7 -4
- package/dist/types/memory-providers.d.ts.map +1 -1
- package/package.json +9 -1
|
@@ -127,39 +127,99 @@ export function openaiEmbedder(options = {}) {
|
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
130
|
+
* The Bedrock embedding models this library knows by name — three facts each,
|
|
131
|
+
* in one table, because they arrive together and drift apart when they are
|
|
132
|
+
* kept apart (9.3.0; two Titan-only tables until then).
|
|
132
133
|
*
|
|
133
|
-
* Titan Text Embeddings **V2** is configurable — 1024
|
|
134
|
-
* Titan Embeddings G1 – Text (**V1**) has one size, 1536,
|
|
135
|
-
* parameter at all.
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
* `openaiEmbedder` applies, for the same reason: a store that trusts
|
|
134
|
+
* **Size.** Titan Text Embeddings **V2** is the configurable one — 1024
|
|
135
|
+
* (default), 512, 256. Titan Embeddings G1 – Text (**V1**) has one size, 1536,
|
|
136
|
+
* and no `dimensions` parameter at all. Cohere Embed v3 (English and
|
|
137
|
+
* Multilingual) returns 1024 and likewise takes no size. A model outside this
|
|
138
|
+
* table has a length this library cannot know and must state its own — the same
|
|
139
|
+
* rule `openaiEmbedder` applies, for the same reason: a store that trusts
|
|
139
140
|
* `.dimensions` and gets a different length back corrupts silently.
|
|
141
|
+
*
|
|
142
|
+
* **Window.** Both Titan text-embedding models accept **8,192 tokens** —
|
|
143
|
+
* sixteen times the on-device model the shipped default ceiling was measured
|
|
144
|
+
* on. Cohere Embed v3 accepts **512**, and that number is the whole argument
|
|
145
|
+
* for a per-MODEL ceiling rather than a per-VENDOR one: 512 tokens is ~2,000
|
|
146
|
+
* characters, so the same corpus that is embedded whole by Titan is silently
|
|
147
|
+
* truncated by Cohere at a quarter of the chunk. Declared, the indexers cut to
|
|
148
|
+
* fit; guessed from a sibling model, they would not.
|
|
149
|
+
*
|
|
150
|
+
* **Family.** The body shape (see {@link BedrockEmbeddingFamily}) — the fact
|
|
151
|
+
* whose absence made a Cohere model id constructible and unusable before 9.3.0.
|
|
140
152
|
*/
|
|
141
|
-
const
|
|
142
|
-
'amazon.titan-embed-text-v2:0':
|
|
143
|
-
|
|
153
|
+
const BEDROCK_EMBEDDING_MODELS = {
|
|
154
|
+
'amazon.titan-embed-text-v2:0': {
|
|
155
|
+
family: 'titan',
|
|
156
|
+
dimensions: 1024,
|
|
157
|
+
sizes: [1024, 512, 256],
|
|
158
|
+
maxInputTokens: 8192,
|
|
159
|
+
},
|
|
160
|
+
'amazon.titan-embed-text-v1': { family: 'titan', dimensions: 1536, maxInputTokens: 8192 },
|
|
161
|
+
'cohere.embed-english-v3': { family: 'cohere', dimensions: 1024, maxInputTokens: 512 },
|
|
162
|
+
'cohere.embed-multilingual-v3': { family: 'cohere', dimensions: 1024, maxInputTokens: 512 },
|
|
144
163
|
};
|
|
145
164
|
/**
|
|
146
|
-
*
|
|
165
|
+
* Titan V2's configurable sizes, kept as a constant because an id this table
|
|
166
|
+
* has never seen can still be recognisably Titan V2 (a variant released after
|
|
167
|
+
* this version) — and for such an id the size must still be SENT, or the model
|
|
168
|
+
* returns 1024 while `.dimensions` reports 512.
|
|
169
|
+
*/
|
|
170
|
+
const TITAN_V2_SIZES = [1024, 512, 256];
|
|
171
|
+
/**
|
|
172
|
+
* How many texts Cohere embeds in ONE `InvokeModel` call.
|
|
147
173
|
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
174
|
+
* **96**, the documented maximum, and the reason `embedBatch` is a real batch
|
|
175
|
+
* here and N calls for Titan: a 500-chunk corpus is 6 round-trips instead of
|
|
176
|
+
* 500. Chunked at exactly the documented number rather than under it, because
|
|
177
|
+
* unlike a byte limit this one is a count the caller can see — and a batch that
|
|
178
|
+
* silently used half the allowance would be a cost nobody asked for.
|
|
179
|
+
*/
|
|
180
|
+
const COHERE_MAX_TEXTS_PER_CALL = 96;
|
|
181
|
+
/**
|
|
182
|
+
* The body shape sent to a model id this library has never met.
|
|
153
183
|
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
184
|
+
* Titan's — because it is the shape EVERY release before 9.3.0 sent to every
|
|
185
|
+
* model, so an unknown id keeps doing exactly what it did. `family` is how a
|
|
186
|
+
* caller says otherwise, and the read-side refusal names that option.
|
|
157
187
|
*/
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
188
|
+
const DEFAULT_BEDROCK_FAMILY = 'titan';
|
|
189
|
+
/**
|
|
190
|
+
* The facts for a model id, including ids that WRAP a known one.
|
|
191
|
+
*
|
|
192
|
+
* A cross-region inference profile (`us.amazon.titan-embed-text-v2:0`) and an
|
|
193
|
+
* inference-profile ARN both END in the model id they route to, so containment
|
|
194
|
+
* resolves them exactly rather than by guess — and an id that names its model is
|
|
195
|
+
* not "unknown" just because it has a prefix. Before 9.3.0 those were refused
|
|
196
|
+
* as unknown models, which is why widening this is safe: it accepts what used
|
|
197
|
+
* to throw.
|
|
198
|
+
*/
|
|
199
|
+
function bedrockFactsFor(model) {
|
|
200
|
+
const exact = BEDROCK_EMBEDDING_MODELS[model];
|
|
201
|
+
if (exact)
|
|
202
|
+
return exact;
|
|
203
|
+
for (const [id, facts] of Object.entries(BEDROCK_EMBEDDING_MODELS)) {
|
|
204
|
+
if (model.includes(id))
|
|
205
|
+
return facts;
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* The family a model id NAMES, or `undefined` when it names none.
|
|
211
|
+
*
|
|
212
|
+
* Substring, not prefix: the id may be wrapped by a region prefix or an ARN.
|
|
213
|
+
* An id that says neither gets Titan's body — the shape every release before
|
|
214
|
+
* 9.3.0 sent to everything — and `family` is how you say otherwise.
|
|
215
|
+
*/
|
|
216
|
+
function inferBedrockFamily(model) {
|
|
217
|
+
if (model.includes('cohere.embed'))
|
|
218
|
+
return 'cohere';
|
|
219
|
+
if (model.includes('titan-embed'))
|
|
220
|
+
return 'titan';
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
163
223
|
/**
|
|
164
224
|
* Amazon Bedrock's hosted embeddings, through `InvokeModel`.
|
|
165
225
|
*
|
|
@@ -188,19 +248,31 @@ const TITAN_V2_SUPPORTED = [1024, 512, 256];
|
|
|
188
248
|
* q8 and an fp32 build of one model are near-identical spaces, and "near" is
|
|
189
249
|
* exactly the difference that surfaces as a mysteriously worse ranking.)
|
|
190
250
|
*
|
|
251
|
+
* ── One operation, two body shapes (9.3.0) ───────────────────────────────
|
|
252
|
+
* `InvokeModel` is a single API over vendor-specific JSON. Titan takes
|
|
253
|
+
* `{ inputText }` and answers `{ embedding }`; Cohere takes
|
|
254
|
+
* `{ texts, input_type }` and answers `{ embeddings }`, embeds up to
|
|
255
|
+
* {@link COHERE_MAX_TEXTS_PER_CALL} of them per call, and distinguishes a
|
|
256
|
+
* QUERY from a DOCUMENT. So the model id selects a FAMILY
|
|
257
|
+
* ({@link BedrockEmbeddingFamily}), and the family owns the request, the
|
|
258
|
+
* response and the batching. Before this, one shape was sent to everything —
|
|
259
|
+
* a Cohere id constructed fine and failed at the first embed.
|
|
260
|
+
*
|
|
191
261
|
* ── The input ceiling (9.1.0) ────────────────────────────────────────────
|
|
192
|
-
* `.maxInputChars`
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* the indexer's own default, which was measured on an on-device model
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
262
|
+
* `.maxInputChars` is per MODEL, from its documented token window converted at
|
|
263
|
+
* the stated {@link CHARS_PER_TOKEN} assumption of 4 characters per token:
|
|
264
|
+
* **32,000** for both Titan text-embedding models (8,192 tokens — sixteen
|
|
265
|
+
* times the indexer's own default, which was measured on an on-device model),
|
|
266
|
+
* and **2,000** for Cohere Embed v3 (512 tokens). Those two numbers are why the
|
|
267
|
+
* ceiling cannot be a per-vendor constant: the same 2,500-character chunk is
|
|
268
|
+
* read whole by Titan and truncated by Cohere. Dense text (code, tables, CJK)
|
|
269
|
+
* tokenises tighter than the assumption; pass an explicit `maxChunkChars` for
|
|
270
|
+
* such a corpus, and it wins over this number.
|
|
200
271
|
*
|
|
201
272
|
* @throws if `model` is unknown and `dimensions` was not supplied; if
|
|
202
|
-
* `dimensions` is
|
|
203
|
-
*
|
|
273
|
+
* `dimensions` is a size the model does not produce; if `family`
|
|
274
|
+
* contradicts a known model id; or if the SDK is missing and no
|
|
275
|
+
* `client` / `_client` / `_sdk` was passed.
|
|
204
276
|
*
|
|
205
277
|
* @example
|
|
206
278
|
* ```ts
|
|
@@ -211,24 +283,61 @@ const TITAN_V2_SUPPORTED = [1024, 512, 256];
|
|
|
211
283
|
* const embedder = bedrockEmbedder({ region: 'us-east-1', dimensions: 512 });
|
|
212
284
|
* await indexFolder('./docs', { to: sqliteVectorStore({ file: './corpus.db' }), embedder });
|
|
213
285
|
* ```
|
|
286
|
+
*
|
|
287
|
+
* @example A Cohere embedding model on the same runtime
|
|
288
|
+
* ```ts
|
|
289
|
+
* // Body shape, response field, batch size and 512-token window all follow
|
|
290
|
+
* // from the model id — nothing else changes at the call site.
|
|
291
|
+
* const embedder = bedrockEmbedder({ model: 'cohere.embed-english-v3' });
|
|
292
|
+
* ```
|
|
214
293
|
*/
|
|
215
294
|
export function bedrockEmbedder(options = {}) {
|
|
216
295
|
const model = options.model ?? 'amazon.titan-embed-text-v2:0';
|
|
217
|
-
const
|
|
296
|
+
const facts = bedrockFactsFor(model);
|
|
297
|
+
const named = inferBedrockFamily(model);
|
|
298
|
+
if (options.family !== undefined && facts !== undefined && options.family !== facts.family) {
|
|
299
|
+
throw new Error(`bedrockEmbedder: model '${model}' is a ${facts.family} model, and \`family: ` +
|
|
300
|
+
`'${options.family}'\` says otherwise. The two cannot both be right, and guessing ` +
|
|
301
|
+
`which line is the mistake would decide the request body — the one thing a wrong ` +
|
|
302
|
+
`answer here breaks at the first embed. Drop \`family\` (the model id already says ` +
|
|
303
|
+
`it), or name the model you meant.`);
|
|
304
|
+
}
|
|
305
|
+
// Explicit, then what the id names, then Titan — which is the body every
|
|
306
|
+
// release before 9.3.0 sent to every model, so an id this library has never
|
|
307
|
+
// met keeps behaving exactly as it did.
|
|
308
|
+
const family = options.family ?? facts?.family ?? named ?? DEFAULT_BEDROCK_FAMILY;
|
|
218
309
|
const requested = options.dimensions;
|
|
219
|
-
const dimensions = requested ??
|
|
310
|
+
const dimensions = requested ?? facts?.dimensions;
|
|
220
311
|
if (dimensions === undefined) {
|
|
221
312
|
throw new Error(`bedrockEmbedder: unknown model '${model}' — its vector length is not something this ` +
|
|
222
313
|
`library can know, and reporting a wrong .dimensions silently corrupts a vector store. ` +
|
|
223
314
|
`Pass { dimensions } with the length that model returns.`);
|
|
224
315
|
}
|
|
225
|
-
|
|
226
|
-
|
|
316
|
+
// A model this table has never seen can still be recognisably Titan V2, and
|
|
317
|
+
// for one of those the requested size must still be validated and SENT.
|
|
318
|
+
const sizes = facts?.sizes ??
|
|
319
|
+
(family === 'titan' && model.includes('titan-embed-text-v2') ? TITAN_V2_SIZES : undefined);
|
|
320
|
+
if (requested !== undefined && sizes !== undefined && !sizes.includes(requested)) {
|
|
321
|
+
throw new Error(`bedrockEmbedder: '${model}' returns ${sizes.join(', ')} ` +
|
|
227
322
|
`dimensions — received ${String(requested)}. Asking for a size the model does not ` +
|
|
228
323
|
`produce would store vectors of a length that disagrees with the .dimensions this ` +
|
|
229
324
|
`embedder reports.`);
|
|
230
325
|
}
|
|
231
|
-
|
|
326
|
+
if (requested !== undefined &&
|
|
327
|
+
sizes === undefined &&
|
|
328
|
+
facts !== undefined &&
|
|
329
|
+
requested !== facts.dimensions) {
|
|
330
|
+
throw new Error(`bedrockEmbedder: '${model}' returns ${facts.dimensions}-dimension vectors and takes no ` +
|
|
331
|
+
`size parameter — received ${String(requested)}, which would be reported as ` +
|
|
332
|
+
`.dimensions and never be the length that comes back. Drop \`dimensions\`: this ` +
|
|
333
|
+
`factory already knows this model's size.`);
|
|
334
|
+
}
|
|
335
|
+
const maxInputChars = options.maxInputChars ?? charsFor(facts?.maxInputTokens);
|
|
336
|
+
// Only a size the model actually TAKES is sent. Titan V2 defaults to 1024 on
|
|
337
|
+
// its own side, V1 and Cohere reject the field — so a caller who asked for
|
|
338
|
+
// nothing gets a request body identical to the one before this option
|
|
339
|
+
// existed.
|
|
340
|
+
const sendSize = requested !== undefined && sizes !== undefined;
|
|
232
341
|
let connection;
|
|
233
342
|
/**
|
|
234
343
|
* Resolve the client + command constructor, once, on first embed.
|
|
@@ -271,20 +380,26 @@ export function bedrockEmbedder(options = {}) {
|
|
|
271
380
|
return connection;
|
|
272
381
|
};
|
|
273
382
|
/**
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
*
|
|
383
|
+
* ONE `InvokeModel` round-trip, with the family's body on the way in and the
|
|
384
|
+
* family's field on the way out.
|
|
385
|
+
*
|
|
386
|
+
* Takes a slice of texts rather than one, because how many fit in a call is
|
|
387
|
+
* itself a family fact: Titan embeds a single `inputText`, Cohere embeds up
|
|
388
|
+
* to {@link COHERE_MAX_TEXTS_PER_CALL}. The callers below never have to know
|
|
389
|
+
* which — they hand over texts and get one vector per text back, in order.
|
|
278
390
|
*/
|
|
279
|
-
async function invoke(
|
|
391
|
+
async function invoke(texts, inputType, signal) {
|
|
280
392
|
const conn = connect();
|
|
281
|
-
const body = JSON.stringify(
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
393
|
+
const body = JSON.stringify(family === 'cohere'
|
|
394
|
+
? {
|
|
395
|
+
texts: [...texts],
|
|
396
|
+
// Required by the model, so there is no "unset" — see `inputType`.
|
|
397
|
+
input_type: options.inputType ?? inputType,
|
|
398
|
+
}
|
|
399
|
+
: {
|
|
400
|
+
inputText: texts[0],
|
|
401
|
+
...(sendSize && { dimensions: requested }),
|
|
402
|
+
});
|
|
288
403
|
const command = new conn.Command({
|
|
289
404
|
modelId: model,
|
|
290
405
|
contentType: 'application/json',
|
|
@@ -294,7 +409,29 @@ export function bedrockEmbedder(options = {}) {
|
|
|
294
409
|
const out = await (signal
|
|
295
410
|
? conn.client.send(command, { abortSignal: signal })
|
|
296
411
|
: conn.client.send(command));
|
|
297
|
-
return
|
|
412
|
+
return readEmbeddings(out, model, family, texts.length, facts === undefined);
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* The calls one batch becomes: Titan one text at a time, Cohere in chunks.
|
|
416
|
+
*
|
|
417
|
+
* Sequential rather than parallel either way: callers of the batch path are
|
|
418
|
+
* usually indexing a whole corpus, and `indexCorpus` already fans out over
|
|
419
|
+
* batches with its own bounded parallelism and retry. Racing N more requests
|
|
420
|
+
* inside one of those branches is how a corpus index meets a throttling
|
|
421
|
+
* error.
|
|
422
|
+
*
|
|
423
|
+
* The abort is checked between calls as well as passed into each one, so an
|
|
424
|
+
* aborted batch stops at the next boundary instead of embedding the rest of a
|
|
425
|
+
* corpus nobody is waiting for.
|
|
426
|
+
*/
|
|
427
|
+
async function invokeAll(texts, inputType, signal) {
|
|
428
|
+
const perCall = family === 'cohere' ? COHERE_MAX_TEXTS_PER_CALL : 1;
|
|
429
|
+
const out = [];
|
|
430
|
+
for (let i = 0; i < texts.length; i += perCall) {
|
|
431
|
+
signal?.throwIfAborted();
|
|
432
|
+
out.push(...(await invoke(texts.slice(i, i + perCall), inputType, signal)));
|
|
433
|
+
}
|
|
434
|
+
return out;
|
|
298
435
|
}
|
|
299
436
|
return {
|
|
300
437
|
dimensions,
|
|
@@ -304,24 +441,16 @@ export function bedrockEmbedder(options = {}) {
|
|
|
304
441
|
// than one it cannot stand behind.
|
|
305
442
|
...(maxInputChars !== undefined && { maxInputChars }),
|
|
306
443
|
async embed({ text, signal }) {
|
|
307
|
-
|
|
444
|
+
// ONE text is this library's query shape (`loadRelevant` embeds the
|
|
445
|
+
// question) — so Cohere is told it is a query unless `inputType` says
|
|
446
|
+
// otherwise. Titan ignores the argument entirely.
|
|
447
|
+
return (await invoke([text], 'search_query', signal))[0];
|
|
308
448
|
},
|
|
309
449
|
async embedBatch({ texts, signal }) {
|
|
310
|
-
//
|
|
311
|
-
//
|
|
312
|
-
//
|
|
313
|
-
|
|
314
|
-
// branches is how a corpus index meets a throttling error.
|
|
315
|
-
//
|
|
316
|
-
// The abort is checked between calls as well as passed into each one,
|
|
317
|
-
// so an aborted batch stops at the next boundary instead of embedding
|
|
318
|
-
// the rest of a corpus nobody is waiting for.
|
|
319
|
-
const out = [];
|
|
320
|
-
for (const text of texts) {
|
|
321
|
-
signal?.throwIfAborted();
|
|
322
|
-
out.push(await invoke(text, signal));
|
|
323
|
-
}
|
|
324
|
-
return out;
|
|
450
|
+
// MANY texts is this library's document shape (`indexDocuments`,
|
|
451
|
+
// `embedMessages`), and Cohere embeds a document into a different place
|
|
452
|
+
// from a query on purpose.
|
|
453
|
+
return invokeAll(texts, 'search_document', signal);
|
|
325
454
|
},
|
|
326
455
|
};
|
|
327
456
|
}
|
|
@@ -342,15 +471,26 @@ function loadBedrockRuntimeSdk() {
|
|
|
342
471
|
}
|
|
343
472
|
}
|
|
344
473
|
/**
|
|
345
|
-
* Pull the
|
|
474
|
+
* Pull the vectors out of an `InvokeModel` response, by FAMILY.
|
|
346
475
|
*
|
|
347
476
|
* The SDK hands back `body` as a `Uint8Array`; a hand-rolled or mock client
|
|
348
477
|
* may hand back the decoded object or a string. All three are read, and
|
|
349
478
|
* anything else is refused by NAME rather than returning an empty vector —
|
|
350
479
|
* an embedder that silently returns `[]` writes a row a store will never
|
|
351
480
|
* rank, which is indistinguishable from "the corpus does not mention that".
|
|
481
|
+
*
|
|
482
|
+
* The field differs with the family (`embedding` vs `embeddings`), so the
|
|
483
|
+
* refusal has to as well: told the wrong family, the response is perfectly
|
|
484
|
+
* valid and this is the only place that can say so — which is why the message
|
|
485
|
+
* names `family` when the model id was not one this library knows.
|
|
486
|
+
*
|
|
487
|
+
* @param expected how many vectors were asked for. A count mismatch is refused
|
|
488
|
+
* rather than returned short: the caller pairs vectors with texts by
|
|
489
|
+
* POSITION, so a missing one does not go missing — it silently re-labels
|
|
490
|
+
* every passage after it.
|
|
491
|
+
* @param guessedFamily whether the family was a fallback rather than a fact.
|
|
352
492
|
*/
|
|
353
|
-
function
|
|
493
|
+
function readEmbeddings(response, model, family, expected, guessedFamily) {
|
|
354
494
|
const body = response?.body ?? response;
|
|
355
495
|
let parsed = body;
|
|
356
496
|
if (body instanceof Uint8Array) {
|
|
@@ -359,13 +499,37 @@ function readEmbedding(response, model) {
|
|
|
359
499
|
else if (typeof body === 'string') {
|
|
360
500
|
parsed = JSON.parse(body);
|
|
361
501
|
}
|
|
362
|
-
const
|
|
363
|
-
|
|
364
|
-
|
|
502
|
+
const field = family === 'cohere' ? 'embeddings' : 'embedding';
|
|
503
|
+
const raw = parsed?.[field];
|
|
504
|
+
// Cohere answers `{ embeddings: [[...]] }`, or `{ embeddings: { float: [[...]] } }`
|
|
505
|
+
// when a caller asked for typed embeddings. This never asks, and reads both.
|
|
506
|
+
const rows = family === 'cohere'
|
|
507
|
+
? Array.isArray(raw)
|
|
508
|
+
? raw
|
|
509
|
+
: raw?.float
|
|
510
|
+
: [raw];
|
|
511
|
+
const vectors = Array.isArray(rows) &&
|
|
512
|
+
rows.every((row) => Array.isArray(row) && row.every((n) => typeof n === 'number'))
|
|
513
|
+
? rows
|
|
514
|
+
: undefined;
|
|
515
|
+
if (vectors === undefined) {
|
|
516
|
+
throw new Error(`bedrockEmbedder: '${model}' returned no \`${field}\` array. Bedrock answered with ` +
|
|
365
517
|
`${describeShape(parsed)}, which this adapter cannot read — check the model id names an ` +
|
|
366
|
-
`EMBEDDING model (a text-generation model answers a different shape).`
|
|
518
|
+
`EMBEDDING model (a text-generation model answers a different shape).` +
|
|
519
|
+
(guessedFamily
|
|
520
|
+
? `\n This model id is not one this library knows, so it was sent the ${family} ` +
|
|
521
|
+
`request body. If it is a ${family === 'titan' ? 'Cohere' : 'Titan'} model, pass ` +
|
|
522
|
+
`\`family: '${family === 'titan' ? 'cohere' : 'titan'}'\` — the request body and ` +
|
|
523
|
+
`the response field both differ per family.`
|
|
524
|
+
: ''));
|
|
525
|
+
}
|
|
526
|
+
if (vectors.length !== expected) {
|
|
527
|
+
throw new Error(`bedrockEmbedder: '${model}' was sent ${expected} text(s) and answered with ` +
|
|
528
|
+
`${vectors.length} vector(s). Vectors are paired with texts by POSITION, so a short ` +
|
|
529
|
+
`answer would not lose one passage — it would attach every later vector to the wrong ` +
|
|
530
|
+
`passage, and the corpus would rank confidently and wrongly forever.`);
|
|
367
531
|
}
|
|
368
|
-
return
|
|
532
|
+
return vectors;
|
|
369
533
|
}
|
|
370
534
|
/** Describe a response by shape, never by content — it may carry customer text. */
|
|
371
535
|
function describeShape(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/embedders/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/embedders/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmbedderMismatchError — one class, for every store that can tell.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: shared refusal type (the `SqliteUnavailableError` precedent).
|
|
5
|
+
* Role: lib/, so no store adapter owns it and none has to import another.
|
|
6
|
+
* Emits: N/A.
|
|
7
|
+
*
|
|
8
|
+
* It lived inside `sqliteVector.ts` from 8.9.0 until 9.3.0, when a second and
|
|
9
|
+
* a third store learned to make the same check. A duplicate class of the same
|
|
10
|
+
* name would mean `catch (e) { if (e instanceof EmbedderMismatchError) }`
|
|
11
|
+
* quietly depended on WHICH store threw — so there is exactly one, here, and
|
|
12
|
+
* the stores import it.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Raised when a vector meets an index built by a different embedder.
|
|
16
|
+
*
|
|
17
|
+
* **This is the refusal that keeps a vector store honest.** Cosine similarity
|
|
18
|
+
* between two different embedding spaces is not a weak signal — it is not a
|
|
19
|
+
* signal at all, and it comes back as a confident number in the same 0-to-1
|
|
20
|
+
* range as a real one. There is no threshold that separates them, and nothing
|
|
21
|
+
* downstream can tell them apart. So the mismatch is refused where it happens,
|
|
22
|
+
* on both sides:
|
|
23
|
+
*
|
|
24
|
+
* - at **write**, so a second embedder's vectors never enter a namespace;
|
|
25
|
+
* - at **query**, so a swapped embedder never scores against the old ones.
|
|
26
|
+
*
|
|
27
|
+
* The named fix is an explicit re-index — delete the namespace and build it
|
|
28
|
+
* again with one embedder, or point the retriever somewhere else. It is never a
|
|
29
|
+
* fallback: silently ignoring the mismatch is the failure, and silently
|
|
30
|
+
* re-embedding somebody's corpus is a bill they did not agree to.
|
|
31
|
+
*
|
|
32
|
+
* `problem` says which half is wrong. `'dimensions'` is arithmetically
|
|
33
|
+
* impossible to score at all; `'model'` would score, and lie.
|
|
34
|
+
*/
|
|
35
|
+
export declare class EmbedderMismatchError extends Error {
|
|
36
|
+
readonly code: "ERR_EMBEDDER_MISMATCH";
|
|
37
|
+
/** The fingerprint the namespace was built with, `'<id>@<dims>'`. */
|
|
38
|
+
readonly indexed: string;
|
|
39
|
+
/** The fingerprint that just arrived. */
|
|
40
|
+
readonly incoming: string;
|
|
41
|
+
/** Which half disagrees. */
|
|
42
|
+
readonly problem: 'dimensions' | 'model';
|
|
43
|
+
/**
|
|
44
|
+
* @param alternative the store-specific second way out, named in the
|
|
45
|
+
* message. A file-backed store says "point this store at a different
|
|
46
|
+
* file"; a service-backed one names its own unit of separation.
|
|
47
|
+
*/
|
|
48
|
+
constructor(namespace: string, indexed: string, incoming: string, problem: EmbedderMismatchError['problem'], operation: 'write to' | 'search', alternative?: string);
|
|
49
|
+
}
|
|
50
|
+
/** An embedder fingerprint, split into the two halves that decide separately. */
|
|
51
|
+
export interface Fingerprint {
|
|
52
|
+
readonly id?: string;
|
|
53
|
+
readonly dims: number;
|
|
54
|
+
}
|
|
55
|
+
/** `'<id>@<dims>'`, with `'?'` for an embedder that did not name itself. */
|
|
56
|
+
export declare function fingerprintText(fp: Fingerprint): string;
|
|
57
|
+
/** Parse the `'<id>@<dims>'` form back into its halves. */
|
|
58
|
+
export declare function parseFingerprint(text: string): Fingerprint;
|
|
59
|
+
/**
|
|
60
|
+
* What, if anything, makes these two incompatible.
|
|
61
|
+
*
|
|
62
|
+
* Dimensions always decide: two lengths cannot be compared at all. Model ids
|
|
63
|
+
* decide only when BOTH sides named themselves — an anonymous vector is not
|
|
64
|
+
* evidence of a different embedder, and refusing on absence would break every
|
|
65
|
+
* caller who never passed an `embedderId`, which is most of them.
|
|
66
|
+
*/
|
|
67
|
+
export declare function fingerprintConflict(stored: Fingerprint, incoming: Fingerprint): 'dimensions' | 'model' | null;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EmbedderMismatchError — one class, for every store that can tell.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: shared refusal type (the `SqliteUnavailableError` precedent).
|
|
5
|
+
* Role: lib/, so no store adapter owns it and none has to import another.
|
|
6
|
+
* Emits: N/A.
|
|
7
|
+
*
|
|
8
|
+
* It lived inside `sqliteVector.ts` from 8.9.0 until 9.3.0, when a second and
|
|
9
|
+
* a third store learned to make the same check. A duplicate class of the same
|
|
10
|
+
* name would mean `catch (e) { if (e instanceof EmbedderMismatchError) }`
|
|
11
|
+
* quietly depended on WHICH store threw — so there is exactly one, here, and
|
|
12
|
+
* the stores import it.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Raised when a vector meets an index built by a different embedder.
|
|
16
|
+
*
|
|
17
|
+
* **This is the refusal that keeps a vector store honest.** Cosine similarity
|
|
18
|
+
* between two different embedding spaces is not a weak signal — it is not a
|
|
19
|
+
* signal at all, and it comes back as a confident number in the same 0-to-1
|
|
20
|
+
* range as a real one. There is no threshold that separates them, and nothing
|
|
21
|
+
* downstream can tell them apart. So the mismatch is refused where it happens,
|
|
22
|
+
* on both sides:
|
|
23
|
+
*
|
|
24
|
+
* - at **write**, so a second embedder's vectors never enter a namespace;
|
|
25
|
+
* - at **query**, so a swapped embedder never scores against the old ones.
|
|
26
|
+
*
|
|
27
|
+
* The named fix is an explicit re-index — delete the namespace and build it
|
|
28
|
+
* again with one embedder, or point the retriever somewhere else. It is never a
|
|
29
|
+
* fallback: silently ignoring the mismatch is the failure, and silently
|
|
30
|
+
* re-embedding somebody's corpus is a bill they did not agree to.
|
|
31
|
+
*
|
|
32
|
+
* `problem` says which half is wrong. `'dimensions'` is arithmetically
|
|
33
|
+
* impossible to score at all; `'model'` would score, and lie.
|
|
34
|
+
*/
|
|
35
|
+
export class EmbedderMismatchError extends Error {
|
|
36
|
+
code = 'ERR_EMBEDDER_MISMATCH';
|
|
37
|
+
/** The fingerprint the namespace was built with, `'<id>@<dims>'`. */
|
|
38
|
+
indexed;
|
|
39
|
+
/** The fingerprint that just arrived. */
|
|
40
|
+
incoming;
|
|
41
|
+
/** Which half disagrees. */
|
|
42
|
+
problem;
|
|
43
|
+
/**
|
|
44
|
+
* @param alternative the store-specific second way out, named in the
|
|
45
|
+
* message. A file-backed store says "point this store at a different
|
|
46
|
+
* file"; a service-backed one names its own unit of separation.
|
|
47
|
+
*/
|
|
48
|
+
constructor(namespace, indexed, incoming, problem, operation, alternative = 'point this store at a different index') {
|
|
49
|
+
super(`[memory] cannot ${operation} the namespace '${namespace}': it was indexed by ` +
|
|
50
|
+
`'${indexed}' and this vector is from '${incoming}'. ` +
|
|
51
|
+
(problem === 'dimensions'
|
|
52
|
+
? `Vectors of different lengths cannot be compared at all. `
|
|
53
|
+
: `Cosine similarity between two embedding spaces is not a weak signal — it is ` +
|
|
54
|
+
`not a signal, and it comes back as a confident number in the same range as a ` +
|
|
55
|
+
`real one, which no threshold can separate. `) +
|
|
56
|
+
`Re-index this namespace with one embedder (delete it and build it again), or ` +
|
|
57
|
+
`${alternative}. This refuses rather than re-embedding ` +
|
|
58
|
+
`your corpus on your behalf — that is a bill you did not agree to — and rather ` +
|
|
59
|
+
`than mixing the two, which would silently corrupt every ranking it touched.`);
|
|
60
|
+
this.name = 'EmbedderMismatchError';
|
|
61
|
+
this.indexed = indexed;
|
|
62
|
+
this.incoming = incoming;
|
|
63
|
+
this.problem = problem;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** `'<id>@<dims>'`, with `'?'` for an embedder that did not name itself. */
|
|
67
|
+
export function fingerprintText(fp) {
|
|
68
|
+
return `${fp.id ?? '?'}@${fp.dims}`;
|
|
69
|
+
}
|
|
70
|
+
/** Parse the `'<id>@<dims>'` form back into its halves. */
|
|
71
|
+
export function parseFingerprint(text) {
|
|
72
|
+
const at = text.lastIndexOf('@');
|
|
73
|
+
const id = at === -1 ? '?' : text.slice(0, at);
|
|
74
|
+
const dims = at === -1 ? 0 : Number(text.slice(at + 1));
|
|
75
|
+
return {
|
|
76
|
+
...(id !== '?' && id !== '' && { id }),
|
|
77
|
+
dims: Number.isFinite(dims) ? dims : 0,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* What, if anything, makes these two incompatible.
|
|
82
|
+
*
|
|
83
|
+
* Dimensions always decide: two lengths cannot be compared at all. Model ids
|
|
84
|
+
* decide only when BOTH sides named themselves — an anonymous vector is not
|
|
85
|
+
* evidence of a different embedder, and refusing on absence would break every
|
|
86
|
+
* caller who never passed an `embedderId`, which is most of them.
|
|
87
|
+
*/
|
|
88
|
+
export function fingerprintConflict(stored, incoming) {
|
|
89
|
+
if (stored.dims !== incoming.dims)
|
|
90
|
+
return 'dimensions';
|
|
91
|
+
if (stored.id !== undefined && incoming.id !== undefined && stored.id !== incoming.id) {
|
|
92
|
+
return 'model';
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=embedderMismatch.js.map
|