@devilsdev/rag-pipeline-utils 2.0.1 → 2.1.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/.eslintrc.json +24 -18
- package/.github/workflows/docs-deploy.yml +20 -10
- package/.github/workflows/publish-release-blog.yml +8 -6
- package/.github/workflows/storybook-deploy.yml +33 -0
- package/.storybook/main.js +20 -0
- package/.storybook/preview.js +13 -0
- package/CHANGELOG.md +7 -0
- package/README.md +1 -1
- package/docs-site/.plaiceholder-cache/img_hero.jpg.json +1 -0
- package/docs-site/.plaiceholder-cache/img_logo.png.json +1 -0
- package/docs-site/.storybook/preview.js +8 -0
- package/docs-site/blog/2025-04-17-release-v2.0.2.md +13 -0
- package/docs-site/blog/2025-04-18-architecture-overview.md +34 -0
- package/docs-site/blog/2025-04-19-prompt-engineering-best-practices.md +31 -0
- package/docs-site/blog/2025-04-20-image-showcase.md +23 -0
- package/docs-site/blog/authors.yml +2 -2
- package/docs-site/blog/tags.yml +23 -21
- package/docs-site/docs/Architecture.md +4 -4
- package/docs-site/docs/CLI.md +3 -3
- package/docs-site/docs/Evaluation.md +7 -7
- package/docs-site/docs/FAQ.md +6 -6
- package/docs-site/docs/Introduction.md +9 -9
- package/docs-site/docs/Plugins.md +3 -3
- package/docs-site/docs/Tutorials.md +106 -0
- package/docs-site/docs/Usage.md +5 -5
- package/docs-site/docs/Use-Cases.md +77 -0
- package/docs-site/docs/components/BlogCardExample.mdx +7 -0
- package/docs-site/docusaurus.config.js +3 -2
- package/docs-site/package-lock.json +487 -2
- package/docs-site/package.json +7 -3
- package/docs-site/scripts/generate-placeholders.js +17 -0
- package/docs-site/scripts/watch-images.js +40 -0
- package/docs-site/sidebar-snippet.txt +5 -0
- package/docs-site/sidebars.js +6 -1
- package/docs-site/src/components/BlogCard.jsx +31 -0
- package/docs-site/src/components/BlogCard.stories.jsx +34 -0
- package/docs-site/src/components/BlogImage.jsx +58 -0
- package/docs-site/src/components/BlogImage.stories.jsx +20 -0
- package/docs-site/static/img/authors/ali.jpg +0 -0
- package/docs-site/static/img/hero.jpg +0 -0
- package/docs-site/utils/image.js +19 -0
- package/package.json +19 -3
- package/src/stories/Button.jsx +39 -0
- package/src/stories/Button.stories.js +49 -0
- package/src/stories/Configure.mdx +364 -0
- package/src/stories/Header.jsx +56 -0
- package/src/stories/Header.stories.js +29 -0
- package/src/stories/Page.jsx +69 -0
- package/src/stories/Page.stories.js +28 -0
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +1 -0
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +1 -0
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +1 -0
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +1 -0
- package/src/stories/assets/youtube.svg +1 -0
- package/src/stories/button.css +30 -0
- package/src/stories/header.css +32 -0
- package/src/stories/page.css +68 -0
- package/docs-site/docs/USE_CASES.md +0 -0
- /package/{USE_CASES.md → Use-Cases.md} +0 -0
package/.eslintrc.json
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
"env": {
|
|
3
|
+
"es2022": true,
|
|
4
|
+
"node": true,
|
|
5
|
+
"jest": true
|
|
6
|
+
},
|
|
7
|
+
"extends": [
|
|
8
|
+
"eslint:recommended",
|
|
9
|
+
"plugin:storybook/recommended"
|
|
10
|
+
],
|
|
11
|
+
"parserOptions": {
|
|
12
|
+
"ecmaVersion": "latest",
|
|
13
|
+
"sourceType": "module"
|
|
14
|
+
},
|
|
15
|
+
"rules": {
|
|
16
|
+
"no-unused-vars": "warn",
|
|
17
|
+
"no-console": "off",
|
|
18
|
+
"semi": [
|
|
19
|
+
"error",
|
|
20
|
+
"always"
|
|
9
21
|
],
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
"rules": {
|
|
15
|
-
"no-unused-vars": "warn",
|
|
16
|
-
"no-console": "off",
|
|
17
|
-
"semi": ["error", "always"],
|
|
18
|
-
"quotes": ["error", "single"]
|
|
19
|
-
}
|
|
22
|
+
"quotes": [
|
|
23
|
+
"error",
|
|
24
|
+
"single"
|
|
25
|
+
]
|
|
20
26
|
}
|
|
21
|
-
|
|
27
|
+
}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
# .github/workflows/docs-deploy.yml
|
|
2
|
+
# Version: 1.1.0
|
|
3
|
+
# Description: Deploys Docusaurus to GitHub Pages on changes to documentation files
|
|
4
|
+
# Author: Ali Kahwaji
|
|
5
|
+
|
|
6
|
+
name: 📚 Deploy Docusaurus Docs
|
|
2
7
|
|
|
3
8
|
on:
|
|
4
9
|
push:
|
|
5
10
|
branches: [main]
|
|
6
11
|
paths:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
- 'docs-site/**'
|
|
13
|
+
- 'docs/**'
|
|
14
|
+
- 'blog/**'
|
|
15
|
+
- 'sidebars.js'
|
|
16
|
+
- 'docusaurus.config.js'
|
|
17
|
+
- 'package.json'
|
|
11
18
|
|
|
12
19
|
jobs:
|
|
13
20
|
deploy:
|
|
21
|
+
name: Deploy to GitHub Pages
|
|
14
22
|
runs-on: ubuntu-latest
|
|
23
|
+
|
|
15
24
|
steps:
|
|
16
|
-
- name: 📥 Checkout
|
|
25
|
+
- name: 📥 Checkout repository
|
|
17
26
|
uses: actions/checkout@v4
|
|
18
27
|
|
|
19
28
|
- name: ⚙️ Setup Node.js
|
|
@@ -24,13 +33,14 @@ jobs:
|
|
|
24
33
|
- name: 📦 Install dependencies
|
|
25
34
|
run: npm ci
|
|
26
35
|
|
|
27
|
-
- name: 🛠️ Build
|
|
28
|
-
run: npm run build
|
|
36
|
+
- name: 🛠️ Build Docusaurus site
|
|
37
|
+
run: npm run docs:build
|
|
29
38
|
|
|
30
39
|
- name: 🚀 Deploy to GitHub Pages
|
|
31
40
|
uses: peaceiris/actions-gh-pages@v4
|
|
32
41
|
with:
|
|
33
42
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
34
43
|
publish_dir: ./docs-site/build
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
publish_branch: gh-pages
|
|
45
|
+
user_name: github-actions[bot]
|
|
46
|
+
user_email: 41898282+github-actions[bot]@users.noreply.github.com
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# .github/workflows/publish-release-blog.yml
|
|
2
|
-
# Version: 1.
|
|
2
|
+
# Version: 1.1.0
|
|
3
3
|
# Description: Auto-publish blog post from CHANGELOG or prepared .md after NPM release
|
|
4
4
|
# Author: Ali Kahwaji
|
|
5
5
|
|
|
@@ -15,8 +15,11 @@ jobs:
|
|
|
15
15
|
runs-on: ubuntu-latest
|
|
16
16
|
|
|
17
17
|
steps:
|
|
18
|
-
- name: ⬇️ Checkout
|
|
18
|
+
- name: ⬇️ Checkout main branch
|
|
19
19
|
uses: actions/checkout@v4
|
|
20
|
+
with:
|
|
21
|
+
ref: main # ✅ Ensures blog is committed to 'main'
|
|
22
|
+
fetch-depth: 0
|
|
20
23
|
|
|
21
24
|
- name: 🔧 Set up Node.js
|
|
22
25
|
uses: actions/setup-node@v4
|
|
@@ -36,13 +39,12 @@ jobs:
|
|
|
36
39
|
echo "tags: [release, changelog]" >> $FILE
|
|
37
40
|
echo "---" >> $FILE
|
|
38
41
|
echo >> $FILE
|
|
39
|
-
|
|
40
42
|
echo "RAG Pipeline Utils v${VERSION} is now available on NPM!" >> $FILE
|
|
41
43
|
echo >> $FILE
|
|
42
44
|
echo "#### Highlights" >> $FILE
|
|
43
|
-
echo "-
|
|
44
|
-
echo "- Version bump: ${VERSION}" >> $FILE
|
|
45
|
-
echo "-
|
|
45
|
+
echo "- 🚀 Auto-published blog from GitHub release" >> $FILE
|
|
46
|
+
echo "- 📦 Version bump: ${VERSION}" >> $FILE
|
|
47
|
+
echo "- 📘 See CHANGELOG.md for full details" >> $FILE
|
|
46
48
|
|
|
47
49
|
- name: 📋 Commit blog post
|
|
48
50
|
uses: stefanzweifel/git-auto-commit-action@v5
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# .github/workflows/storybook-deploy.yml
|
|
2
|
+
name: 📘 Deploy Storybook
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- 'docs-site/src/components/**'
|
|
9
|
+
- '.storybook/**'
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
deploy-storybook:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Setup Node
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: 20
|
|
22
|
+
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: npm ci
|
|
25
|
+
|
|
26
|
+
- name: Build Storybook
|
|
27
|
+
run: npm run build-storybook
|
|
28
|
+
|
|
29
|
+
- name: Deploy to GitHub Pages
|
|
30
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
31
|
+
with:
|
|
32
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
33
|
+
publish_dir: ./storybook-static
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/** @type { import('@storybook/react-webpack5').StorybookConfig } */
|
|
4
|
+
const config = {
|
|
5
|
+
"stories": [
|
|
6
|
+
"../src/**/*.mdx",
|
|
7
|
+
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"
|
|
8
|
+
],
|
|
9
|
+
"addons": [
|
|
10
|
+
"@storybook/addon-webpack5-compiler-swc",
|
|
11
|
+
"@storybook/addon-essentials",
|
|
12
|
+
"@storybook/addon-onboarding",
|
|
13
|
+
"@storybook/addon-interactions"
|
|
14
|
+
],
|
|
15
|
+
"framework": {
|
|
16
|
+
"name": "@storybook/react-webpack5",
|
|
17
|
+
"options": {}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export default config;
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
# [2.1.0](https://github.com/DevilsDev/rag-pipeline-utils/compare/v2.0.2...v2.1.0) (2025-04-18)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **docs-site:** add Storybook integration with BlogCard + LQIP image automation ([80965b8](https://github.com/DevilsDev/rag-pipeline-utils/commit/80965b8ef1d26372852ee0f39b56a73f337e0cea))
|
|
9
|
+
|
|
3
10
|
## [2.0.1](https://github.com/DevilsDev/rag-pipeline-utils/compare/v2.0.0...v2.0.1) (2025-04-17)
|
|
4
11
|
|
|
5
12
|
|
package/README.md
CHANGED
|
@@ -120,7 +120,7 @@ Each plugin must implement the following interface:
|
|
|
120
120
|
|
|
121
121
|
## Use Cases
|
|
122
122
|
|
|
123
|
-
Explore real-world DevX-focused examples in [USE_CASES.md](./
|
|
123
|
+
Explore real-world DevX-focused examples in [USE_CASES.md](./Use-Cases.md), including:
|
|
124
124
|
|
|
125
125
|
- Mock-driven plugin TDD
|
|
126
126
|
- CI-based interface validation
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAIAAADwyuo0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAGklEQVR4nGPILapfuW5vblF9blE9A4QD4QMApeANEwX0WNkAAAAASUVORK5CYII="}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAT0lEQVR4nAFEALv/AIXNrxKW5b44TKykITGQkA0Atv/dK37FpoIVaGhbSqqbIQAPMjMPAAcXJAAHGTkXJjUQABw3QRQOJT0bFCA3HBUiNRZrJhOUbaRuqQAAAABJRU5ErkJggg=="}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: release-v2.0.2
|
|
3
|
+
title: ✨ Version v2.0.2 Released
|
|
4
|
+
authors: [ali]
|
|
5
|
+
tags: [release, changelog]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
RAG Pipeline Utils vv2.0.2 is now available on NPM!
|
|
9
|
+
|
|
10
|
+
#### Highlights
|
|
11
|
+
- 🚀 Auto-published blog from GitHub release
|
|
12
|
+
- 📦 Version bump: v2.0.2
|
|
13
|
+
- 📘 See CHANGELOG.md for full details
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: architecture-overview
|
|
3
|
+
title: RAG Pipeline Architecture Overview
|
|
4
|
+
authors: [ali]
|
|
5
|
+
tags: [architecture, design, modular]
|
|
6
|
+
description: A deep dive into the architecture powering RAG Pipeline Utils — from plugin interfaces to flexible pipeline composition.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Welcome to the first post in our deep dive blog series on **RAG Pipeline Utils** — a fully modular, testable, and production-grade framework for building retrieval-augmented generation pipelines.
|
|
10
|
+
|
|
11
|
+
## Why Modular RAG?
|
|
12
|
+
|
|
13
|
+
Most RAG tools are tightly coupled or opinionated. We built this utility to empower dev teams with:
|
|
14
|
+
|
|
15
|
+
- Swappable plugins for loaders, embedders, retrievers, LLMs
|
|
16
|
+
- CLI tools for evaluation & schema validation
|
|
17
|
+
- Docusaurus-based docs with versioned releases
|
|
18
|
+
- Full CI/CD and automated NPM releases
|
|
19
|
+
|
|
20
|
+
## Architecture Highlights
|
|
21
|
+
|
|
22
|
+
- `PluginRegistry`: Registers and resolves all components.
|
|
23
|
+
- `validateSchema`: Enforces `.ragrc.json` format across all pipelines.
|
|
24
|
+
- `mocks/`: Local test doubles for every plugin interface.
|
|
25
|
+
- `__tests__/`: Dual-layer coverage — unit + integration.
|
|
26
|
+
|
|
27
|
+
## Try It Now
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install @devilsdev/rag-pipeline-utils
|
|
31
|
+
npx rag-utils run --config .ragrc.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Stay tuned for future posts including CI validation, RAG evaluation tooling, and how to build your own dashboard for prompt scoring.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Prompt Engineering Best Practices for RAG"
|
|
3
|
+
slug: prompt-engineering-best-practices
|
|
4
|
+
authors: [ali]
|
|
5
|
+
tags: [prompt-engineering, design]
|
|
6
|
+
image: /img/social/prompt-engineering-card.png
|
|
7
|
+
description: "A deep dive into prompt optimization strategies for RAG pipelines using modular design."
|
|
8
|
+
---
|
|
9
|
+
Prompt engineering is a critical lever in maximizing the effectiveness of Retrieval-Augmented Generation (RAG) systems. In this article, we explore:
|
|
10
|
+
|
|
11
|
+
## Prompting in Modular RAG Pipelines
|
|
12
|
+
|
|
13
|
+
Your `rag-pipeline-utils` system allows swappable LLM backends and encourages prompt templates as part of the reranker or query orchestrator.
|
|
14
|
+
|
|
15
|
+
- Always define clear input/output expectations
|
|
16
|
+
- Leverage JSON or YAML-based structured prompts where applicable
|
|
17
|
+
- Evaluate with real examples using the CLI + evaluation framework
|
|
18
|
+
|
|
19
|
+
## What to Include in Prompts
|
|
20
|
+
|
|
21
|
+
- **Context injection**: retrieved chunks, metadata, source provenance
|
|
22
|
+
- **Task framing**: instruction-oriented for LLM consistency
|
|
23
|
+
- **Scoring heuristics**: if doing ranking, consider scoring guidelines
|
|
24
|
+
|
|
25
|
+
## Prompt as Plugin (Future Feature)
|
|
26
|
+
|
|
27
|
+
Eventually, we plan to support `promptTemplate` as a plugin type – enabling reusable prompt logic alongside `loader`, `retriever`, etc.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
Stay tuned for our upcoming prompt debugger dashboard, and follow [releases](/blog/tags/release) for versioned updates.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: image-showcase
|
|
3
|
+
title: Blog Image Component Showcase
|
|
4
|
+
authors: [ali]
|
|
5
|
+
tags: [tutorials, design, image]
|
|
6
|
+
description: Demonstrating LQIP-powered blog images using the BlogImage component.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
import BlogImage from '@site/src/components/BlogImage';
|
|
10
|
+
|
|
11
|
+
This post demonstrates the reusable **`<BlogImage />`** component, which displays optimized blurred placeholders (LQIPs) for faster rendering.
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
<BlogImage srcKey="img_hero" alt="Hero demonstration" />
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Benefits Recap
|
|
20
|
+
|
|
21
|
+
- Blurred placeholder loading for faster perception
|
|
22
|
+
- Fallback to default cache when missing
|
|
23
|
+
- Ready for automation via `watch-images.js`
|
package/docs-site/blog/tags.yml
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
permalink: /facebook
|
|
4
|
-
description: Facebook tag description
|
|
1
|
+
# docs-site/blog/tags.yml
|
|
2
|
+
# Description: Central tag definitions for Docusaurus blog filtering and grouping
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
permalink: /
|
|
9
|
-
description: Hello tag description
|
|
4
|
+
- label: Release
|
|
5
|
+
slug: release
|
|
6
|
+
permalink: /blog/tags/release
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
permalink: /
|
|
14
|
-
description: Docusaurus tag description
|
|
8
|
+
- label: Architecture
|
|
9
|
+
slug: architecture
|
|
10
|
+
permalink: /blog/tags/architecture
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
permalink: /
|
|
19
|
-
description: Hola tag description
|
|
12
|
+
- label: Prompt Engineering
|
|
13
|
+
slug: prompt-engineering
|
|
14
|
+
permalink: /blog/tags/prompt-engineering
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
permalink: /blog/tags/
|
|
16
|
+
- label: Evaluation
|
|
17
|
+
slug: evaluation
|
|
18
|
+
permalink: /blog/tags/evaluation
|
|
19
|
+
|
|
20
|
+
- label: Tutorials
|
|
21
|
+
slug: tutorials
|
|
22
|
+
permalink: /blog/tags/tutorials
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
- label: Changelog
|
|
25
|
+
slug: changelog
|
|
27
26
|
permalink: /blog/tags/changelog
|
|
28
27
|
|
|
28
|
+
- label: Design
|
|
29
|
+
slug: design
|
|
30
|
+
permalink: /blog/tags/design
|
|
@@ -4,7 +4,7 @@ This page outlines the internal architecture of the RAG pipeline utilities, emph
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Core Design Philosophy
|
|
8
8
|
|
|
9
9
|
The architecture adheres to enterprise-grade practices:
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ The architecture adheres to enterprise-grade practices:
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Layered Components
|
|
20
20
|
|
|
21
21
|
```
|
|
22
22
|
+-------------------------+
|
|
@@ -36,7 +36,7 @@ The architecture adheres to enterprise-grade practices:
|
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Core Interfaces
|
|
40
40
|
|
|
41
41
|
Each plugin is registered via the `PluginRegistry` and looked up by key.
|
|
42
42
|
|
|
@@ -65,7 +65,7 @@ interface Retriever {
|
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
68
|
-
##
|
|
68
|
+
## DAG Support
|
|
69
69
|
|
|
70
70
|
The `dag-engine.js` module supports chaining multiple components:
|
|
71
71
|
- Example: Summarize → Retrieve → Rerank → LLM
|
package/docs-site/docs/CLI.md
CHANGED
|
@@ -14,7 +14,7 @@ npx rag-pipeline <command>
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Commands
|
|
18
18
|
|
|
19
19
|
### `ingest`
|
|
20
20
|
```bash
|
|
@@ -42,7 +42,7 @@ rag-pipeline rerank "What is RAG?" --retriever pinecone
|
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
##
|
|
45
|
+
## `.ragrc.json` Config
|
|
46
46
|
|
|
47
47
|
Defaults can be set in a file:
|
|
48
48
|
```json
|
|
@@ -57,7 +57,7 @@ Defaults can be set in a file:
|
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## Docker Usage
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
docker build -t rag-pipeline .
|
|
@@ -4,7 +4,7 @@ This module allows you to evaluate the quality of generated LLM responses in a R
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Objective
|
|
8
8
|
|
|
9
9
|
Quantify how well the pipeline performs on question-answer pairs using:
|
|
10
10
|
- **BLEU**: Precision on matching tokens
|
|
@@ -13,7 +13,7 @@ Quantify how well the pipeline performs on question-answer pairs using:
|
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Dataset Format
|
|
17
17
|
|
|
18
18
|
Each entry in your JSON dataset should include:
|
|
19
19
|
|
|
@@ -28,20 +28,20 @@ Saved as: `sample-eval-dataset.json`
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## CLI Evaluation
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
rag-pipeline evaluate ./fixtures/sample-eval-dataset.json
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Outputs:
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
38
|
+
- Pass/fail per item
|
|
39
|
+
- BLEU/ROUGE scores
|
|
40
|
+
- Aggregated metrics
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
-
##
|
|
44
|
+
## Dashboard Visualization
|
|
45
45
|
|
|
46
46
|
Use the React dashboard under `/public`:
|
|
47
47
|
|
package/docs-site/docs/FAQ.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# FAQ
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### Can I use this with my own vector database?
|
|
4
4
|
Yes! You can implement the `Retriever` interface and register it:
|
|
5
5
|
```ts
|
|
6
6
|
registry.register('retriever', 'mydb', new MyRetriever());
|
|
@@ -9,17 +9,17 @@ Then use it via CLI or `.ragrc.json`.
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
###
|
|
12
|
+
### Is streaming LLM response supported?
|
|
13
13
|
Yes. LLM runners can yield async output tokens. This is handled internally via `AsyncIterable` in compatible models.
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
###
|
|
17
|
+
### How do I evaluate performance?
|
|
18
18
|
Use `rag-pipeline evaluate dataset.json` or open the dashboard at `http://localhost:3000` to visualize BLEU/ROUGE and pass rates.
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
###
|
|
22
|
+
### What file types can I ingest?
|
|
23
23
|
Currently supported:
|
|
24
24
|
- `.pdf` (mocked)
|
|
25
25
|
- `.md`
|
|
@@ -29,7 +29,7 @@ Currently supported:
|
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
-
###
|
|
32
|
+
### Can I rerank results using a local model?
|
|
33
33
|
Yes, as long as your local LLM implements:
|
|
34
34
|
```ts
|
|
35
35
|
llm.generate(prompt, context): Promise<string>
|
|
@@ -38,7 +38,7 @@ Use it to power `LLMReranker`.
|
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### How do I contribute?
|
|
42
42
|
Fork the repo → add your plugin or CLI feature → test → submit PR.
|
|
43
43
|
|
|
44
44
|
---
|
|
@@ -4,11 +4,11 @@ sidebar_position: 1
|
|
|
4
4
|
|
|
5
5
|
# Introduction
|
|
6
6
|
|
|
7
|
-
Welcome to **@
|
|
7
|
+
Welcome to **@DevilsDev/rag-pipeline-utils**, a modular Node.js toolkit for building scalable, pluggable Retrieval-Augmented Generation (RAG) systems.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## What is RAG?
|
|
12
12
|
|
|
13
13
|
RAG combines information retrieval with large language models to enhance generation with factual grounding. It typically involves:
|
|
14
14
|
|
|
@@ -19,7 +19,7 @@ This project provides all the composable parts to build your own RAG pipeline.
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## Why Use This Toolkit?
|
|
23
23
|
|
|
24
24
|
- **Plugin-based**: Swap in your own loaders, retrievers, LLMs
|
|
25
25
|
- **Streaming-ready**: Async-friendly, token-by-token output
|
|
@@ -29,7 +29,7 @@ This project provides all the composable parts to build your own RAG pipeline.
|
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Architecture
|
|
33
33
|
|
|
34
34
|
Each RAG pipeline includes:
|
|
35
35
|
|
|
@@ -43,13 +43,13 @@ The pipeline can be used via code or via CLI commands.
|
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## Status
|
|
47
47
|
|
|
48
48
|
This project is:
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
49
|
+
- Production-ready
|
|
50
|
+
- Covered by unit/integration tests
|
|
51
|
+
- Compatible with Node.js `>=18`
|
|
52
|
+
- Published to npm under `DevilsDev`
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
@@ -4,7 +4,7 @@ The toolkit is fully modular. You can inject your own loaders, retrievers, embed
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Plugin Architecture
|
|
8
8
|
|
|
9
9
|
All plugins follow a strict interface pattern. Each is registered under a namespace using the plugin registry:
|
|
10
10
|
|
|
@@ -21,7 +21,7 @@ You can register plugins for:
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## Loader Example
|
|
25
25
|
|
|
26
26
|
```ts
|
|
27
27
|
class MyMarkdownLoader {
|
|
@@ -39,7 +39,7 @@ registry.register('loader', 'md', new MyMarkdownLoader());
|
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
|
-
##
|
|
42
|
+
## Runtime Override
|
|
43
43
|
|
|
44
44
|
CLI and API will resolve plugin names from `pluginRegistry`. Use:
|
|
45
45
|
|