@absolutejs/rag 0.1.2 → 0.2.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/index.js
CHANGED
|
@@ -19308,7 +19308,10 @@ var sourceAwareUnits = (document, format, normalizedText) => {
|
|
|
19308
19308
|
}
|
|
19309
19309
|
};
|
|
19310
19310
|
var overlapTail = (value, overlap) => {
|
|
19311
|
-
if (overlap <= 0
|
|
19311
|
+
if (overlap <= 0) {
|
|
19312
|
+
return "";
|
|
19313
|
+
}
|
|
19314
|
+
if (value.length <= overlap) {
|
|
19312
19315
|
return value;
|
|
19313
19316
|
}
|
|
19314
19317
|
const candidate = value.slice(-overlap);
|
|
@@ -19323,11 +19326,16 @@ var chunkFromUnits = (units, maxChunkLength, chunkOverlap, minChunkLength) => {
|
|
|
19323
19326
|
};
|
|
19324
19327
|
const mergeSmallChunk = (merged2, chunk) => {
|
|
19325
19328
|
const last = merged2[merged2.length - 1];
|
|
19326
|
-
if (
|
|
19329
|
+
if (last === undefined || chunk.length >= minChunkLength) {
|
|
19330
|
+
merged2.push(chunk);
|
|
19331
|
+
return;
|
|
19332
|
+
}
|
|
19333
|
+
const candidate = normalizeWhitespace(`${last} ${chunk}`);
|
|
19334
|
+
if (candidate.length > maxChunkLength) {
|
|
19327
19335
|
merged2.push(chunk);
|
|
19328
19336
|
return;
|
|
19329
19337
|
}
|
|
19330
|
-
merged2[merged2.length - 1] =
|
|
19338
|
+
merged2[merged2.length - 1] = candidate;
|
|
19331
19339
|
};
|
|
19332
19340
|
const appendUnitToChunk = (trimmed) => {
|
|
19333
19341
|
if (!current) {
|
|
@@ -19348,11 +19356,21 @@ var chunkFromUnits = (units, maxChunkLength, chunkOverlap, minChunkLength) => {
|
|
|
19348
19356
|
const carry = overlapTail(current, chunkOverlap);
|
|
19349
19357
|
current = carry.length > 0 ? `${carry} ${trimmed}`.trim() : trimmed;
|
|
19350
19358
|
};
|
|
19359
|
+
const explodeOversized = (unit) => {
|
|
19360
|
+
if (unit.length <= maxChunkLength)
|
|
19361
|
+
return [unit];
|
|
19362
|
+
const sentences = sentenceUnits(unit);
|
|
19363
|
+
if (sentences.length > 1)
|
|
19364
|
+
return sentences.flatMap(explodeOversized);
|
|
19365
|
+
return fixedUnits(unit, maxChunkLength);
|
|
19366
|
+
};
|
|
19351
19367
|
for (const unit of units) {
|
|
19352
|
-
const
|
|
19353
|
-
|
|
19354
|
-
|
|
19355
|
-
|
|
19368
|
+
for (const piece of explodeOversized(unit.trim())) {
|
|
19369
|
+
const trimmed = piece.trim();
|
|
19370
|
+
if (!trimmed)
|
|
19371
|
+
continue;
|
|
19372
|
+
appendUnitToChunk(trimmed);
|
|
19373
|
+
}
|
|
19356
19374
|
}
|
|
19357
19375
|
if (current) {
|
|
19358
19376
|
appendChunk(current);
|
|
@@ -31555,6 +31573,54 @@ var ragChat = (config) => {
|
|
|
31555
31573
|
// src/presentation/htmxConfig.ts
|
|
31556
31574
|
var createRAGHTMXConfig = (config) => config;
|
|
31557
31575
|
var createRAGHTMXWorkflowRenderConfig = (config) => config;
|
|
31576
|
+
// src/retrieval/embeddingBudget.ts
|
|
31577
|
+
var embeddingCacheKey = async (text, model, kind) => {
|
|
31578
|
+
const payload = `${model ?? "default"}:${kind ?? "passage"}:${text}`;
|
|
31579
|
+
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(payload));
|
|
31580
|
+
return Array.from(new Uint8Array(digest)).map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
31581
|
+
};
|
|
31582
|
+
var QUOTA_PATTERN = /RESOURCE_EXHAUSTED|token limit|quota|insufficient_quota|billing hard limit/i;
|
|
31583
|
+
var isEmbeddingQuotaError = (error) => {
|
|
31584
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
31585
|
+
return QUOTA_PATTERN.test(message);
|
|
31586
|
+
};
|
|
31587
|
+
var withEmbeddingBudget = (provider, options = {}) => {
|
|
31588
|
+
const base = typeof provider === "function" ? { embed: provider } : provider;
|
|
31589
|
+
const { cache, onQuotaExhausted } = options;
|
|
31590
|
+
let lastError = null;
|
|
31591
|
+
let quotaExhaustedAt = null;
|
|
31592
|
+
let reused = 0;
|
|
31593
|
+
let embedded = 0;
|
|
31594
|
+
return {
|
|
31595
|
+
...base,
|
|
31596
|
+
embed: async (input) => {
|
|
31597
|
+
const key = cache ? await embeddingCacheKey(input.text, input.model, input.kind) : null;
|
|
31598
|
+
if (key && cache) {
|
|
31599
|
+
const hit = await cache.get(key);
|
|
31600
|
+
if (hit && hit.length > 0) {
|
|
31601
|
+
reused += 1;
|
|
31602
|
+
return hit;
|
|
31603
|
+
}
|
|
31604
|
+
}
|
|
31605
|
+
const vector = await base.embed(input).catch((error) => {
|
|
31606
|
+
lastError = error instanceof Error ? error.message : String(error);
|
|
31607
|
+
if (isEmbeddingQuotaError(error)) {
|
|
31608
|
+
const first = quotaExhaustedAt === null;
|
|
31609
|
+
quotaExhaustedAt = new Date;
|
|
31610
|
+
if (first)
|
|
31611
|
+
onQuotaExhausted?.(error);
|
|
31612
|
+
}
|
|
31613
|
+
throw error;
|
|
31614
|
+
});
|
|
31615
|
+
lastError = null;
|
|
31616
|
+
embedded += 1;
|
|
31617
|
+
if (key && cache)
|
|
31618
|
+
await cache.set(key, vector);
|
|
31619
|
+
return vector;
|
|
31620
|
+
},
|
|
31621
|
+
health: () => ({ embedded, lastError, quotaExhaustedAt, reused })
|
|
31622
|
+
};
|
|
31623
|
+
};
|
|
31558
31624
|
// src/providers/rerankerProviders.ts
|
|
31559
31625
|
var rowScore = (row) => row.relevance_score ?? row.relevanceScore ?? row.score ?? 0;
|
|
31560
31626
|
var applyRanking = (candidates, rows, topK) => {
|
|
@@ -35995,6 +36061,7 @@ var createSyncRAGStore = (options = {}) => {
|
|
|
35995
36061
|
};
|
|
35996
36062
|
export {
|
|
35997
36063
|
xaiEmbeddings,
|
|
36064
|
+
withEmbeddingBudget,
|
|
35998
36065
|
validateRAGEmbeddingDimensions,
|
|
35999
36066
|
updateRAGEvaluationSuiteCase,
|
|
36000
36067
|
summarizeRAGSearchTraceStore,
|
|
@@ -36084,6 +36151,7 @@ export {
|
|
|
36084
36151
|
loadRAGDocumentFile,
|
|
36085
36152
|
loadRAGAnswerGroundingEvaluationHistory,
|
|
36086
36153
|
loadRAGAnswerGroundingCaseDifficultyHistory,
|
|
36154
|
+
isEmbeddingQuotaError,
|
|
36087
36155
|
inspectRAGSQLiteStoreMigrations,
|
|
36088
36156
|
ingestRAGSource,
|
|
36089
36157
|
ingestRAGDocuments,
|
|
@@ -36097,6 +36165,7 @@ export {
|
|
|
36097
36165
|
evaluateRAGCollection,
|
|
36098
36166
|
evaluateRAGAnswerGroundingCase,
|
|
36099
36167
|
evaluateRAGAnswerGrounding,
|
|
36168
|
+
embeddingCacheKey,
|
|
36100
36169
|
deepseekEmbeddings,
|
|
36101
36170
|
createVoyageRAGReranker,
|
|
36102
36171
|
createTextFileExtractor,
|
|
@@ -36286,5 +36355,5 @@ export {
|
|
|
36286
36355
|
addRAGEvaluationSuiteCase
|
|
36287
36356
|
};
|
|
36288
36357
|
|
|
36289
|
-
//# debugId=
|
|
36358
|
+
//# debugId=A910166B20BDB76264756E2164756E21
|
|
36290
36359
|
//# sourceMappingURL=index.js.map
|