@hazeljs/rag 0.2.0-beta.8 → 0.2.0-beta.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +192 -21
- package/README.md +348 -223
- package/dist/__tests__/graph/community-detector.test.d.ts +2 -0
- package/dist/__tests__/graph/community-detector.test.d.ts.map +1 -0
- package/dist/__tests__/graph/community-detector.test.js +87 -0
- package/dist/__tests__/graph/community-detector.test.js.map +1 -0
- package/dist/__tests__/graph/community-summarizer.test.d.ts +2 -0
- package/dist/__tests__/graph/community-summarizer.test.d.ts.map +1 -0
- package/dist/__tests__/graph/community-summarizer.test.js +131 -0
- package/dist/__tests__/graph/community-summarizer.test.js.map +1 -0
- package/dist/__tests__/graph/entity-extractor.test.d.ts +2 -0
- package/dist/__tests__/graph/entity-extractor.test.d.ts.map +1 -0
- package/dist/__tests__/graph/entity-extractor.test.js +129 -0
- package/dist/__tests__/graph/entity-extractor.test.js.map +1 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts +2 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.js +158 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.js.map +1 -0
- package/dist/__tests__/graph/knowledge-graph.test.d.ts +2 -0
- package/dist/__tests__/graph/knowledge-graph.test.d.ts.map +1 -0
- package/dist/__tests__/graph/knowledge-graph.test.js +208 -0
- package/dist/__tests__/graph/knowledge-graph.test.js.map +1 -0
- package/dist/__tests__/loaders/base.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/base.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/base.loader.test.js +114 -0
- package/dist/__tests__/loaders/base.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/csv-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/csv-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/csv-file.loader.test.js +98 -0
- package/dist/__tests__/loaders/csv-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/directory.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/directory.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/directory.loader.test.js +154 -0
- package/dist/__tests__/loaders/directory.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/html-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/html-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/html-file.loader.test.js +93 -0
- package/dist/__tests__/loaders/html-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/json-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/json-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/json-file.loader.test.js +84 -0
- package/dist/__tests__/loaders/json-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.js +83 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/text-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/text-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/text-file.loader.test.js +50 -0
- package/dist/__tests__/loaders/text-file.loader.test.js.map +1 -0
- package/dist/__tests__/rag-pipeline.test.d.ts +2 -0
- package/dist/__tests__/rag-pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/rag-pipeline.test.js +210 -0
- package/dist/__tests__/rag-pipeline.test.js.map +1 -0
- package/dist/__tests__/retrieval/bm25.test.d.ts +2 -0
- package/dist/__tests__/retrieval/bm25.test.d.ts.map +1 -0
- package/dist/__tests__/retrieval/bm25.test.js +86 -0
- package/dist/__tests__/retrieval/bm25.test.js.map +1 -0
- package/dist/__tests__/retrieval/hybrid-search.test.d.ts +2 -0
- package/dist/__tests__/retrieval/hybrid-search.test.d.ts.map +1 -0
- package/dist/__tests__/retrieval/hybrid-search.test.js +85 -0
- package/dist/__tests__/retrieval/hybrid-search.test.js.map +1 -0
- package/dist/__tests__/retrieval/multi-query.test.d.ts +2 -0
- package/dist/__tests__/retrieval/multi-query.test.d.ts.map +1 -0
- package/dist/__tests__/retrieval/multi-query.test.js +90 -0
- package/dist/__tests__/retrieval/multi-query.test.js.map +1 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts +2 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts.map +1 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.js +97 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.js.map +1 -0
- package/dist/__tests__/utils/similarity.test.d.ts +2 -0
- package/dist/__tests__/utils/similarity.test.d.ts.map +1 -0
- package/dist/__tests__/utils/similarity.test.js +47 -0
- package/dist/__tests__/utils/similarity.test.js.map +1 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts +1 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/adaptive-retrieval.decorator.js +4 -15
- package/dist/agentic/decorators/adaptive-retrieval.decorator.js.map +1 -1
- package/dist/agentic/decorators/corrective-rag.decorator.d.ts +1 -0
- package/dist/agentic/decorators/corrective-rag.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/corrective-rag.decorator.js +7 -11
- package/dist/agentic/decorators/corrective-rag.decorator.js.map +1 -1
- package/dist/agentic/decorators/hyde.decorator.d.ts +1 -0
- package/dist/agentic/decorators/hyde.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/hyde.decorator.js +7 -6
- package/dist/agentic/decorators/hyde.decorator.js.map +1 -1
- package/dist/agentic/decorators/multi-hop.decorator.d.ts +1 -0
- package/dist/agentic/decorators/multi-hop.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/multi-hop.decorator.js +8 -19
- package/dist/agentic/decorators/multi-hop.decorator.js.map +1 -1
- package/dist/agentic/decorators/query-planner.decorator.d.ts +1 -0
- package/dist/agentic/decorators/query-planner.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/query-planner.decorator.js +4 -18
- package/dist/agentic/decorators/query-planner.decorator.js.map +1 -1
- package/dist/agentic/decorators/query-rewriter.decorator.d.ts +1 -0
- package/dist/agentic/decorators/query-rewriter.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/query-rewriter.decorator.js +8 -5
- package/dist/agentic/decorators/query-rewriter.decorator.js.map +1 -1
- package/dist/agentic/decorators/self-reflective.decorator.d.ts +2 -0
- package/dist/agentic/decorators/self-reflective.decorator.d.ts.map +1 -1
- package/dist/agentic/decorators/self-reflective.decorator.js +11 -32
- package/dist/agentic/decorators/self-reflective.decorator.js.map +1 -1
- package/dist/agentic/index.d.ts +1 -1
- package/dist/agentic/index.d.ts.map +1 -1
- package/dist/agentic/types.d.ts +3 -2
- package/dist/agentic/types.d.ts.map +1 -1
- package/dist/graph/community-detector.d.ts +45 -0
- package/dist/graph/community-detector.d.ts.map +1 -0
- package/dist/graph/community-detector.js +153 -0
- package/dist/graph/community-detector.js.map +1 -0
- package/dist/graph/community-summarizer.d.ts +41 -0
- package/dist/graph/community-summarizer.d.ts.map +1 -0
- package/dist/graph/community-summarizer.js +119 -0
- package/dist/graph/community-summarizer.js.map +1 -0
- package/dist/graph/entity-extractor.d.ts +47 -0
- package/dist/graph/entity-extractor.d.ts.map +1 -0
- package/dist/graph/entity-extractor.js +224 -0
- package/dist/graph/entity-extractor.js.map +1 -0
- package/dist/graph/graph-rag-pipeline.d.ts +83 -0
- package/dist/graph/graph-rag-pipeline.d.ts.map +1 -0
- package/dist/graph/graph-rag-pipeline.js +390 -0
- package/dist/graph/graph-rag-pipeline.js.map +1 -0
- package/dist/graph/graph.types.d.ts +186 -0
- package/dist/graph/graph.types.d.ts.map +1 -0
- package/dist/graph/graph.types.js +20 -0
- package/dist/graph/graph.types.js.map +1 -0
- package/dist/graph/index.d.ts +15 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +31 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/knowledge-graph.d.ts +57 -0
- package/dist/graph/knowledge-graph.d.ts.map +1 -0
- package/dist/graph/knowledge-graph.js +198 -0
- package/dist/graph/knowledge-graph.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/loaders/base.loader.d.ts +108 -0
- package/dist/loaders/base.loader.d.ts.map +1 -0
- package/dist/loaders/base.loader.js +123 -0
- package/dist/loaders/base.loader.js.map +1 -0
- package/dist/loaders/csv-file.loader.d.ts +61 -0
- package/dist/loaders/csv-file.loader.d.ts.map +1 -0
- package/dist/loaders/csv-file.loader.js +162 -0
- package/dist/loaders/csv-file.loader.js.map +1 -0
- package/dist/loaders/directory.loader.d.ts +67 -0
- package/dist/loaders/directory.loader.d.ts.map +1 -0
- package/dist/loaders/directory.loader.js +163 -0
- package/dist/loaders/directory.loader.js.map +1 -0
- package/dist/loaders/docx.loader.d.ts +52 -0
- package/dist/loaders/docx.loader.d.ts.map +1 -0
- package/dist/loaders/docx.loader.js +110 -0
- package/dist/loaders/docx.loader.js.map +1 -0
- package/dist/loaders/github.loader.d.ts +114 -0
- package/dist/loaders/github.loader.d.ts.map +1 -0
- package/dist/loaders/github.loader.js +217 -0
- package/dist/loaders/github.loader.js.map +1 -0
- package/dist/loaders/html-file.loader.d.ts +55 -0
- package/dist/loaders/html-file.loader.d.ts.map +1 -0
- package/dist/loaders/html-file.loader.js +170 -0
- package/dist/loaders/html-file.loader.js.map +1 -0
- package/dist/loaders/index.d.ts +52 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +61 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/loaders/json-file.loader.d.ts +51 -0
- package/dist/loaders/json-file.loader.d.ts.map +1 -0
- package/dist/loaders/json-file.loader.js +100 -0
- package/dist/loaders/json-file.loader.js.map +1 -0
- package/dist/loaders/markdown-file.loader.d.ts +61 -0
- package/dist/loaders/markdown-file.loader.d.ts.map +1 -0
- package/dist/loaders/markdown-file.loader.js +148 -0
- package/dist/loaders/markdown-file.loader.js.map +1 -0
- package/dist/loaders/pdf.loader.d.ts +64 -0
- package/dist/loaders/pdf.loader.d.ts.map +1 -0
- package/dist/loaders/pdf.loader.js +163 -0
- package/dist/loaders/pdf.loader.js.map +1 -0
- package/dist/loaders/text-file.loader.d.ts +39 -0
- package/dist/loaders/text-file.loader.d.ts.map +1 -0
- package/dist/loaders/text-file.loader.js +69 -0
- package/dist/loaders/text-file.loader.js.map +1 -0
- package/dist/loaders/web.loader.d.ts +87 -0
- package/dist/loaders/web.loader.d.ts.map +1 -0
- package/dist/loaders/web.loader.js +194 -0
- package/dist/loaders/web.loader.js.map +1 -0
- package/dist/loaders/youtube-transcript.loader.d.ts +92 -0
- package/dist/loaders/youtube-transcript.loader.d.ts.map +1 -0
- package/dist/loaders/youtube-transcript.loader.js +254 -0
- package/dist/loaders/youtube-transcript.loader.js.map +1 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts +8 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.js +27 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.js.map +1 -0
- package/dist/prompts/agentic/corrective-rag.prompt.d.ts +9 -0
- package/dist/prompts/agentic/corrective-rag.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/corrective-rag.prompt.js +23 -0
- package/dist/prompts/agentic/corrective-rag.prompt.js.map +1 -0
- package/dist/prompts/agentic/hyde.prompt.d.ts +9 -0
- package/dist/prompts/agentic/hyde.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/hyde.prompt.js +18 -0
- package/dist/prompts/agentic/hyde.prompt.js.map +1 -0
- package/dist/prompts/agentic/multi-hop.prompt.d.ts +15 -0
- package/dist/prompts/agentic/multi-hop.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/multi-hop.prompt.js +38 -0
- package/dist/prompts/agentic/multi-hop.prompt.js.map +1 -0
- package/dist/prompts/agentic/query-planner.prompt.d.ts +8 -0
- package/dist/prompts/agentic/query-planner.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/query-planner.prompt.js +30 -0
- package/dist/prompts/agentic/query-planner.prompt.js.map +1 -0
- package/dist/prompts/agentic/query-rewriter.prompt.d.ts +10 -0
- package/dist/prompts/agentic/query-rewriter.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/query-rewriter.prompt.js +17 -0
- package/dist/prompts/agentic/query-rewriter.prompt.js.map +1 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts +10 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.js +24 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.js.map +1 -0
- package/dist/prompts/agentic/self-reflective.prompt.d.ts +9 -0
- package/dist/prompts/agentic/self-reflective.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/self-reflective.prompt.js +32 -0
- package/dist/prompts/agentic/self-reflective.prompt.js.map +1 -0
- package/dist/prompts/community-summary.prompt.d.ts +9 -0
- package/dist/prompts/community-summary.prompt.d.ts.map +1 -0
- package/dist/prompts/community-summary.prompt.js +30 -0
- package/dist/prompts/community-summary.prompt.js.map +1 -0
- package/dist/prompts/entity-extraction.prompt.d.ts +10 -0
- package/dist/prompts/entity-extraction.prompt.d.ts.map +1 -0
- package/dist/prompts/entity-extraction.prompt.js +39 -0
- package/dist/prompts/entity-extraction.prompt.js.map +1 -0
- package/dist/prompts/graph-search.prompt.d.ts +10 -0
- package/dist/prompts/graph-search.prompt.d.ts.map +1 -0
- package/dist/prompts/graph-search.prompt.js +23 -0
- package/dist/prompts/graph-search.prompt.js.map +1 -0
- package/dist/prompts/index.d.ts +13 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +29 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/rag-answer.prompt.d.ts +9 -0
- package/dist/prompts/rag-answer.prompt.d.ts.map +1 -0
- package/dist/prompts/rag-answer.prompt.js +20 -0
- package/dist/prompts/rag-answer.prompt.js.map +1 -0
- package/dist/rag.service.d.ts +1 -0
- package/dist/rag.service.d.ts.map +1 -1
- package/dist/rag.service.js +8 -9
- package/dist/rag.service.js.map +1 -1
- package/dist/vector-stores/qdrant.store.d.ts +2 -0
- package/dist/vector-stores/qdrant.store.d.ts.map +1 -1
- package/dist/vector-stores/qdrant.store.js +1 -0
- package/dist/vector-stores/qdrant.store.js.map +1 -1
- package/package.json +64 -6
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* YouTubeTranscriptLoader
|
|
4
|
+
*
|
|
5
|
+
* Downloads the caption/transcript for one or more YouTube videos and
|
|
6
|
+
* converts them to `Document` objects — no extra npm dependency required.
|
|
7
|
+
* Uses Node.js built-in `fetch` and parses the YouTube InnerTube API response.
|
|
8
|
+
*
|
|
9
|
+
* How it works:
|
|
10
|
+
* 1. Fetches the YouTube watch page for the video.
|
|
11
|
+
* 2. Extracts the `ytInitialPlayerResponse` JSON blob from the page HTML.
|
|
12
|
+
* 3. Locates the caption tracks list and selects the preferred language.
|
|
13
|
+
* 4. Fetches the caption XML file.
|
|
14
|
+
* 5. Parses `<text>` elements and decodes HTML entities.
|
|
15
|
+
* 6. Returns the transcript as one document (or split into segments).
|
|
16
|
+
*
|
|
17
|
+
* Accepts video IDs, full watch URLs, and youtu.be short URLs.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const loader = new YouTubeTranscriptLoader({
|
|
22
|
+
* videoId: 'dQw4w9WgXcQ',
|
|
23
|
+
* });
|
|
24
|
+
* const docs = await loader.load();
|
|
25
|
+
* // docs[0].content === "Never gonna give you up, never gonna let you..."
|
|
26
|
+
* // docs[0].metadata.title === "Rick Astley - Never Gonna Give You Up"
|
|
27
|
+
* // docs[0].metadata.videoId === "dQw4w9WgXcQ"
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* Multiple videos:
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const loader = new YouTubeTranscriptLoader({
|
|
33
|
+
* videoIds: ['VIDEO_ID_1', 'VIDEO_ID_2'],
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Split into timed segments (useful for timestamped RAG retrieval):
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const loader = new YouTubeTranscriptLoader({
|
|
40
|
+
* videoId: 'VIDEO_ID',
|
|
41
|
+
* segmentDuration: 120, // one document per 2-minute window
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
46
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
47
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
48
|
+
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;
|
|
49
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
50
|
+
};
|
|
51
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
52
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
53
|
+
};
|
|
54
|
+
var YouTubeTranscriptLoader_1;
|
|
55
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
+
exports.YouTubeTranscriptLoader = void 0;
|
|
57
|
+
const base_loader_1 = require("./base.loader");
|
|
58
|
+
let YouTubeTranscriptLoader = YouTubeTranscriptLoader_1 = class YouTubeTranscriptLoader extends base_loader_1.BaseDocumentLoader {
|
|
59
|
+
constructor(options) {
|
|
60
|
+
super();
|
|
61
|
+
if (!options.videoId && (!options.videoIds || options.videoIds.length === 0)) {
|
|
62
|
+
throw new Error('YouTubeTranscriptLoader: provide at least one videoId.');
|
|
63
|
+
}
|
|
64
|
+
const raw = options.videoIds ?? (options.videoId ? [options.videoId] : []);
|
|
65
|
+
this.videoIds = raw.map((id) => this.normaliseId(id));
|
|
66
|
+
this.language = options.language ?? 'en';
|
|
67
|
+
this.segmentDuration = options.segmentDuration;
|
|
68
|
+
this.timeout = options.timeout ?? 15000;
|
|
69
|
+
this.extraMetadata = options.metadata ?? {};
|
|
70
|
+
}
|
|
71
|
+
async load() {
|
|
72
|
+
const allDocs = [];
|
|
73
|
+
for (const videoId of this.videoIds) {
|
|
74
|
+
try {
|
|
75
|
+
const docs = await this.loadVideo(videoId);
|
|
76
|
+
allDocs.push(...docs);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
80
|
+
// eslint-disable-next-line no-console
|
|
81
|
+
console.warn(`[YouTubeTranscriptLoader] Skipping ${videoId}: ${message}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return allDocs;
|
|
85
|
+
}
|
|
86
|
+
// ── Private: per-video pipeline ──────────────────────────────────────────
|
|
87
|
+
async loadVideo(videoId) {
|
|
88
|
+
const watchUrl = `${YouTubeTranscriptLoader_1.YOUTUBE_BASE}/watch?v=${videoId}`;
|
|
89
|
+
const html = await this.fetch(watchUrl);
|
|
90
|
+
const { captionUrl, title, channelName } = this.extractCaptionInfo(html, videoId);
|
|
91
|
+
const captionXml = await this.fetch(captionUrl);
|
|
92
|
+
const lines = this.parseCaptionXml(captionXml);
|
|
93
|
+
if (lines.length === 0) {
|
|
94
|
+
throw new Error(`No transcript lines found for video ${videoId}`);
|
|
95
|
+
}
|
|
96
|
+
const baseMetadata = {
|
|
97
|
+
source: watchUrl,
|
|
98
|
+
videoId,
|
|
99
|
+
loaderType: 'youtube-transcript',
|
|
100
|
+
language: this.language,
|
|
101
|
+
...(title && { title }),
|
|
102
|
+
...(channelName && { channelName }),
|
|
103
|
+
...this.extraMetadata,
|
|
104
|
+
};
|
|
105
|
+
if (!this.segmentDuration) {
|
|
106
|
+
const fullText = lines.map((l) => l.text).join(' ');
|
|
107
|
+
return [this.createDocument(fullText, { ...baseMetadata, totalLines: lines.length })];
|
|
108
|
+
}
|
|
109
|
+
return this.buildSegments(lines, videoId, baseMetadata);
|
|
110
|
+
}
|
|
111
|
+
extractCaptionInfo(html, videoId) {
|
|
112
|
+
// Extract ytInitialPlayerResponse
|
|
113
|
+
const match = YouTubeTranscriptLoader_1.RE_PLAYER_RESPONSE.exec(html);
|
|
114
|
+
if (!match) {
|
|
115
|
+
throw new Error(`Could not find ytInitialPlayerResponse for video ${videoId}. ` +
|
|
116
|
+
`The video may be unavailable, age-restricted, or have no captions.`);
|
|
117
|
+
}
|
|
118
|
+
// Minimal safe JSON parse — the JSON is often very large
|
|
119
|
+
let playerResponse;
|
|
120
|
+
try {
|
|
121
|
+
playerResponse = JSON.parse(match[1]);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
throw new Error(`Failed to parse ytInitialPlayerResponse for video ${videoId}`);
|
|
125
|
+
}
|
|
126
|
+
const title = playerResponse.videoDetails?.title;
|
|
127
|
+
const channelName = playerResponse.videoDetails
|
|
128
|
+
?.author;
|
|
129
|
+
// Navigate: captions → playerCaptionsTracklistRenderer → captionTracks[]
|
|
130
|
+
const captionTracks = playerResponse.captions?.playerCaptionsTracklistRenderer?.captionTracks;
|
|
131
|
+
if (!captionTracks || captionTracks.length === 0) {
|
|
132
|
+
throw new Error(`No caption tracks available for video ${videoId}. ` +
|
|
133
|
+
`The video may not have captions/subtitles.`);
|
|
134
|
+
}
|
|
135
|
+
// Prefer the requested language; fall back to the first available track
|
|
136
|
+
const track = captionTracks.find((t) => t.languageCode === this.language) ?? captionTracks[0];
|
|
137
|
+
return {
|
|
138
|
+
captionUrl: `${track.baseUrl}&fmt=xml`,
|
|
139
|
+
title,
|
|
140
|
+
channelName,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
parseCaptionXml(xml) {
|
|
144
|
+
const lines = [];
|
|
145
|
+
const re = new RegExp(YouTubeTranscriptLoader_1.RE_CAPTION_TEXT.source, 'g');
|
|
146
|
+
let match;
|
|
147
|
+
while ((match = re.exec(xml)) !== null) {
|
|
148
|
+
const start = parseFloat(match[1]);
|
|
149
|
+
const duration = parseFloat(match[2]);
|
|
150
|
+
const raw = match[3];
|
|
151
|
+
const text = this.decodeEntities(raw.replace(/<[^>]+>/g, '')).trim();
|
|
152
|
+
if (text)
|
|
153
|
+
lines.push({ start, duration, text });
|
|
154
|
+
}
|
|
155
|
+
return lines;
|
|
156
|
+
}
|
|
157
|
+
buildSegments(lines, videoId, baseMetadata) {
|
|
158
|
+
const segments = [];
|
|
159
|
+
const duration = this.segmentDuration;
|
|
160
|
+
let segStart = 0;
|
|
161
|
+
let buffer = [];
|
|
162
|
+
let windowEnd = segStart + duration;
|
|
163
|
+
for (const line of lines) {
|
|
164
|
+
if (line.start >= windowEnd) {
|
|
165
|
+
if (buffer.length > 0) {
|
|
166
|
+
const text = buffer.join(' ');
|
|
167
|
+
const startTime = this.formatTime(segStart);
|
|
168
|
+
const endTime = this.formatTime(windowEnd);
|
|
169
|
+
segments.push(this.createDocument(text, {
|
|
170
|
+
...baseMetadata,
|
|
171
|
+
startTime,
|
|
172
|
+
endTime,
|
|
173
|
+
startSeconds: segStart,
|
|
174
|
+
youtubeUrl: `https://youtu.be/${videoId}?t=${Math.floor(segStart)}`,
|
|
175
|
+
}));
|
|
176
|
+
buffer = [];
|
|
177
|
+
}
|
|
178
|
+
segStart = Math.floor(line.start / duration) * duration;
|
|
179
|
+
windowEnd = segStart + duration;
|
|
180
|
+
}
|
|
181
|
+
buffer.push(line.text);
|
|
182
|
+
}
|
|
183
|
+
// Final segment
|
|
184
|
+
if (buffer.length > 0) {
|
|
185
|
+
segments.push(this.createDocument(buffer.join(' '), {
|
|
186
|
+
...baseMetadata,
|
|
187
|
+
startTime: this.formatTime(segStart),
|
|
188
|
+
endTime: this.formatTime(windowEnd),
|
|
189
|
+
startSeconds: segStart,
|
|
190
|
+
youtubeUrl: `https://youtu.be/${videoId}?t=${Math.floor(segStart)}`,
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
return segments;
|
|
194
|
+
}
|
|
195
|
+
// ── Utilities ────────────────────────────────────────────────────────────
|
|
196
|
+
normaliseId(input) {
|
|
197
|
+
// youtu.be/ID
|
|
198
|
+
const shortMatch = input.match(/youtu\.be\/([a-zA-Z0-9_-]{11})/);
|
|
199
|
+
if (shortMatch)
|
|
200
|
+
return shortMatch[1];
|
|
201
|
+
// youtube.com/watch?v=ID
|
|
202
|
+
const watchMatch = input.match(/[?&]v=([a-zA-Z0-9_-]{11})/);
|
|
203
|
+
if (watchMatch)
|
|
204
|
+
return watchMatch[1];
|
|
205
|
+
// Already an 11-char ID
|
|
206
|
+
if (/^[a-zA-Z0-9_-]{11}$/.test(input))
|
|
207
|
+
return input;
|
|
208
|
+
throw new Error(`YouTubeTranscriptLoader: cannot parse video ID from "${input}"`);
|
|
209
|
+
}
|
|
210
|
+
async fetch(url) {
|
|
211
|
+
const controller = new AbortController();
|
|
212
|
+
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
213
|
+
const response = await fetch(url, {
|
|
214
|
+
headers: {
|
|
215
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' +
|
|
216
|
+
'(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
217
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
218
|
+
},
|
|
219
|
+
signal: controller.signal,
|
|
220
|
+
});
|
|
221
|
+
clearTimeout(timer);
|
|
222
|
+
if (!response.ok) {
|
|
223
|
+
throw new Error(`HTTP ${response.status} ${response.statusText} fetching ${url}`);
|
|
224
|
+
}
|
|
225
|
+
return response.text();
|
|
226
|
+
}
|
|
227
|
+
decodeEntities(text) {
|
|
228
|
+
return text
|
|
229
|
+
.replace(/&/g, '&')
|
|
230
|
+
.replace(/</g, '<')
|
|
231
|
+
.replace(/>/g, '>')
|
|
232
|
+
.replace(/"/g, '"')
|
|
233
|
+
.replace(/'/g, "'")
|
|
234
|
+
.replace(/&#(\d+);/g, (_, code) => String.fromCharCode(parseInt(code, 10)));
|
|
235
|
+
}
|
|
236
|
+
formatTime(seconds) {
|
|
237
|
+
const h = Math.floor(seconds / 3600);
|
|
238
|
+
const m = Math.floor((seconds % 3600) / 60);
|
|
239
|
+
const s = Math.floor(seconds % 60);
|
|
240
|
+
return [h, m, s].map((v) => String(v).padStart(2, '0')).join(':');
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
exports.YouTubeTranscriptLoader = YouTubeTranscriptLoader;
|
|
244
|
+
YouTubeTranscriptLoader.YOUTUBE_BASE = 'https://www.youtube.com';
|
|
245
|
+
YouTubeTranscriptLoader.RE_PLAYER_RESPONSE = /ytInitialPlayerResponse\s*=\s*({.+?})\s*;/;
|
|
246
|
+
YouTubeTranscriptLoader.RE_CAPTION_TEXT = /<text[^>]*start="([^"]*)"[^>]*dur="([^"]*)"[^>]*>([\s\S]*?)<\/text>/g;
|
|
247
|
+
exports.YouTubeTranscriptLoader = YouTubeTranscriptLoader = YouTubeTranscriptLoader_1 = __decorate([
|
|
248
|
+
(0, base_loader_1.Loader)({
|
|
249
|
+
name: 'YouTubeTranscriptLoader',
|
|
250
|
+
description: 'Downloads YouTube video transcripts/captions — no API key needed.',
|
|
251
|
+
}),
|
|
252
|
+
__metadata("design:paramtypes", [Object])
|
|
253
|
+
], YouTubeTranscriptLoader);
|
|
254
|
+
//# sourceMappingURL=youtube-transcript.loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtube-transcript.loader.js","sourceRoot":"","sources":["../../src/loaders/youtube-transcript.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const ADAPTIVE_RETRIEVAL_KEY = "rag:agentic:adaptive-retrieval";
|
|
3
|
+
export interface AdaptiveRetrievalVariables {
|
|
4
|
+
query: string;
|
|
5
|
+
}
|
|
6
|
+
declare const template: PromptTemplate<AdaptiveRetrievalVariables>;
|
|
7
|
+
export { template as adaptiveRetrievalPrompt };
|
|
8
|
+
//# sourceMappingURL=adaptive-retrieval.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-retrieval.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/adaptive-retrieval.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,sBAAsB,mCAAmC,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,QAAQ,4CAqBb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.adaptiveRetrievalPrompt = exports.ADAPTIVE_RETRIEVAL_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.ADAPTIVE_RETRIEVAL_KEY = 'rag:agentic:adaptive-retrieval';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`Select the best retrieval strategy for this query:
|
|
7
|
+
|
|
8
|
+
Query: {query}
|
|
9
|
+
|
|
10
|
+
Available strategies:
|
|
11
|
+
- similarity: Best for semantic similarity
|
|
12
|
+
- hybrid: Combines keyword and semantic search
|
|
13
|
+
- mmr: Maximizes diversity while maintaining relevance
|
|
14
|
+
|
|
15
|
+
Respond in JSON:
|
|
16
|
+
{
|
|
17
|
+
"selectedStrategy": "similarity|hybrid|mmr",
|
|
18
|
+
"reason": "explanation",
|
|
19
|
+
"confidence": 0.0-1.0
|
|
20
|
+
}`, {
|
|
21
|
+
name: 'Adaptive Retrieval Strategy Selection',
|
|
22
|
+
description: 'Selects the optimal retrieval strategy based on query characteristics',
|
|
23
|
+
version: '1.0.0',
|
|
24
|
+
});
|
|
25
|
+
exports.adaptiveRetrievalPrompt = template;
|
|
26
|
+
prompts_1.PromptRegistry.register(exports.ADAPTIVE_RETRIEVAL_KEY, template);
|
|
27
|
+
//# sourceMappingURL=adaptive-retrieval.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-retrieval.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/adaptive-retrieval.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,sBAAsB,GAAG,gCAAgC,CAAC;AAMvE,MAAM,QAAQ,GAAG,IAAI,wBAAc,CACjC;;;;;;;;;;;;;;EAcA,EACA;IACE,IAAI,EAAE,uCAAuC;IAC7C,WAAW,EAAE,uEAAuE;IACpF,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAImB,2CAAuB;AAF5C,wBAAc,CAAC,QAAQ,CAAC,8BAAsB,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const CORRECTIVE_RAG_KEY = "rag:agentic:corrective-rag";
|
|
3
|
+
export interface CorrectiveRAGVariables {
|
|
4
|
+
query: string;
|
|
5
|
+
issues: string;
|
|
6
|
+
}
|
|
7
|
+
declare const template: PromptTemplate<CorrectiveRAGVariables>;
|
|
8
|
+
export { template as correctiveRAGPrompt };
|
|
9
|
+
//# sourceMappingURL=corrective-rag.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corrective-rag.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/corrective-rag.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,kBAAkB,+BAA+B,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,QAAQ,wCAiBb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.correctiveRAGPrompt = exports.CORRECTIVE_RAG_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.CORRECTIVE_RAG_KEY = 'rag:agentic:corrective-rag';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`The following retrieval results have issues. Suggest corrections:
|
|
7
|
+
|
|
8
|
+
Query: {query}
|
|
9
|
+
Issues: {issues}
|
|
10
|
+
|
|
11
|
+
Provide corrected query or strategy in JSON:
|
|
12
|
+
{
|
|
13
|
+
"correctedQuery": "improved query",
|
|
14
|
+
"strategy": "new strategy",
|
|
15
|
+
"reasoning": "why this helps"
|
|
16
|
+
}`, {
|
|
17
|
+
name: 'Corrective RAG',
|
|
18
|
+
description: 'Prompts the LLM to suggest query/strategy corrections when results are poor',
|
|
19
|
+
version: '1.0.0',
|
|
20
|
+
});
|
|
21
|
+
exports.correctiveRAGPrompt = template;
|
|
22
|
+
prompts_1.PromptRegistry.register(exports.CORRECTIVE_RAG_KEY, template);
|
|
23
|
+
//# sourceMappingURL=corrective-rag.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corrective-rag.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/corrective-rag.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,kBAAkB,GAAG,4BAA4B,CAAC;AAO/D,MAAM,QAAQ,GAAG,IAAI,wBAAc,CACjC;;;;;;;;;;EAUA,EACA;IACE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,6EAA6E;IAC1F,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAImB,uCAAmB;AAFxC,wBAAc,CAAC,QAAQ,CAAC,0BAAkB,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const HYDE_KEY = "rag:agentic:hyde";
|
|
3
|
+
export interface HyDEVariables {
|
|
4
|
+
count: string;
|
|
5
|
+
query: string;
|
|
6
|
+
}
|
|
7
|
+
declare const template: PromptTemplate<HyDEVariables>;
|
|
8
|
+
export { template as hydePrompt };
|
|
9
|
+
//# sourceMappingURL=hyde.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyde.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/hyde.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,QAAQ,qBAAqB,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,QAAQ,+BAYb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hydePrompt = exports.HYDE_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.HYDE_KEY = 'rag:agentic:hyde';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`Generate {count} hypothetical documents that would perfectly answer this query.
|
|
7
|
+
Each document should be detailed and comprehensive.
|
|
8
|
+
|
|
9
|
+
Query: {query}
|
|
10
|
+
|
|
11
|
+
Generate {count} hypothetical documents (one per line):`, {
|
|
12
|
+
name: 'HyDE — Hypothetical Document Generation',
|
|
13
|
+
description: 'Generates hypothetical documents for HyDE retrieval augmentation',
|
|
14
|
+
version: '1.0.0',
|
|
15
|
+
});
|
|
16
|
+
exports.hydePrompt = template;
|
|
17
|
+
prompts_1.PromptRegistry.register(exports.HYDE_KEY, template);
|
|
18
|
+
//# sourceMappingURL=hyde.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyde.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/hyde.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,QAAQ,GAAG,kBAAkB,CAAC;AAO3C,MAAM,QAAQ,GAAG,IAAI,wBAAc,CACjC;;;;;wDAKsD,EACtD;IACE,IAAI,EAAE,yCAAyC;IAC/C,WAAW,EAAE,kEAAkE;IAC/E,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAImB,8BAAU;AAF/B,wBAAc,CAAC,QAAQ,CAAC,gBAAQ,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const MULTI_HOP_KEY = "rag:agentic:multi-hop";
|
|
3
|
+
export declare const MULTI_HOP_SYNTHESIZE_KEY = "rag:agentic:multi-hop-synthesize";
|
|
4
|
+
export interface MultiHopVariables {
|
|
5
|
+
query: string;
|
|
6
|
+
resultsStr: string;
|
|
7
|
+
}
|
|
8
|
+
export interface MultiHopSynthesizeVariables {
|
|
9
|
+
originalQuery: string;
|
|
10
|
+
hopsStr: string;
|
|
11
|
+
}
|
|
12
|
+
declare const reasoningTemplate: PromptTemplate<MultiHopVariables>;
|
|
13
|
+
declare const synthesizeTemplate: PromptTemplate<MultiHopSynthesizeVariables>;
|
|
14
|
+
export { reasoningTemplate as multiHopPrompt, synthesizeTemplate as multiHopSynthesizePrompt };
|
|
15
|
+
//# sourceMappingURL=multi-hop.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-hop.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/multi-hop.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,aAAa,0BAA0B,CAAC;AACrD,eAAO,MAAM,wBAAwB,qCAAqC,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,iBAAiB,mCAiBtB,CAAC;AAEF,QAAA,MAAM,kBAAkB,6CAcvB,CAAC;AAKF,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiHopSynthesizePrompt = exports.multiHopPrompt = exports.MULTI_HOP_SYNTHESIZE_KEY = exports.MULTI_HOP_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.MULTI_HOP_KEY = 'rag:agentic:multi-hop';
|
|
6
|
+
exports.MULTI_HOP_SYNTHESIZE_KEY = 'rag:agentic:multi-hop-synthesize';
|
|
7
|
+
const reasoningTemplate = new prompts_1.PromptTemplate(`Analyze these search results and determine if we need more information.
|
|
8
|
+
|
|
9
|
+
Query: {query}
|
|
10
|
+
Results: {resultsStr}
|
|
11
|
+
|
|
12
|
+
Provide analysis in JSON:
|
|
13
|
+
{
|
|
14
|
+
"reasoning": "what we learned from these results",
|
|
15
|
+
"nextQuery": "follow-up query if needed, or null",
|
|
16
|
+
"shouldStop": true/false
|
|
17
|
+
}`, {
|
|
18
|
+
name: 'Multi-Hop Reasoning',
|
|
19
|
+
description: 'Analyses retrieved results and determines if additional hops are needed',
|
|
20
|
+
version: '1.0.0',
|
|
21
|
+
});
|
|
22
|
+
exports.multiHopPrompt = reasoningTemplate;
|
|
23
|
+
const synthesizeTemplate = new prompts_1.PromptTemplate(`Synthesize a final answer from this multi-hop reasoning chain:
|
|
24
|
+
|
|
25
|
+
Original Query: {originalQuery}
|
|
26
|
+
|
|
27
|
+
Reasoning Chain:
|
|
28
|
+
{hopsStr}
|
|
29
|
+
|
|
30
|
+
Provide a comprehensive final answer:`, {
|
|
31
|
+
name: 'Multi-Hop Synthesis',
|
|
32
|
+
description: 'Synthesises a final answer from the full multi-hop reasoning chain',
|
|
33
|
+
version: '1.0.0',
|
|
34
|
+
});
|
|
35
|
+
exports.multiHopSynthesizePrompt = synthesizeTemplate;
|
|
36
|
+
prompts_1.PromptRegistry.register(exports.MULTI_HOP_KEY, reasoningTemplate);
|
|
37
|
+
prompts_1.PromptRegistry.register(exports.MULTI_HOP_SYNTHESIZE_KEY, synthesizeTemplate);
|
|
38
|
+
//# sourceMappingURL=multi-hop.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-hop.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/multi-hop.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,aAAa,GAAG,uBAAuB,CAAC;AACxC,QAAA,wBAAwB,GAAG,kCAAkC,CAAC;AAY3E,MAAM,iBAAiB,GAAG,IAAI,wBAAc,CAC1C;;;;;;;;;;EAUA,EACA;IACE,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,yEAAyE;IACtF,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAqB4B,2CAAc;AAnB5C,MAAM,kBAAkB,GAAG,IAAI,wBAAc,CAC3C;;;;;;;sCAOoC,EACpC;IACE,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,oEAAoE;IACjF,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAKkE,sDAAwB;AAH5F,wBAAc,CAAC,QAAQ,CAAC,qBAAa,EAAE,iBAAiB,CAAC,CAAC;AAC1D,wBAAc,CAAC,QAAQ,CAAC,gCAAwB,EAAE,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const QUERY_PLANNER_KEY = "rag:agentic:query-planner";
|
|
3
|
+
export interface QueryPlannerVariables {
|
|
4
|
+
query: string;
|
|
5
|
+
}
|
|
6
|
+
declare const template: PromptTemplate<QueryPlannerVariables>;
|
|
7
|
+
export { template as queryPlannerPrompt };
|
|
8
|
+
//# sourceMappingURL=query-planner.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-planner.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/query-planner.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,QAAQ,uCAwBb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryPlannerPrompt = exports.QUERY_PLANNER_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.QUERY_PLANNER_KEY = 'rag:agentic:query-planner';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`Decompose the following complex query into simpler sub-queries.
|
|
7
|
+
Each sub-query should be independent and focused on a specific aspect.
|
|
8
|
+
|
|
9
|
+
Query: {query}
|
|
10
|
+
|
|
11
|
+
Provide the decomposition in the following JSON format:
|
|
12
|
+
{
|
|
13
|
+
"subQueries": [
|
|
14
|
+
{
|
|
15
|
+
"id": "1",
|
|
16
|
+
"query": "sub-query text",
|
|
17
|
+
"type": "factual|analytical|comparative|temporal",
|
|
18
|
+
"dependencies": [],
|
|
19
|
+
"priority": 1
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"strategy": "sequential|parallel"
|
|
23
|
+
}`, {
|
|
24
|
+
name: 'Query Planner',
|
|
25
|
+
description: 'Decomposes complex queries into structured sub-queries for multi-step retrieval',
|
|
26
|
+
version: '1.0.0',
|
|
27
|
+
});
|
|
28
|
+
exports.queryPlannerPrompt = template;
|
|
29
|
+
prompts_1.PromptRegistry.register(exports.QUERY_PLANNER_KEY, template);
|
|
30
|
+
//# sourceMappingURL=query-planner.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-planner.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/query-planner.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,iBAAiB,GAAG,2BAA2B,CAAC;AAM7D,MAAM,QAAQ,GAAG,IAAI,wBAAc,CACjC;;;;;;;;;;;;;;;;;EAiBA,EACA;IACE,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,iFAAiF;IAC9F,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAImB,sCAAkB;AAFvC,wBAAc,CAAC,QAAQ,CAAC,yBAAiB,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const QUERY_REWRITER_KEY = "rag:agentic:query-rewriter";
|
|
3
|
+
export interface QueryRewriterVariables {
|
|
4
|
+
maxVariations: string;
|
|
5
|
+
techniques: string;
|
|
6
|
+
query: string;
|
|
7
|
+
}
|
|
8
|
+
declare const template: PromptTemplate<QueryRewriterVariables>;
|
|
9
|
+
export { template as queryRewriterPrompt };
|
|
10
|
+
//# sourceMappingURL=query-rewriter.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-rewriter.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/query-rewriter.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,kBAAkB,+BAA+B,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,QAAQ,wCAWb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryRewriterPrompt = exports.QUERY_REWRITER_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.QUERY_REWRITER_KEY = 'rag:agentic:query-rewriter';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`Generate {maxVariations} variations of this query using these techniques: {techniques}
|
|
7
|
+
|
|
8
|
+
Original Query: {query}
|
|
9
|
+
|
|
10
|
+
Generate {maxVariations} query variations (one per line):`, {
|
|
11
|
+
name: 'Query Rewriter',
|
|
12
|
+
description: 'Generates LLM-based query variations for improved retrieval coverage',
|
|
13
|
+
version: '1.0.0',
|
|
14
|
+
});
|
|
15
|
+
exports.queryRewriterPrompt = template;
|
|
16
|
+
prompts_1.PromptRegistry.register(exports.QUERY_REWRITER_KEY, template);
|
|
17
|
+
//# sourceMappingURL=query-rewriter.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-rewriter.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/query-rewriter.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,kBAAkB,GAAG,4BAA4B,CAAC;AAQ/D,MAAM,QAAQ,GAAG,IAAI,wBAAc,CACjC;;;;0DAIwD,EACxD;IACE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,sEAAsE;IACnF,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAImB,uCAAmB;AAFxC,wBAAc,CAAC,QAAQ,CAAC,0BAAkB,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const SELF_REFLECTIVE_IMPROVE_KEY = "rag:agentic:self-reflective-improve";
|
|
3
|
+
export interface SelfReflectiveImproveVariables {
|
|
4
|
+
query: string;
|
|
5
|
+
issues: string;
|
|
6
|
+
resultsStr: string;
|
|
7
|
+
}
|
|
8
|
+
declare const template: PromptTemplate<SelfReflectiveImproveVariables>;
|
|
9
|
+
export { template as selfReflectiveImprovePrompt };
|
|
10
|
+
//# sourceMappingURL=self-reflective-improve.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-reflective-improve.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/self-reflective-improve.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,2BAA2B,wCAAwC,CAAC;AAEjF,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,QAAQ,gDAkBb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,2BAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selfReflectiveImprovePrompt = exports.SELF_REFLECTIVE_IMPROVE_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.SELF_REFLECTIVE_IMPROVE_KEY = 'rag:agentic:self-reflective-improve';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`The following search results have quality issues. Suggest an improved query or retrieval strategy.
|
|
7
|
+
|
|
8
|
+
Original Query: {query}
|
|
9
|
+
Quality Issues: {issues}
|
|
10
|
+
Current Results: {resultsStr}
|
|
11
|
+
|
|
12
|
+
Suggest improvements in JSON format:
|
|
13
|
+
{
|
|
14
|
+
"improvedQuery": "better query",
|
|
15
|
+
"strategy": "similarity|hybrid|mmr",
|
|
16
|
+
"reasoning": "why this would be better"
|
|
17
|
+
}`, {
|
|
18
|
+
name: 'Self-Reflective Improvement',
|
|
19
|
+
description: 'Suggests query/strategy improvements based on quality assessment issues',
|
|
20
|
+
version: '1.0.0',
|
|
21
|
+
});
|
|
22
|
+
exports.selfReflectiveImprovePrompt = template;
|
|
23
|
+
prompts_1.PromptRegistry.register(exports.SELF_REFLECTIVE_IMPROVE_KEY, template);
|
|
24
|
+
//# sourceMappingURL=self-reflective-improve.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-reflective-improve.prompt.js","sourceRoot":"","sources":["../../../src/prompts/agentic/self-reflective-improve.prompt.ts"],"names":[],"mappings":";;;AAAA,8CAAkE;AAErD,QAAA,2BAA2B,GAAG,qCAAqC,CAAC;AAQjF,MAAM,QAAQ,GAAG,IAAI,wBAAc,CACjC;;;;;;;;;;;EAWA,EACA;IACE,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,yEAAyE;IACtF,OAAO,EAAE,OAAO;CACjB,CACF,CAAC;AAImB,+CAA2B;AAFhD,wBAAc,CAAC,QAAQ,CAAC,mCAA2B,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PromptTemplate } from '@hazeljs/prompts';
|
|
2
|
+
export declare const SELF_REFLECTIVE_KEY = "rag:agentic:self-reflective";
|
|
3
|
+
export interface SelfReflectiveVariables {
|
|
4
|
+
query: string;
|
|
5
|
+
resultsStr: string;
|
|
6
|
+
}
|
|
7
|
+
declare const template: PromptTemplate<SelfReflectiveVariables>;
|
|
8
|
+
export { template as selfReflectivePrompt };
|
|
9
|
+
//# sourceMappingURL=self-reflective.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-reflective.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/agentic/self-reflective.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,mBAAmB,gCAAgC,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,QAAQ,yCA2Bb,CAAC;AAIF,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selfReflectivePrompt = exports.SELF_REFLECTIVE_KEY = void 0;
|
|
4
|
+
const prompts_1 = require("@hazeljs/prompts");
|
|
5
|
+
exports.SELF_REFLECTIVE_KEY = 'rag:agentic:self-reflective';
|
|
6
|
+
const template = new prompts_1.PromptTemplate(`Evaluate the quality of these search results for the given query.
|
|
7
|
+
|
|
8
|
+
Query: {query}
|
|
9
|
+
|
|
10
|
+
Results: {resultsStr}
|
|
11
|
+
|
|
12
|
+
Assess the following aspects (0-1 scale):
|
|
13
|
+
1. Relevance: How relevant are the results to the query?
|
|
14
|
+
2. Completeness: Do the results fully answer the query?
|
|
15
|
+
3. Accuracy: Are the results factually accurate?
|
|
16
|
+
4. Clarity: Are the results clear and well-structured?
|
|
17
|
+
|
|
18
|
+
Provide assessment in JSON format:
|
|
19
|
+
{
|
|
20
|
+
"relevance": 0.0-1.0,
|
|
21
|
+
"completeness": 0.0-1.0,
|
|
22
|
+
"accuracy": 0.0-1.0,
|
|
23
|
+
"clarity": 0.0-1.0,
|
|
24
|
+
"issues": ["issue1", "issue2"]
|
|
25
|
+
}`, {
|
|
26
|
+
name: 'Self-Reflective Quality Assessment',
|
|
27
|
+
description: 'Evaluates retrieval quality across relevance, completeness, accuracy, and clarity',
|
|
28
|
+
version: '1.0.0',
|
|
29
|
+
});
|
|
30
|
+
exports.selfReflectivePrompt = template;
|
|
31
|
+
prompts_1.PromptRegistry.register(exports.SELF_REFLECTIVE_KEY, template);
|
|
32
|
+
//# sourceMappingURL=self-reflective.prompt.js.map
|