vibes-plug 2.11.0 → 3.9.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.
Files changed (181) hide show
  1. package/.claude/rules/vibes-plug-core.md +5 -0
  2. package/.cursor/rules/vibes-plug-core.mdc +8 -3
  3. package/.cursorrules +9 -3
  4. package/AGENTS.md +25 -4
  5. package/CHANGELOG.md +151 -0
  6. package/CLAUDE.md +15 -8
  7. package/README.md +216 -641
  8. package/bin/vibes.mjs +1104 -0
  9. package/index.js +1 -1
  10. package/package.json +11 -3
  11. package/plugin.json +4 -3
  12. package/scripts/check-anti-slop.js +53 -0
  13. package/scripts/check-anti-slop.mjs +53 -0
  14. package/scripts/generate_swarm_gif.py +2 -2
  15. package/scripts/install.js +3 -1
  16. package/scripts/update_skills.js +1 -1
  17. package/scripts/update_skills.mjs +86 -0
  18. package/scripts/validate-skills.mjs +111 -0
  19. package/skills/accessibility-testing-expert/SKILL.md +117 -116
  20. package/skills/affective-computing-emotion-ai/SKILL.md +83 -0
  21. package/skills/agentic-coding-workflow-expert/SKILL.md +297 -0
  22. package/skills/agentic-memory-architect/SKILL.md +52 -0
  23. package/skills/agentic-micro-economy-architect/SKILL.md +92 -0
  24. package/skills/ai-llm-integration-expert/SKILL.md +330 -187
  25. package/skills/ai-media-generation-expert/SKILL.md +173 -172
  26. package/skills/ai-prompt-engineering-expert/SKILL.md +170 -50
  27. package/skills/ai-safety-governance-expert/SKILL.md +223 -0
  28. package/skills/angular-expert/SKILL.md +149 -148
  29. package/skills/anti-slop/SKILL.md +134 -0
  30. package/skills/api-design-expert/SKILL.md +4 -3
  31. package/skills/api-gateway-proxy-expert/SKILL.md +3 -2
  32. package/skills/app-analyzer-optimizer/SKILL.md +4 -3
  33. package/skills/apple-ecosystem-expert/SKILL.md +6 -5
  34. package/skills/astro-framework-expert/SKILL.md +201 -200
  35. package/skills/async-queue-temporal-expert/SKILL.md +218 -240
  36. package/skills/authentication-identity-expert/SKILL.md +79 -184
  37. package/skills/autonomous-red-teamer/SKILL.md +338 -203
  38. package/skills/autonomous-tdd-debugger/SKILL.md +6 -5
  39. package/skills/biome-linter-formatter-expert/SKILL.md +90 -89
  40. package/skills/blockchain-web3-expert/SKILL.md +116 -115
  41. package/skills/brainstorming/SKILL.md +392 -377
  42. package/skills/browser-automation-expert/SKILL.md +260 -222
  43. package/skills/bun-runtime-expert/SKILL.md +5 -4
  44. package/skills/chatbot-messaging-expert/SKILL.md +115 -114
  45. package/skills/ci-cd-devops-architect/SKILL.md +3 -2
  46. package/skills/cloud-hosting-expert/SKILL.md +5 -4
  47. package/skills/coderabbit/SKILL.md +5 -4
  48. package/skills/compliance-gdpr-privacy-expert/SKILL.md +3 -2
  49. package/skills/composable-mach-architect/SKILL.md +338 -0
  50. package/skills/cron-scheduler-expert/SKILL.md +5 -4
  51. package/skills/data-pipeline-etl-expert/SKILL.md +3 -2
  52. package/skills/data-telemetry-expert/SKILL.md +5 -4
  53. package/skills/data-visualization-expert/SKILL.md +155 -154
  54. package/skills/database-orm-expert/SKILL.md +102 -240
  55. package/skills/deep-research-analyst/SKILL.md +182 -0
  56. package/skills/dependency-upgrade-migrator/SKILL.md +11 -10
  57. package/skills/design-system-architect/SKILL.md +34 -3
  58. package/skills/desktop-electron-expert/SKILL.md +129 -128
  59. package/skills/documentation-site-expert/SKILL.md +60 -59
  60. package/skills/doku-mcp-server/SKILL.md +5 -4
  61. package/skills/doku-payment-gateway/SKILL.md +250 -232
  62. package/skills/domain-driven-design-expert/SKILL.md +3 -2
  63. package/skills/e2e-testing-expert/SKILL.md +5 -4
  64. package/skills/ecommerce-expert/SKILL.md +88 -87
  65. package/skills/email-notification-expert/SKILL.md +35 -7
  66. package/skills/ephemeral-generative-ui-architect/SKILL.md +88 -0
  67. package/skills/error-resilience-expert/SKILL.md +26 -4
  68. package/skills/event-driven-architect/SKILL.md +5 -4
  69. package/skills/feature-flag-analytics-expert/SKILL.md +3 -2
  70. package/skills/file-upload-media-expert/SKILL.md +5 -4
  71. package/skills/firebase-security-expert/SKILL.md +5 -4
  72. package/skills/form-validation-expert/SKILL.md +7 -6
  73. package/skills/frontier-ai-models-expert/SKILL.md +116 -0
  74. package/skills/fullstack-expert/SKILL.md +68 -144
  75. package/skills/gemini-agent-booster/SKILL.md +248 -172
  76. package/skills/geospatial-maps-expert/SKILL.md +81 -80
  77. package/skills/global-a11y-i18n-expert/SKILL.md +5 -4
  78. package/skills/glsl-shader-expert/SKILL.md +155 -71
  79. package/skills/go-programming-expert/SKILL.md +5 -4
  80. package/skills/graph-rag-knowledge-expert/SKILL.md +201 -159
  81. package/skills/graphql-apollo-expert/SKILL.md +5 -4
  82. package/skills/headless-cms-expert/SKILL.md +182 -181
  83. package/skills/hig/SKILL.md +5 -4
  84. package/skills/js-backend-expert/SKILL.md +219 -218
  85. package/skills/legacy-code-translator/SKILL.md +6 -5
  86. package/skills/llm-finops-router/SKILL.md +52 -0
  87. package/skills/local-slm-edge-ai-expert/SKILL.md +168 -167
  88. package/skills/logging-error-tracking-expert/SKILL.md +5 -4
  89. package/skills/mcp-server-architect/SKILL.md +316 -294
  90. package/skills/micro-frontend-architect/SKILL.md +5 -4
  91. package/skills/mobile-expo-expert/SKILL.md +5 -4
  92. package/skills/modern-css-native-expert/SKILL.md +190 -189
  93. package/skills/monorepo-architect/SKILL.md +5 -4
  94. package/skills/mpa-orchestrator/SKILL.md +41 -4
  95. package/skills/multi-agent-orchestration/SKILL.md +388 -254
  96. package/skills/mvc-expert/SKILL.md +5 -4
  97. package/skills/n8n-automation-expert/SKILL.md +90 -89
  98. package/skills/nextjs-app-router-expert/SKILL.md +3 -2
  99. package/skills/openapi-swagger-codegen-expert/SKILL.md +4 -3
  100. package/skills/payment-gateway-expert/SKILL.md +131 -128
  101. package/skills/pdf-document-generation-expert/SKILL.md +92 -91
  102. package/skills/performance-web-vitals/SKILL.md +5 -4
  103. package/skills/post-quantum-crypto-migrator/SKILL.md +3 -2
  104. package/skills/prd-architect/SKILL.md +85 -109
  105. package/skills/proactive-background-watcher/SKILL.md +5 -4
  106. package/skills/production-ready-hardener/SKILL.md +25 -27
  107. package/skills/pwa-offline-first-expert/SKILL.md +227 -185
  108. package/skills/pydantic-ai-expert/SKILL.md +162 -0
  109. package/skills/python-programming-expert/SKILL.md +5 -4
  110. package/skills/rate-limit-abuse-prevention/SKILL.md +5 -4
  111. package/skills/realtime-collaboration-expert/SKILL.md +3 -2
  112. package/skills/rich-text-editor-expert/SKILL.md +178 -177
  113. package/skills/rust-programming-expert/SKILL.md +5 -4
  114. package/skills/saas-architect/SKILL.md +155 -0
  115. package/skills/saas-billing/SKILL.md +394 -382
  116. package/skills/saas-multi-tenant/SKILL.md +7 -6
  117. package/skills/scalability-clean-code/SKILL.md +5 -4
  118. package/skills/search-engine-expert/SKILL.md +90 -89
  119. package/skills/self-healing-cloud-orchestrator/SKILL.md +3 -2
  120. package/skills/senior-frontend/SKILL.md +21 -18
  121. package/skills/senior-frontend/scripts/frontend_scaffolder.py +1 -1
  122. package/skills/seo/SKILL.md +4 -4
  123. package/skills/session-memory-manager/SKILL.md +129 -0
  124. package/skills/solidjs-expert/SKILL.md +81 -80
  125. package/skills/spa-orchestrator/SKILL.md +5 -4
  126. package/skills/sse-websocket-streaming-expert/SKILL.md +3 -2
  127. package/skills/state-management-expert/SKILL.md +5 -4
  128. package/skills/supabase-security-expert/SKILL.md +5 -4
  129. package/skills/svelte-sveltekit-expert/SKILL.md +92 -91
  130. package/skills/svg-animation-motion-expert/SKILL.md +3 -2
  131. package/skills/synthetic-data-finetuning-expert/SKILL.md +156 -0
  132. package/skills/tailwind-expert/SKILL.md +62 -5
  133. package/skills/tanstack-query-expert/SKILL.md +5 -4
  134. package/skills/tauri-expert/SKILL.md +5 -4
  135. package/skills/typescript-expert/SKILL.md +5 -4
  136. package/skills/ui-ux-pro-max/SKILL.md +7 -4
  137. package/skills/vector-db-rag-expert/SKILL.md +209 -208
  138. package/skills/vercel-ai-sdk-expert/SKILL.md +226 -0
  139. package/skills/voice-ai-realtime-agent/SKILL.md +243 -202
  140. package/skills/vue-frontend-expert/SKILL.md +5 -4
  141. package/skills/wasm-edge-computing-expert/SKILL.md +3 -2
  142. package/skills/web-3d-graphics-expert/SKILL.md +259 -82
  143. package/skills/web-game-engine-expert/SKILL.md +278 -50
  144. package/skills/web-scraper/SKILL.md +158 -157
  145. package/skills/website-design-cloner/SKILL.md +5 -4
  146. package/skills/webxr-ar-vr-expert/SKILL.md +105 -65
  147. package/skills/wordpress-headless-expert/SKILL.md +145 -144
  148. package/skills/zero-tech-debt-auditor/SKILL.md +115 -0
  149. package/skills/zero-to-prod-orchestrator/SKILL.md +281 -227
  150. package/skills/zero-trust-secret-vault/SKILL.md +3 -2
  151. package/BLUEPRINT.md +0 -309
  152. package/skills/ai-cost-token-optimizer/SKILL.md +0 -82
  153. package/skills/ai-evals-benchmark-expert/SKILL.md +0 -188
  154. package/skills/asisten-ramah/SKILL.md +0 -47
  155. package/skills/auto-doc-updater/SKILL.md +0 -220
  156. package/skills/autonomous-chaos-monkey/SKILL.md +0 -63
  157. package/skills/background-jobs-queue-expert/SKILL.md +0 -235
  158. package/skills/bootstrap-to-modern/SKILL.md +0 -94
  159. package/skills/database-migration-versioning-expert/SKILL.md +0 -90
  160. package/skills/edge-serverless-db-expert/SKILL.md +0 -99
  161. package/skills/mcp-client-orchestrator/SKILL.md +0 -76
  162. package/skills/mobile-push-notification-expert/SKILL.md +0 -71
  163. package/skills/monday-design-aesthetic/SKILL.md +0 -73
  164. package/skills/multiple-entry-points/SKILL.md +0 -91
  165. package/skills/project-context-mapper/SKILL.md +0 -85
  166. package/skills/saas-mvp-launcher/SKILL.md +0 -260
  167. package/skills/saas-transformer/SKILL.md +0 -500
  168. package/skills/saas-transformer/references/billing_integration_guide.md +0 -401
  169. package/skills/secure-fuzz-testing/SKILL.md +0 -207
  170. package/skills/self-evolving-memory-graph/SKILL.md +0 -91
  171. package/skills/session-context-loader/SKILL.md +0 -83
  172. package/skills/session-handoff-resume/SKILL.md +0 -164
  173. package/skills/skill-baru/SKILL.md +0 -178
  174. package/skills/supabase-migration/SKILL.md +0 -91
  175. package/skills/token-saver/SKILL.md +0 -119
  176. package/skills/ui-components-expert/SKILL.md +0 -166
  177. package/skills/vibe-code-gardener/SKILL.md +0 -181
  178. package/skills/visual-qa-vision-agent/SKILL.md +0 -71
  179. /package/skills/{saas-transformer → saas-architect}/references/feature_gating_patterns.md +0 -0
  180. /package/skills/{saas-transformer → saas-architect}/references/saas_transformation_checklist.md +0 -0
  181. /package/skills/{saas-transformer → saas-architect}/scripts/saas_transformation_scanner.py +0 -0
@@ -1,208 +1,209 @@
1
- ---
2
- name: vector-db-rag-expert
3
- description: "Expert guide for high-performance Vector Databases, Deep RAG architectures, pgvector 0.8+ HNSW, Reciprocal Rank Fusion (RRF), Cross-Encoder Re-ranking, and Late Chunking / Panduan ahli Vector DB, arsitektur Deep RAG, pgvector HNSW, RRF, dan Re-ranking."
4
- author: "Roedy Rustam"
5
- ---
6
-
7
- # Vector DB & Deep RAG Expert (2026 Edition)
8
-
9
- [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
-
11
- ---
12
-
13
- <a name="english"></a>
14
- ## English
15
-
16
- ### Purpose & Overview
17
- Production-grade architectural guide for Vector Databases (PostgreSQL `pgvector 0.8+`, Qdrant, LanceDB, Pinecone), Deep RAG indexing strategies, HNSW iterative search, **Reciprocal Rank Fusion (RRF)** hybrid retrieval, **Cross-Encoder Re-ranking** (Cohere Rerank v3, FlashRank, BGE-Reranker-v2), and **Late Chunking** to eliminate context fragmentation.
18
-
19
- ### Key Capabilities
20
- 1. **pgvector 0.8+ & HNSW Indexing**: High-dimensional vector storage, cosine/inner-product/L2 distance metric tuning, and iterative HNSW index scans with metadata filtering.
21
- 2. **Reciprocal Rank Fusion (RRF)**: Combining sparse keyword BM25 ranks with dense semantic vector ranks using $RRF(d) = \sum \frac{1}{k + rank(d)}$, far outperforming naive linear score weighting.
22
- 3. **Cross-Encoder Re-ranking**: Two-stage retrieval pipeline: retrieve Top-50 candidates via fast hybrid search, then re-rank down to Top-5 using a cross-encoder model to maximize NDCG@10.
23
- 4. **Late Chunking & Contextual Retrieval**: Embed long-context documents in full before pooling token embeddings into individual chunks, preserving document-level semantics across boundaries.
24
- 5. **RAG Evaluation**: Continuous retrieval precision and hallucination scoring using automated eval harnesses (Ragas, TruLens, DeepEval).
25
-
26
- ---
27
-
28
- ### Production Implementation Recipes
29
-
30
- #### Recipe 1: Reciprocal Rank Fusion (RRF) Hybrid Search with Drizzle ORM
31
- ```typescript
32
- import { sql } from 'drizzle-orm';
33
- import { db } from '@/lib/db';
34
-
35
- export interface SearchResult {
36
- id: string;
37
- content: string;
38
- score: number;
39
- }
40
-
41
- /**
42
- * Executes Reciprocal Rank Fusion (RRF) combining BM25 keyword search and pgvector HNSW
43
- * k = 60 is the industry standard constant
44
- */
45
- export async function reciprocalRankFusionSearch(
46
- queryVector: number[],
47
- queryText: string,
48
- limit = 10,
49
- k = 60
50
- ): Promise<SearchResult[]> {
51
- const formattedVector = JSON.stringify(queryVector);
52
-
53
- const results = await db.execute(sql`
54
- WITH vector_matches AS (
55
- SELECT id, ROW_NUMBER() OVER (ORDER BY embedding <=> ${formattedVector}::vector) AS rank
56
- FROM documents
57
- WHERE status = 'published'
58
- ORDER BY embedding <=> ${formattedVector}::vector
59
- LIMIT 50
60
- ),
61
- text_matches AS (
62
- SELECT id, ROW_NUMBER() OVER (ORDER BY ts_rank_cd(fts, websearch_to_tsquery('english', ${queryText})) DESC) AS rank
63
- FROM documents
64
- WHERE fts @@ websearch_to_tsquery('english', ${queryText})
65
- LIMIT 50
66
- )
67
- SELECT
68
- d.id,
69
- d.content,
70
- COALESCE(1.0 / (${k} + v.rank), 0.0) +
71
- COALESCE(1.0 / (${k} + t.rank), 0.0) AS rrf_score
72
- FROM documents d
73
- LEFT JOIN vector_matches v ON d.id = v.id
74
- LEFT JOIN text_matches t ON d.id = t.id
75
- WHERE v.id IS NOT NULL OR t.id IS NOT NULL
76
- ORDER BY rrf_score DESC
77
- LIMIT ${limit};
78
- `);
79
-
80
- return results.rows as unknown as SearchResult[];
81
- }
82
- ```
83
-
84
- #### Recipe 2: Two-Stage Re-Ranking Pipeline with FlashRank (Node.js / TypeScript)
85
- ```typescript
86
- import { FlashRankRegistry } from 'flashrank';
87
-
88
- const ranker = new FlashRankRegistry();
89
-
90
- export async function rerankCandidates(query: string, candidates: { id: string; text: string }[], topN = 5) {
91
- const passages = candidates.map(c => ({ id: c.id, text: c.text }));
92
-
93
- // Ultra-fast client/server cross-encoder re-ranking
94
- const reranked = await ranker.rerank({
95
- query,
96
- passages,
97
- model: 'ms-marco-TinyBERT-L-2-v2', // Lightweight, 2ms latency
98
- });
99
-
100
- return reranked.slice(0, topN);
101
- }
102
- ```
103
-
104
- ---
105
-
106
- ### Implementation Checklist
107
- - [ ] Create `HNSW` index in PostgreSQL: `CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`
108
- - [ ] Configure `hnsw.ef_search = 100` for high-recall queries during production traffic.
109
- - [ ] Implement Reciprocal Rank Fusion (RRF) with constant `k = 60` instead of arbitrary linear weighting.
110
- - [ ] Add a Cross-Encoder Re-ranker step before injecting retrieved chunks into the LLM system prompt.
111
- - [ ] Apply Late Chunking or Contextual Chunking to retain parent document continuity.
112
-
113
- ## Orchestration & Integration
114
- - Integrates with: `ai-llm-integration-expert`, `database-orm-expert`, `ai-cost-token-optimizer`, `app-analyzer-optimizer`.
115
-
116
- ---
117
-
118
- <a name="bahasa-indonesia"></a>
119
- ## Bahasa Indonesia
120
-
121
- ### Deskripsi
122
- Panduan arsitektur tingkat produksi untuk Vector Database (PostgreSQL `pgvector 0.8+`, Qdrant, LanceDB, Pinecone), arsitektur Deep RAG modern, pencarian HNSW iteratif, **Reciprocal Rank Fusion (RRF)** hybrid retrieval, **Cross-Encoder Re-ranking** (Cohere Rerank v3, FlashRank, BGE-Reranker-v2), dan **Late Chunking** untuk mencegah fragmentasi konteks.
123
-
124
- ### Fitur Utama
125
- 1. **pgvector 0.8+ & Indeks HNSW**: Penyimpanan vektor dimensi tinggi, tuning metrik jarak (cosine/inner-product/L2), dan pemindaian HNSW iteratif dengan filter metadata.
126
- 2. **Reciprocal Rank Fusion (RRF)**: Menggabungkan peringkat kata kunci BM25 dengan peringkat semantik vektor menggunakan rumus $RRF(d) = \sum \frac{1}{k + rank(d)}$, jauh lebih akurat daripada pembobotan linear biasa.
127
- 3. **Cross-Encoder Re-ranking**: Pipeline retrieval 2 tahap: ambil 50 kandidat teratas melalui pencarian hybrid, lalu urutkan ulang menjadi 5 dokumen paling relevan menggunakan model cross-encoder.
128
- 4. **Late Chunking**: Melakukan embedding dokumen secara utuh dalam transformer sebelum memecahnya menjadi chunk-chunk terpisah, mempertahankan makna global dokumen.
129
- 5. **Evaluasi RAG**: Pengukuran presisi retrieval dan deteksi halusinasi secara otomatis (Ragas, TruLens, DeepEval).
130
-
131
- ---
132
-
133
- ### Resep Implementasi Produksi
134
-
135
- #### Resep 1: Pencarian Hybrid RRF dengan Drizzle ORM
136
- ```typescript
137
- import { sql } from 'drizzle-orm';
138
- import { db } from '@/lib/db';
139
-
140
- export async function cariDokumenRRF(
141
- queryVector: number[],
142
- queryText: string,
143
- limit = 10,
144
- k = 60
145
- ) {
146
- const vectorStr = JSON.stringify(queryVector);
147
-
148
- const hasil = await db.execute(sql`
149
- WITH vector_matches AS (
150
- SELECT id, ROW_NUMBER() OVER (ORDER BY embedding <=> ${vectorStr}::vector) AS rank
151
- FROM documents
152
- WHERE status = 'published'
153
- ORDER BY embedding <=> ${vectorStr}::vector
154
- LIMIT 50
155
- ),
156
- text_matches AS (
157
- SELECT id, ROW_NUMBER() OVER (ORDER BY ts_rank_cd(fts, websearch_to_tsquery('english', ${queryText})) DESC) AS rank
158
- FROM documents
159
- WHERE fts @@ websearch_to_tsquery('english', ${queryText})
160
- LIMIT 50
161
- )
162
- SELECT
163
- d.id,
164
- d.content,
165
- COALESCE(1.0 / (${k} + v.rank), 0.0) +
166
- COALESCE(1.0 / (${k} + t.rank), 0.0) AS skor_rrf
167
- FROM documents d
168
- LEFT JOIN vector_matches v ON d.id = v.id
169
- LEFT JOIN text_matches t ON d.id = t.id
170
- WHERE v.id IS NOT NULL OR t.id IS NOT NULL
171
- ORDER BY skor_rrf DESC
172
- LIMIT ${limit};
173
- `);
174
-
175
- return hasil.rows;
176
- }
177
- ```
178
-
179
- #### Resep 2: Pipeline Re-Ranking dengan FlashRank (Node.js / TypeScript)
180
- ```typescript
181
- import { FlashRankRegistry } from 'flashrank';
182
-
183
- const ranker = new FlashRankRegistry();
184
-
185
- export async function susunUlangKandidat(kueri: string, kandidat: { id: string; text: string }[], topN = 5) {
186
- const passages = kandidat.map(c => ({ id: c.id, text: c.text }));
187
-
188
- const hasilRerank = await ranker.rerank({
189
- query: kueri,
190
- passages,
191
- model: 'ms-marco-TinyBERT-L-2-v2',
192
- });
193
-
194
- return hasilRerank.slice(0, topN);
195
- }
196
- ```
197
-
198
- ---
199
-
200
- ### Checklist Implementasi
201
- - [ ] Buat indeks `HNSW` di PostgreSQL: `CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`
202
- - [ ] Konfigurasikan `hnsw.ef_search = 100` untuk kueri dengan recall tinggi di lingkungan produksi.
203
- - [ ] Terapkan Reciprocal Rank Fusion (RRF) dengan konstanta `k = 60` alih-alih pembobotan linear manual.
204
- - [ ] Tambahkan langkah Cross-Encoder Re-ranker sebelum menyuntikkan konteks ke prompt LLM.
205
- - [ ] Terapkan Late Chunking agar konteks dokumen utuh tidak hilang saat dipotong.
206
-
207
- ## Integrasi Orkestrasi
208
- - Terintegrasi dengan: `ai-llm-integration-expert`, `database-orm-expert`, `ai-cost-token-optimizer`, `app-analyzer-optimizer`.
1
+ ---
2
+ name: vector-db-rag-expert
3
+ description: "Expert guide for high-performance Vector Databases, Deep RAG architectures, pgvector 0.8+ HNSW, Reciprocal Rank Fusion (RRF), Cross-Encoder Re-ranking, and Late Chunking / Panduan ahli Vector DB, arsitektur Deep RAG, pgvector HNSW, RRF, dan Re-ranking."
4
+ author: "Roedy Rustam"
5
+ version: "3.0.0"
6
+ ---
7
+
8
+ # Vector DB & Deep RAG Expert (2026 Edition)
9
+
10
+ [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
11
+
12
+ ---
13
+
14
+ <a name="english"></a>
15
+ ## English
16
+
17
+ ### Purpose & Overview
18
+ Production-grade architectural guide for Vector Databases (PostgreSQL `pgvector 0.8+`, Qdrant, LanceDB, Pinecone), Deep RAG indexing strategies, HNSW iterative search, **Reciprocal Rank Fusion (RRF)** hybrid retrieval, **Cross-Encoder Re-ranking** (Cohere Rerank v3, FlashRank, BGE-Reranker-v2), and **Late Chunking** to eliminate context fragmentation.
19
+
20
+ ### Key Capabilities
21
+ 1. **pgvector 0.8+ & HNSW Indexing**: High-dimensional vector storage, cosine/inner-product/L2 distance metric tuning, and iterative HNSW index scans with metadata filtering.
22
+ 2. **Reciprocal Rank Fusion (RRF)**: Combining sparse keyword BM25 ranks with dense semantic vector ranks using $RRF(d) = \sum \frac{1}{k + rank(d)}$, far outperforming naive linear score weighting.
23
+ 3. **Cross-Encoder Re-ranking**: Two-stage retrieval pipeline: retrieve Top-50 candidates via fast hybrid search, then re-rank down to Top-5 using a cross-encoder model to maximize NDCG@10.
24
+ 4. **Late Chunking & Contextual Retrieval**: Embed long-context documents in full before pooling token embeddings into individual chunks, preserving document-level semantics across boundaries.
25
+ 5. **RAG Evaluation**: Continuous retrieval precision and hallucination scoring using automated eval harnesses (Ragas, TruLens, DeepEval).
26
+
27
+ ---
28
+
29
+ ### Production Implementation Recipes
30
+
31
+ #### Recipe 1: Reciprocal Rank Fusion (RRF) Hybrid Search with Drizzle ORM
32
+ ```typescript
33
+ import { sql } from 'drizzle-orm';
34
+ import { db } from '@/lib/db';
35
+
36
+ export interface SearchResult {
37
+ id: string;
38
+ content: string;
39
+ score: number;
40
+ }
41
+
42
+ /**
43
+ * Executes Reciprocal Rank Fusion (RRF) combining BM25 keyword search and pgvector HNSW
44
+ * k = 60 is the industry standard constant
45
+ */
46
+ export async function reciprocalRankFusionSearch(
47
+ queryVector: number[],
48
+ queryText: string,
49
+ limit = 10,
50
+ k = 60
51
+ ): Promise<SearchResult[]> {
52
+ const formattedVector = JSON.stringify(queryVector);
53
+
54
+ const results = await db.execute(sql`
55
+ WITH vector_matches AS (
56
+ SELECT id, ROW_NUMBER() OVER (ORDER BY embedding <=> ${formattedVector}::vector) AS rank
57
+ FROM documents
58
+ WHERE status = 'published'
59
+ ORDER BY embedding <=> ${formattedVector}::vector
60
+ LIMIT 50
61
+ ),
62
+ text_matches AS (
63
+ SELECT id, ROW_NUMBER() OVER (ORDER BY ts_rank_cd(fts, websearch_to_tsquery('english', ${queryText})) DESC) AS rank
64
+ FROM documents
65
+ WHERE fts @@ websearch_to_tsquery('english', ${queryText})
66
+ LIMIT 50
67
+ )
68
+ SELECT
69
+ d.id,
70
+ d.content,
71
+ COALESCE(1.0 / (${k} + v.rank), 0.0) +
72
+ COALESCE(1.0 / (${k} + t.rank), 0.0) AS rrf_score
73
+ FROM documents d
74
+ LEFT JOIN vector_matches v ON d.id = v.id
75
+ LEFT JOIN text_matches t ON d.id = t.id
76
+ WHERE v.id IS NOT NULL OR t.id IS NOT NULL
77
+ ORDER BY rrf_score DESC
78
+ LIMIT ${limit};
79
+ `);
80
+
81
+ return results.rows as unknown as SearchResult[];
82
+ }
83
+ ```
84
+
85
+ #### Recipe 2: Two-Stage Re-Ranking Pipeline with FlashRank (Node.js / TypeScript)
86
+ ```typescript
87
+ import { FlashRankRegistry } from 'flashrank';
88
+
89
+ const ranker = new FlashRankRegistry();
90
+
91
+ export async function rerankCandidates(query: string, candidates: { id: string; text: string }[], topN = 5) {
92
+ const passages = candidates.map(c => ({ id: c.id, text: c.text }));
93
+
94
+ // Ultra-fast client/server cross-encoder re-ranking
95
+ const reranked = await ranker.rerank({
96
+ query,
97
+ passages,
98
+ model: 'ms-marco-TinyBERT-L-2-v2', // Lightweight, 2ms latency
99
+ });
100
+
101
+ return reranked.slice(0, topN);
102
+ }
103
+ ```
104
+
105
+ ---
106
+
107
+ ### Implementation Checklist
108
+ - [ ] Create `HNSW` index in PostgreSQL: `CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`
109
+ - [ ] Configure `hnsw.ef_search = 100` for high-recall queries during production traffic.
110
+ - [ ] Implement Reciprocal Rank Fusion (RRF) with constant `k = 60` instead of arbitrary linear weighting.
111
+ - [ ] Add a Cross-Encoder Re-ranker step before injecting retrieved chunks into the LLM system prompt.
112
+ - [ ] Apply Late Chunking or Contextual Chunking to retain parent document continuity.
113
+
114
+ ## Orchestration & Integration
115
+ - Integrates with: `ai-llm-integration-expert`, `database-orm-expert`, `ai-cost-token-optimizer`, `app-analyzer-optimizer`.
116
+
117
+ ---
118
+
119
+ <a name="bahasa-indonesia"></a>
120
+ ## Bahasa Indonesia
121
+
122
+ ### Deskripsi
123
+ Panduan arsitektur tingkat produksi untuk Vector Database (PostgreSQL `pgvector 0.8+`, Qdrant, LanceDB, Pinecone), arsitektur Deep RAG modern, pencarian HNSW iteratif, **Reciprocal Rank Fusion (RRF)** hybrid retrieval, **Cross-Encoder Re-ranking** (Cohere Rerank v3, FlashRank, BGE-Reranker-v2), dan **Late Chunking** untuk mencegah fragmentasi konteks.
124
+
125
+ ### Fitur Utama
126
+ 1. **pgvector 0.8+ & Indeks HNSW**: Penyimpanan vektor dimensi tinggi, tuning metrik jarak (cosine/inner-product/L2), dan pemindaian HNSW iteratif dengan filter metadata.
127
+ 2. **Reciprocal Rank Fusion (RRF)**: Menggabungkan peringkat kata kunci BM25 dengan peringkat semantik vektor menggunakan rumus $RRF(d) = \sum \frac{1}{k + rank(d)}$, jauh lebih akurat daripada pembobotan linear biasa.
128
+ 3. **Cross-Encoder Re-ranking**: Pipeline retrieval 2 tahap: ambil 50 kandidat teratas melalui pencarian hybrid, lalu urutkan ulang menjadi 5 dokumen paling relevan menggunakan model cross-encoder.
129
+ 4. **Late Chunking**: Melakukan embedding dokumen secara utuh dalam transformer sebelum memecahnya menjadi chunk-chunk terpisah, mempertahankan makna global dokumen.
130
+ 5. **Evaluasi RAG**: Pengukuran presisi retrieval dan deteksi halusinasi secara otomatis (Ragas, TruLens, DeepEval).
131
+
132
+ ---
133
+
134
+ ### Resep Implementasi Produksi
135
+
136
+ #### Resep 1: Pencarian Hybrid RRF dengan Drizzle ORM
137
+ ```typescript
138
+ import { sql } from 'drizzle-orm';
139
+ import { db } from '@/lib/db';
140
+
141
+ export async function cariDokumenRRF(
142
+ queryVector: number[],
143
+ queryText: string,
144
+ limit = 10,
145
+ k = 60
146
+ ) {
147
+ const vectorStr = JSON.stringify(queryVector);
148
+
149
+ const hasil = await db.execute(sql`
150
+ WITH vector_matches AS (
151
+ SELECT id, ROW_NUMBER() OVER (ORDER BY embedding <=> ${vectorStr}::vector) AS rank
152
+ FROM documents
153
+ WHERE status = 'published'
154
+ ORDER BY embedding <=> ${vectorStr}::vector
155
+ LIMIT 50
156
+ ),
157
+ text_matches AS (
158
+ SELECT id, ROW_NUMBER() OVER (ORDER BY ts_rank_cd(fts, websearch_to_tsquery('english', ${queryText})) DESC) AS rank
159
+ FROM documents
160
+ WHERE fts @@ websearch_to_tsquery('english', ${queryText})
161
+ LIMIT 50
162
+ )
163
+ SELECT
164
+ d.id,
165
+ d.content,
166
+ COALESCE(1.0 / (${k} + v.rank), 0.0) +
167
+ COALESCE(1.0 / (${k} + t.rank), 0.0) AS skor_rrf
168
+ FROM documents d
169
+ LEFT JOIN vector_matches v ON d.id = v.id
170
+ LEFT JOIN text_matches t ON d.id = t.id
171
+ WHERE v.id IS NOT NULL OR t.id IS NOT NULL
172
+ ORDER BY skor_rrf DESC
173
+ LIMIT ${limit};
174
+ `);
175
+
176
+ return hasil.rows;
177
+ }
178
+ ```
179
+
180
+ #### Resep 2: Pipeline Re-Ranking dengan FlashRank (Node.js / TypeScript)
181
+ ```typescript
182
+ import { FlashRankRegistry } from 'flashrank';
183
+
184
+ const ranker = new FlashRankRegistry();
185
+
186
+ export async function susunUlangKandidat(kueri: string, kandidat: { id: string; text: string }[], topN = 5) {
187
+ const passages = kandidat.map(c => ({ id: c.id, text: c.text }));
188
+
189
+ const hasilRerank = await ranker.rerank({
190
+ query: kueri,
191
+ passages,
192
+ model: 'ms-marco-TinyBERT-L-2-v2',
193
+ });
194
+
195
+ return hasilRerank.slice(0, topN);
196
+ }
197
+ ```
198
+
199
+ ---
200
+
201
+ ### Checklist Implementasi
202
+ - [ ] Buat indeks `HNSW` di PostgreSQL: `CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);`
203
+ - [ ] Konfigurasikan `hnsw.ef_search = 100` untuk kueri dengan recall tinggi di lingkungan produksi.
204
+ - [ ] Terapkan Reciprocal Rank Fusion (RRF) dengan konstanta `k = 60` alih-alih pembobotan linear manual.
205
+ - [ ] Tambahkan langkah Cross-Encoder Re-ranker sebelum menyuntikkan konteks ke prompt LLM.
206
+ - [ ] Terapkan Late Chunking agar konteks dokumen utuh tidak hilang saat dipotong.
207
+
208
+ ## Integrasi Orkestrasi
209
+ - Terintegrasi dengan: `ai-llm-integration-expert`, `database-orm-expert`, `ai-cost-token-optimizer`, `app-analyzer-optimizer`.