@hazeljs/rag 0.2.0-alpha.1

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 (379) hide show
  1. package/LICENSE +192 -0
  2. package/README.md +504 -0
  3. package/dist/__tests__/graph/community-detector.test.d.ts +2 -0
  4. package/dist/__tests__/graph/community-detector.test.d.ts.map +1 -0
  5. package/dist/__tests__/graph/community-detector.test.js +87 -0
  6. package/dist/__tests__/graph/community-detector.test.js.map +1 -0
  7. package/dist/__tests__/graph/community-summarizer.test.d.ts +2 -0
  8. package/dist/__tests__/graph/community-summarizer.test.d.ts.map +1 -0
  9. package/dist/__tests__/graph/community-summarizer.test.js +131 -0
  10. package/dist/__tests__/graph/community-summarizer.test.js.map +1 -0
  11. package/dist/__tests__/graph/entity-extractor.test.d.ts +2 -0
  12. package/dist/__tests__/graph/entity-extractor.test.d.ts.map +1 -0
  13. package/dist/__tests__/graph/entity-extractor.test.js +129 -0
  14. package/dist/__tests__/graph/entity-extractor.test.js.map +1 -0
  15. package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts +2 -0
  16. package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts.map +1 -0
  17. package/dist/__tests__/graph/graph-rag-pipeline.test.js +158 -0
  18. package/dist/__tests__/graph/graph-rag-pipeline.test.js.map +1 -0
  19. package/dist/__tests__/graph/knowledge-graph.test.d.ts +2 -0
  20. package/dist/__tests__/graph/knowledge-graph.test.d.ts.map +1 -0
  21. package/dist/__tests__/graph/knowledge-graph.test.js +208 -0
  22. package/dist/__tests__/graph/knowledge-graph.test.js.map +1 -0
  23. package/dist/__tests__/loaders/base.loader.test.d.ts +2 -0
  24. package/dist/__tests__/loaders/base.loader.test.d.ts.map +1 -0
  25. package/dist/__tests__/loaders/base.loader.test.js +114 -0
  26. package/dist/__tests__/loaders/base.loader.test.js.map +1 -0
  27. package/dist/__tests__/loaders/csv-file.loader.test.d.ts +2 -0
  28. package/dist/__tests__/loaders/csv-file.loader.test.d.ts.map +1 -0
  29. package/dist/__tests__/loaders/csv-file.loader.test.js +98 -0
  30. package/dist/__tests__/loaders/csv-file.loader.test.js.map +1 -0
  31. package/dist/__tests__/loaders/directory.loader.test.d.ts +2 -0
  32. package/dist/__tests__/loaders/directory.loader.test.d.ts.map +1 -0
  33. package/dist/__tests__/loaders/directory.loader.test.js +154 -0
  34. package/dist/__tests__/loaders/directory.loader.test.js.map +1 -0
  35. package/dist/__tests__/loaders/html-file.loader.test.d.ts +2 -0
  36. package/dist/__tests__/loaders/html-file.loader.test.d.ts.map +1 -0
  37. package/dist/__tests__/loaders/html-file.loader.test.js +93 -0
  38. package/dist/__tests__/loaders/html-file.loader.test.js.map +1 -0
  39. package/dist/__tests__/loaders/json-file.loader.test.d.ts +2 -0
  40. package/dist/__tests__/loaders/json-file.loader.test.d.ts.map +1 -0
  41. package/dist/__tests__/loaders/json-file.loader.test.js +84 -0
  42. package/dist/__tests__/loaders/json-file.loader.test.js.map +1 -0
  43. package/dist/__tests__/loaders/markdown-file.loader.test.d.ts +2 -0
  44. package/dist/__tests__/loaders/markdown-file.loader.test.d.ts.map +1 -0
  45. package/dist/__tests__/loaders/markdown-file.loader.test.js +83 -0
  46. package/dist/__tests__/loaders/markdown-file.loader.test.js.map +1 -0
  47. package/dist/__tests__/loaders/text-file.loader.test.d.ts +2 -0
  48. package/dist/__tests__/loaders/text-file.loader.test.d.ts.map +1 -0
  49. package/dist/__tests__/loaders/text-file.loader.test.js +50 -0
  50. package/dist/__tests__/loaders/text-file.loader.test.js.map +1 -0
  51. package/dist/__tests__/rag-pipeline.test.d.ts +2 -0
  52. package/dist/__tests__/rag-pipeline.test.d.ts.map +1 -0
  53. package/dist/__tests__/rag-pipeline.test.js +210 -0
  54. package/dist/__tests__/rag-pipeline.test.js.map +1 -0
  55. package/dist/__tests__/retrieval/bm25.test.d.ts +2 -0
  56. package/dist/__tests__/retrieval/bm25.test.d.ts.map +1 -0
  57. package/dist/__tests__/retrieval/bm25.test.js +86 -0
  58. package/dist/__tests__/retrieval/bm25.test.js.map +1 -0
  59. package/dist/__tests__/retrieval/hybrid-search.test.d.ts +2 -0
  60. package/dist/__tests__/retrieval/hybrid-search.test.d.ts.map +1 -0
  61. package/dist/__tests__/retrieval/hybrid-search.test.js +85 -0
  62. package/dist/__tests__/retrieval/hybrid-search.test.js.map +1 -0
  63. package/dist/__tests__/retrieval/multi-query.test.d.ts +2 -0
  64. package/dist/__tests__/retrieval/multi-query.test.d.ts.map +1 -0
  65. package/dist/__tests__/retrieval/multi-query.test.js +90 -0
  66. package/dist/__tests__/retrieval/multi-query.test.js.map +1 -0
  67. package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts +2 -0
  68. package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts.map +1 -0
  69. package/dist/__tests__/text-splitters/recursive-text-splitter.test.js +97 -0
  70. package/dist/__tests__/text-splitters/recursive-text-splitter.test.js.map +1 -0
  71. package/dist/__tests__/utils/similarity.test.d.ts +2 -0
  72. package/dist/__tests__/utils/similarity.test.d.ts.map +1 -0
  73. package/dist/__tests__/utils/similarity.test.js +47 -0
  74. package/dist/__tests__/utils/similarity.test.js.map +1 -0
  75. package/dist/agentic/agentic-rag.service.d.ts +49 -0
  76. package/dist/agentic/agentic-rag.service.d.ts.map +1 -0
  77. package/dist/agentic/agentic-rag.service.js +149 -0
  78. package/dist/agentic/agentic-rag.service.js.map +1 -0
  79. package/dist/agentic/decorators/active-learning.decorator.d.ts +19 -0
  80. package/dist/agentic/decorators/active-learning.decorator.d.ts.map +1 -0
  81. package/dist/agentic/decorators/active-learning.decorator.js +98 -0
  82. package/dist/agentic/decorators/active-learning.decorator.js.map +1 -0
  83. package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts +17 -0
  84. package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts.map +1 -0
  85. package/dist/agentic/decorators/adaptive-retrieval.decorator.js +103 -0
  86. package/dist/agentic/decorators/adaptive-retrieval.decorator.js.map +1 -0
  87. package/dist/agentic/decorators/cached.decorator.d.ts +18 -0
  88. package/dist/agentic/decorators/cached.decorator.d.ts.map +1 -0
  89. package/dist/agentic/decorators/cached.decorator.js +93 -0
  90. package/dist/agentic/decorators/cached.decorator.js.map +1 -0
  91. package/dist/agentic/decorators/context-aware.decorator.d.ts +16 -0
  92. package/dist/agentic/decorators/context-aware.decorator.d.ts.map +1 -0
  93. package/dist/agentic/decorators/context-aware.decorator.js +169 -0
  94. package/dist/agentic/decorators/context-aware.decorator.js.map +1 -0
  95. package/dist/agentic/decorators/corrective-rag.decorator.d.ts +16 -0
  96. package/dist/agentic/decorators/corrective-rag.decorator.d.ts.map +1 -0
  97. package/dist/agentic/decorators/corrective-rag.decorator.js +142 -0
  98. package/dist/agentic/decorators/corrective-rag.decorator.js.map +1 -0
  99. package/dist/agentic/decorators/hyde.decorator.d.ts +15 -0
  100. package/dist/agentic/decorators/hyde.decorator.d.ts.map +1 -0
  101. package/dist/agentic/decorators/hyde.decorator.js +91 -0
  102. package/dist/agentic/decorators/hyde.decorator.js.map +1 -0
  103. package/dist/agentic/decorators/index.d.ts +16 -0
  104. package/dist/agentic/decorators/index.d.ts.map +1 -0
  105. package/dist/agentic/decorators/index.js +32 -0
  106. package/dist/agentic/decorators/index.js.map +1 -0
  107. package/dist/agentic/decorators/multi-hop.decorator.d.ts +15 -0
  108. package/dist/agentic/decorators/multi-hop.decorator.d.ts.map +1 -0
  109. package/dist/agentic/decorators/multi-hop.decorator.js +109 -0
  110. package/dist/agentic/decorators/multi-hop.decorator.js.map +1 -0
  111. package/dist/agentic/decorators/query-planner.decorator.d.ts +20 -0
  112. package/dist/agentic/decorators/query-planner.decorator.d.ts.map +1 -0
  113. package/dist/agentic/decorators/query-planner.decorator.js +213 -0
  114. package/dist/agentic/decorators/query-planner.decorator.js.map +1 -0
  115. package/dist/agentic/decorators/query-rewriter.decorator.d.ts +16 -0
  116. package/dist/agentic/decorators/query-rewriter.decorator.d.ts.map +1 -0
  117. package/dist/agentic/decorators/query-rewriter.decorator.js +143 -0
  118. package/dist/agentic/decorators/query-rewriter.decorator.js.map +1 -0
  119. package/dist/agentic/decorators/self-reflective.decorator.d.ts +20 -0
  120. package/dist/agentic/decorators/self-reflective.decorator.d.ts.map +1 -0
  121. package/dist/agentic/decorators/self-reflective.decorator.js +189 -0
  122. package/dist/agentic/decorators/self-reflective.decorator.js.map +1 -0
  123. package/dist/agentic/decorators/source-verification.decorator.d.ts +15 -0
  124. package/dist/agentic/decorators/source-verification.decorator.d.ts.map +1 -0
  125. package/dist/agentic/decorators/source-verification.decorator.js +121 -0
  126. package/dist/agentic/decorators/source-verification.decorator.js.map +1 -0
  127. package/dist/agentic/index.d.ts +9 -0
  128. package/dist/agentic/index.d.ts.map +1 -0
  129. package/dist/agentic/index.js +25 -0
  130. package/dist/agentic/index.js.map +1 -0
  131. package/dist/agentic/types.d.ts +210 -0
  132. package/dist/agentic/types.d.ts.map +1 -0
  133. package/dist/agentic/types.js +7 -0
  134. package/dist/agentic/types.js.map +1 -0
  135. package/dist/decorators/embeddable.decorator.d.ts +31 -0
  136. package/dist/decorators/embeddable.decorator.d.ts.map +1 -0
  137. package/dist/decorators/embeddable.decorator.js +44 -0
  138. package/dist/decorators/embeddable.decorator.js.map +1 -0
  139. package/dist/decorators/rag.decorator.d.ts +58 -0
  140. package/dist/decorators/rag.decorator.d.ts.map +1 -0
  141. package/dist/decorators/rag.decorator.js +78 -0
  142. package/dist/decorators/rag.decorator.js.map +1 -0
  143. package/dist/decorators/semantic-search.decorator.d.ts +69 -0
  144. package/dist/decorators/semantic-search.decorator.d.ts.map +1 -0
  145. package/dist/decorators/semantic-search.decorator.js +116 -0
  146. package/dist/decorators/semantic-search.decorator.js.map +1 -0
  147. package/dist/embeddings/cohere-embeddings.d.ts +33 -0
  148. package/dist/embeddings/cohere-embeddings.d.ts.map +1 -0
  149. package/dist/embeddings/cohere-embeddings.js +91 -0
  150. package/dist/embeddings/cohere-embeddings.js.map +1 -0
  151. package/dist/embeddings/openai-embeddings.d.ts +21 -0
  152. package/dist/embeddings/openai-embeddings.d.ts.map +1 -0
  153. package/dist/embeddings/openai-embeddings.js +53 -0
  154. package/dist/embeddings/openai-embeddings.js.map +1 -0
  155. package/dist/graph/community-detector.d.ts +45 -0
  156. package/dist/graph/community-detector.d.ts.map +1 -0
  157. package/dist/graph/community-detector.js +153 -0
  158. package/dist/graph/community-detector.js.map +1 -0
  159. package/dist/graph/community-summarizer.d.ts +41 -0
  160. package/dist/graph/community-summarizer.d.ts.map +1 -0
  161. package/dist/graph/community-summarizer.js +119 -0
  162. package/dist/graph/community-summarizer.js.map +1 -0
  163. package/dist/graph/entity-extractor.d.ts +47 -0
  164. package/dist/graph/entity-extractor.d.ts.map +1 -0
  165. package/dist/graph/entity-extractor.js +224 -0
  166. package/dist/graph/entity-extractor.js.map +1 -0
  167. package/dist/graph/graph-rag-pipeline.d.ts +83 -0
  168. package/dist/graph/graph-rag-pipeline.d.ts.map +1 -0
  169. package/dist/graph/graph-rag-pipeline.js +390 -0
  170. package/dist/graph/graph-rag-pipeline.js.map +1 -0
  171. package/dist/graph/graph.types.d.ts +186 -0
  172. package/dist/graph/graph.types.d.ts.map +1 -0
  173. package/dist/graph/graph.types.js +20 -0
  174. package/dist/graph/graph.types.js.map +1 -0
  175. package/dist/graph/index.d.ts +15 -0
  176. package/dist/graph/index.d.ts.map +1 -0
  177. package/dist/graph/index.js +31 -0
  178. package/dist/graph/index.js.map +1 -0
  179. package/dist/graph/knowledge-graph.d.ts +57 -0
  180. package/dist/graph/knowledge-graph.d.ts.map +1 -0
  181. package/dist/graph/knowledge-graph.js +198 -0
  182. package/dist/graph/knowledge-graph.js.map +1 -0
  183. package/dist/index.d.ts +29 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +58 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/loaders/base.loader.d.ts +108 -0
  188. package/dist/loaders/base.loader.d.ts.map +1 -0
  189. package/dist/loaders/base.loader.js +123 -0
  190. package/dist/loaders/base.loader.js.map +1 -0
  191. package/dist/loaders/csv-file.loader.d.ts +61 -0
  192. package/dist/loaders/csv-file.loader.d.ts.map +1 -0
  193. package/dist/loaders/csv-file.loader.js +162 -0
  194. package/dist/loaders/csv-file.loader.js.map +1 -0
  195. package/dist/loaders/directory.loader.d.ts +67 -0
  196. package/dist/loaders/directory.loader.d.ts.map +1 -0
  197. package/dist/loaders/directory.loader.js +163 -0
  198. package/dist/loaders/directory.loader.js.map +1 -0
  199. package/dist/loaders/docx.loader.d.ts +52 -0
  200. package/dist/loaders/docx.loader.d.ts.map +1 -0
  201. package/dist/loaders/docx.loader.js +110 -0
  202. package/dist/loaders/docx.loader.js.map +1 -0
  203. package/dist/loaders/github.loader.d.ts +114 -0
  204. package/dist/loaders/github.loader.d.ts.map +1 -0
  205. package/dist/loaders/github.loader.js +217 -0
  206. package/dist/loaders/github.loader.js.map +1 -0
  207. package/dist/loaders/html-file.loader.d.ts +55 -0
  208. package/dist/loaders/html-file.loader.d.ts.map +1 -0
  209. package/dist/loaders/html-file.loader.js +170 -0
  210. package/dist/loaders/html-file.loader.js.map +1 -0
  211. package/dist/loaders/index.d.ts +52 -0
  212. package/dist/loaders/index.d.ts.map +1 -0
  213. package/dist/loaders/index.js +61 -0
  214. package/dist/loaders/index.js.map +1 -0
  215. package/dist/loaders/json-file.loader.d.ts +51 -0
  216. package/dist/loaders/json-file.loader.d.ts.map +1 -0
  217. package/dist/loaders/json-file.loader.js +100 -0
  218. package/dist/loaders/json-file.loader.js.map +1 -0
  219. package/dist/loaders/markdown-file.loader.d.ts +61 -0
  220. package/dist/loaders/markdown-file.loader.d.ts.map +1 -0
  221. package/dist/loaders/markdown-file.loader.js +148 -0
  222. package/dist/loaders/markdown-file.loader.js.map +1 -0
  223. package/dist/loaders/pdf.loader.d.ts +64 -0
  224. package/dist/loaders/pdf.loader.d.ts.map +1 -0
  225. package/dist/loaders/pdf.loader.js +163 -0
  226. package/dist/loaders/pdf.loader.js.map +1 -0
  227. package/dist/loaders/text-file.loader.d.ts +39 -0
  228. package/dist/loaders/text-file.loader.d.ts.map +1 -0
  229. package/dist/loaders/text-file.loader.js +69 -0
  230. package/dist/loaders/text-file.loader.js.map +1 -0
  231. package/dist/loaders/web.loader.d.ts +87 -0
  232. package/dist/loaders/web.loader.d.ts.map +1 -0
  233. package/dist/loaders/web.loader.js +194 -0
  234. package/dist/loaders/web.loader.js.map +1 -0
  235. package/dist/loaders/youtube-transcript.loader.d.ts +92 -0
  236. package/dist/loaders/youtube-transcript.loader.d.ts.map +1 -0
  237. package/dist/loaders/youtube-transcript.loader.js +254 -0
  238. package/dist/loaders/youtube-transcript.loader.js.map +1 -0
  239. package/dist/memory/index.d.ts +11 -0
  240. package/dist/memory/index.d.ts.map +1 -0
  241. package/dist/memory/index.js +31 -0
  242. package/dist/memory/index.js.map +1 -0
  243. package/dist/memory/memory-manager.d.ts +96 -0
  244. package/dist/memory/memory-manager.d.ts.map +1 -0
  245. package/dist/memory/memory-manager.js +369 -0
  246. package/dist/memory/memory-manager.js.map +1 -0
  247. package/dist/memory/memory-store.interface.d.ts +73 -0
  248. package/dist/memory/memory-store.interface.d.ts.map +1 -0
  249. package/dist/memory/memory-store.interface.js +6 -0
  250. package/dist/memory/memory-store.interface.js.map +1 -0
  251. package/dist/memory/stores/buffer-memory.d.ts +47 -0
  252. package/dist/memory/stores/buffer-memory.d.ts.map +1 -0
  253. package/dist/memory/stores/buffer-memory.js +280 -0
  254. package/dist/memory/stores/buffer-memory.js.map +1 -0
  255. package/dist/memory/stores/hybrid-memory.d.ts +49 -0
  256. package/dist/memory/stores/hybrid-memory.d.ts.map +1 -0
  257. package/dist/memory/stores/hybrid-memory.js +194 -0
  258. package/dist/memory/stores/hybrid-memory.js.map +1 -0
  259. package/dist/memory/stores/vector-memory.d.ts +48 -0
  260. package/dist/memory/stores/vector-memory.d.ts.map +1 -0
  261. package/dist/memory/stores/vector-memory.js +312 -0
  262. package/dist/memory/stores/vector-memory.js.map +1 -0
  263. package/dist/memory/types.d.ts +119 -0
  264. package/dist/memory/types.d.ts.map +1 -0
  265. package/dist/memory/types.js +18 -0
  266. package/dist/memory/types.js.map +1 -0
  267. package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts +8 -0
  268. package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts.map +1 -0
  269. package/dist/prompts/agentic/adaptive-retrieval.prompt.js +27 -0
  270. package/dist/prompts/agentic/adaptive-retrieval.prompt.js.map +1 -0
  271. package/dist/prompts/agentic/corrective-rag.prompt.d.ts +9 -0
  272. package/dist/prompts/agentic/corrective-rag.prompt.d.ts.map +1 -0
  273. package/dist/prompts/agentic/corrective-rag.prompt.js +23 -0
  274. package/dist/prompts/agentic/corrective-rag.prompt.js.map +1 -0
  275. package/dist/prompts/agentic/hyde.prompt.d.ts +9 -0
  276. package/dist/prompts/agentic/hyde.prompt.d.ts.map +1 -0
  277. package/dist/prompts/agentic/hyde.prompt.js +18 -0
  278. package/dist/prompts/agentic/hyde.prompt.js.map +1 -0
  279. package/dist/prompts/agentic/multi-hop.prompt.d.ts +15 -0
  280. package/dist/prompts/agentic/multi-hop.prompt.d.ts.map +1 -0
  281. package/dist/prompts/agentic/multi-hop.prompt.js +38 -0
  282. package/dist/prompts/agentic/multi-hop.prompt.js.map +1 -0
  283. package/dist/prompts/agentic/query-planner.prompt.d.ts +8 -0
  284. package/dist/prompts/agentic/query-planner.prompt.d.ts.map +1 -0
  285. package/dist/prompts/agentic/query-planner.prompt.js +30 -0
  286. package/dist/prompts/agentic/query-planner.prompt.js.map +1 -0
  287. package/dist/prompts/agentic/query-rewriter.prompt.d.ts +10 -0
  288. package/dist/prompts/agentic/query-rewriter.prompt.d.ts.map +1 -0
  289. package/dist/prompts/agentic/query-rewriter.prompt.js +17 -0
  290. package/dist/prompts/agentic/query-rewriter.prompt.js.map +1 -0
  291. package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts +10 -0
  292. package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts.map +1 -0
  293. package/dist/prompts/agentic/self-reflective-improve.prompt.js +24 -0
  294. package/dist/prompts/agentic/self-reflective-improve.prompt.js.map +1 -0
  295. package/dist/prompts/agentic/self-reflective.prompt.d.ts +9 -0
  296. package/dist/prompts/agentic/self-reflective.prompt.d.ts.map +1 -0
  297. package/dist/prompts/agentic/self-reflective.prompt.js +32 -0
  298. package/dist/prompts/agentic/self-reflective.prompt.js.map +1 -0
  299. package/dist/prompts/community-summary.prompt.d.ts +9 -0
  300. package/dist/prompts/community-summary.prompt.d.ts.map +1 -0
  301. package/dist/prompts/community-summary.prompt.js +30 -0
  302. package/dist/prompts/community-summary.prompt.js.map +1 -0
  303. package/dist/prompts/entity-extraction.prompt.d.ts +10 -0
  304. package/dist/prompts/entity-extraction.prompt.d.ts.map +1 -0
  305. package/dist/prompts/entity-extraction.prompt.js +39 -0
  306. package/dist/prompts/entity-extraction.prompt.js.map +1 -0
  307. package/dist/prompts/graph-search.prompt.d.ts +10 -0
  308. package/dist/prompts/graph-search.prompt.d.ts.map +1 -0
  309. package/dist/prompts/graph-search.prompt.js +23 -0
  310. package/dist/prompts/graph-search.prompt.js.map +1 -0
  311. package/dist/prompts/index.d.ts +13 -0
  312. package/dist/prompts/index.d.ts.map +1 -0
  313. package/dist/prompts/index.js +29 -0
  314. package/dist/prompts/index.js.map +1 -0
  315. package/dist/prompts/rag-answer.prompt.d.ts +9 -0
  316. package/dist/prompts/rag-answer.prompt.d.ts.map +1 -0
  317. package/dist/prompts/rag-answer.prompt.js +20 -0
  318. package/dist/prompts/rag-answer.prompt.js.map +1 -0
  319. package/dist/rag-pipeline-with-memory.d.ts +68 -0
  320. package/dist/rag-pipeline-with-memory.d.ts.map +1 -0
  321. package/dist/rag-pipeline-with-memory.js +186 -0
  322. package/dist/rag-pipeline-with-memory.js.map +1 -0
  323. package/dist/rag-pipeline.d.ts +59 -0
  324. package/dist/rag-pipeline.d.ts.map +1 -0
  325. package/dist/rag-pipeline.js +181 -0
  326. package/dist/rag-pipeline.js.map +1 -0
  327. package/dist/rag.module.d.ts +26 -0
  328. package/dist/rag.module.d.ts.map +1 -0
  329. package/dist/rag.module.js +40 -0
  330. package/dist/rag.module.js.map +1 -0
  331. package/dist/rag.service.d.ts +96 -0
  332. package/dist/rag.service.d.ts.map +1 -0
  333. package/dist/rag.service.js +173 -0
  334. package/dist/rag.service.js.map +1 -0
  335. package/dist/retrieval/bm25.d.ts +57 -0
  336. package/dist/retrieval/bm25.d.ts.map +1 -0
  337. package/dist/retrieval/bm25.js +106 -0
  338. package/dist/retrieval/bm25.js.map +1 -0
  339. package/dist/retrieval/hybrid-search.d.ts +48 -0
  340. package/dist/retrieval/hybrid-search.d.ts.map +1 -0
  341. package/dist/retrieval/hybrid-search.js +123 -0
  342. package/dist/retrieval/hybrid-search.js.map +1 -0
  343. package/dist/retrieval/multi-query.d.ts +38 -0
  344. package/dist/retrieval/multi-query.d.ts.map +1 -0
  345. package/dist/retrieval/multi-query.js +135 -0
  346. package/dist/retrieval/multi-query.js.map +1 -0
  347. package/dist/text-splitters/recursive-text-splitter.d.ts +21 -0
  348. package/dist/text-splitters/recursive-text-splitter.d.ts.map +1 -0
  349. package/dist/text-splitters/recursive-text-splitter.js +95 -0
  350. package/dist/text-splitters/recursive-text-splitter.js.map +1 -0
  351. package/dist/types/index.d.ts +144 -0
  352. package/dist/types/index.d.ts.map +1 -0
  353. package/dist/types/index.js +16 -0
  354. package/dist/types/index.js.map +1 -0
  355. package/dist/utils/similarity.d.ts +16 -0
  356. package/dist/utils/similarity.d.ts.map +1 -0
  357. package/dist/utils/similarity.js +58 -0
  358. package/dist/utils/similarity.js.map +1 -0
  359. package/dist/vector-stores/chroma.store.d.ts +42 -0
  360. package/dist/vector-stores/chroma.store.d.ts.map +1 -0
  361. package/dist/vector-stores/chroma.store.js +242 -0
  362. package/dist/vector-stores/chroma.store.js.map +1 -0
  363. package/dist/vector-stores/memory-vector-store.d.ts +20 -0
  364. package/dist/vector-stores/memory-vector-store.d.ts.map +1 -0
  365. package/dist/vector-stores/memory-vector-store.js +94 -0
  366. package/dist/vector-stores/memory-vector-store.js.map +1 -0
  367. package/dist/vector-stores/pinecone.store.d.ts +34 -0
  368. package/dist/vector-stores/pinecone.store.d.ts.map +1 -0
  369. package/dist/vector-stores/pinecone.store.js +146 -0
  370. package/dist/vector-stores/pinecone.store.js.map +1 -0
  371. package/dist/vector-stores/qdrant.store.d.ts +33 -0
  372. package/dist/vector-stores/qdrant.store.d.ts.map +1 -0
  373. package/dist/vector-stores/qdrant.store.js +174 -0
  374. package/dist/vector-stores/qdrant.store.js.map +1 -0
  375. package/dist/vector-stores/weaviate.store.d.ts +37 -0
  376. package/dist/vector-stores/weaviate.store.d.ts.map +1 -0
  377. package/dist/vector-stores/weaviate.store.js +226 -0
  378. package/dist/vector-stores/weaviate.store.js.map +1 -0
  379. package/package.json +146 -0
@@ -0,0 +1,83 @@
1
+ /**
2
+ * GraphRAGPipeline
3
+ *
4
+ * The main entry point for GraphRAG. Orchestrates:
5
+ * 1. Entity/relationship extraction (EntityExtractor)
6
+ * 2. Knowledge graph construction (GraphStore)
7
+ * 3. Community detection (CommunityDetector — LPA)
8
+ * 4. Community report generation (CommunitySummarizer)
9
+ * 5. Local and global search with LLM synthesis
10
+ *
11
+ * Search modes:
12
+ * ┌──────────────┬────────────────────────────────────────────────────────┐
13
+ * │ LOCAL │ Finds entities matching the query, traverses K hops of │
14
+ * │ │ the graph, assembles entity+relationship context, then │
15
+ * │ │ synthesises an answer. Best for specific questions. │
16
+ * ├──────────────┼────────────────────────────────────────────────────────┤
17
+ * │ GLOBAL │ Searches community reports by keyword/relevance, ranks │
18
+ * │ │ them, assembles a map-reduce-style context, then │
19
+ * │ │ synthesises a holistic answer. Best for broad questions.│
20
+ * ├──────────────┼────────────────────────────────────────────────────────┤
21
+ * │ HYBRID │ Runs both local and global, merges contexts, and asks │
22
+ * │ │ the LLM to produce a unified answer. │
23
+ * └──────────────┴────────────────────────────────────────────────────────┘
24
+ *
25
+ * Quick start:
26
+ * const pipeline = new GraphRAGPipeline({ llm: async (p) => openai.chat(p) });
27
+ * await pipeline.build(documents);
28
+ * const result = await pipeline.search('What is HazelJS dependency injection?');
29
+ */
30
+ import type { Document } from '../types';
31
+ import type { GraphRAGConfig, GraphBuildStats, GraphSearchOptions, GraphSearchResult, GraphStats } from './graph.types';
32
+ import { GraphStore } from './knowledge-graph';
33
+ import '../prompts/graph-search.prompt';
34
+ export declare class GraphRAGPipeline {
35
+ private readonly config;
36
+ private readonly graph;
37
+ private readonly extractor;
38
+ private readonly communityDetector;
39
+ private readonly communitySummarizer;
40
+ constructor(config: GraphRAGConfig);
41
+ /**
42
+ * Build (or rebuild) the entire knowledge graph from an array of Documents.
43
+ * Clears any existing graph state before building.
44
+ */
45
+ build(documents: Document[]): Promise<GraphBuildStats>;
46
+ /**
47
+ * Incrementally add more documents to an existing graph.
48
+ * New entities are merged with existing ones if names match.
49
+ */
50
+ addDocuments(documents: Document[]): Promise<GraphBuildStats>;
51
+ /** Unified search entry point. Defaults to 'hybrid' mode. */
52
+ search(query: string, options?: GraphSearchOptions): Promise<GraphSearchResult>;
53
+ /**
54
+ * Entity-centric local search.
55
+ * 1. Find entities whose names match the query keywords.
56
+ * 2. Traverse up to `depth` hops in the knowledge graph.
57
+ * 3. Assemble entity + relationship context.
58
+ * 4. Synthesise an answer with the LLM.
59
+ */
60
+ localSearch(query: string, options?: GraphSearchOptions): Promise<GraphSearchResult>;
61
+ /**
62
+ * Community-report global search.
63
+ * 1. Score community reports by query relevance (keyword overlap + rating).
64
+ * 2. Assemble the top-K report summaries as context.
65
+ * 3. Synthesise a holistic answer.
66
+ */
67
+ globalSearch(query: string, options?: GraphSearchOptions): Promise<GraphSearchResult>;
68
+ /**
69
+ * Combines local and global search.
70
+ * Both searches run in parallel; their contexts are merged before the final
71
+ * LLM synthesis call, giving the best of both modes.
72
+ */
73
+ hybridSearch(query: string, options?: GraphSearchOptions): Promise<GraphSearchResult>;
74
+ getGraph(): GraphStore;
75
+ getStats(): GraphStats;
76
+ clear(): void;
77
+ private findSeedEntities;
78
+ private rankCommunityReports;
79
+ private buildLocalContext;
80
+ private buildGlobalContext;
81
+ private synthesise;
82
+ }
83
+ //# sourceMappingURL=graph-rag-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-rag-pipeline.d.ts","sourceRoot":"","sources":["../../src/graph/graph-rag-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EAKjB,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,OAAO,gCAAgC,CAAC;AAaxC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;gBAE9C,MAAM,EAAE,cAAc;IA+BlC;;;OAGG;IACG,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAO5D;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAoFnE,6DAA6D;IACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBzF;;;;;;OAMG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6B9F;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+B/F;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwC/F,QAAQ,IAAI,UAAU;IAItB,QAAQ,IAAI,UAAU;IAItB,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,kBAAkB;YAkBZ,UAAU;CAezB"}
@@ -0,0 +1,390 @@
1
+ "use strict";
2
+ /**
3
+ * GraphRAGPipeline
4
+ *
5
+ * The main entry point for GraphRAG. Orchestrates:
6
+ * 1. Entity/relationship extraction (EntityExtractor)
7
+ * 2. Knowledge graph construction (GraphStore)
8
+ * 3. Community detection (CommunityDetector — LPA)
9
+ * 4. Community report generation (CommunitySummarizer)
10
+ * 5. Local and global search with LLM synthesis
11
+ *
12
+ * Search modes:
13
+ * ┌──────────────┬────────────────────────────────────────────────────────┐
14
+ * │ LOCAL │ Finds entities matching the query, traverses K hops of │
15
+ * │ │ the graph, assembles entity+relationship context, then │
16
+ * │ │ synthesises an answer. Best for specific questions. │
17
+ * ├──────────────┼────────────────────────────────────────────────────────┤
18
+ * │ GLOBAL │ Searches community reports by keyword/relevance, ranks │
19
+ * │ │ them, assembles a map-reduce-style context, then │
20
+ * │ │ synthesises a holistic answer. Best for broad questions.│
21
+ * ├──────────────┼────────────────────────────────────────────────────────┤
22
+ * │ HYBRID │ Runs both local and global, merges contexts, and asks │
23
+ * │ │ the LLM to produce a unified answer. │
24
+ * └──────────────┴────────────────────────────────────────────────────────┘
25
+ *
26
+ * Quick start:
27
+ * const pipeline = new GraphRAGPipeline({ llm: async (p) => openai.chat(p) });
28
+ * await pipeline.build(documents);
29
+ * const result = await pipeline.search('What is HazelJS dependency injection?');
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.GraphRAGPipeline = void 0;
33
+ const knowledge_graph_1 = require("./knowledge-graph");
34
+ const entity_extractor_1 = require("./entity-extractor");
35
+ const community_detector_1 = require("./community-detector");
36
+ const community_summarizer_1 = require("./community-summarizer");
37
+ const prompts_1 = require("@hazeljs/prompts");
38
+ require("../prompts/graph-search.prompt");
39
+ const graph_search_prompt_1 = require("../prompts/graph-search.prompt");
40
+ let entityCounter = 0;
41
+ let relCounter = 0;
42
+ function nextEntityId() {
43
+ return `entity_${++entityCounter}_${Date.now()}`;
44
+ }
45
+ function nextRelId() {
46
+ return `rel_${++relCounter}_${Date.now()}`;
47
+ }
48
+ class GraphRAGPipeline {
49
+ constructor(config) {
50
+ this.config = {
51
+ extractionChunkSize: 2000,
52
+ communityIterations: 10,
53
+ generateCommunityReports: true,
54
+ maxCommunitySize: 15,
55
+ localSearchDepth: 2,
56
+ localSearchTopK: 5,
57
+ globalSearchTopK: 5,
58
+ ...config,
59
+ };
60
+ this.graph = new knowledge_graph_1.GraphStore();
61
+ this.extractor = new entity_extractor_1.EntityExtractor({
62
+ llm: config.llm,
63
+ chunkSize: this.config.extractionChunkSize,
64
+ });
65
+ this.communityDetector = new community_detector_1.CommunityDetector({
66
+ maxIterations: this.config.communityIterations,
67
+ maxCommunitySize: this.config.maxCommunitySize,
68
+ });
69
+ this.communitySummarizer = new community_summarizer_1.CommunitySummarizer({
70
+ llm: config.llm,
71
+ });
72
+ }
73
+ // ── Build ─────────────────────────────────────────────────────────────────
74
+ /**
75
+ * Build (or rebuild) the entire knowledge graph from an array of Documents.
76
+ * Clears any existing graph state before building.
77
+ */
78
+ async build(documents) {
79
+ this.graph.clear();
80
+ entityCounter = 0;
81
+ relCounter = 0;
82
+ return this.addDocuments(documents);
83
+ }
84
+ /**
85
+ * Incrementally add more documents to an existing graph.
86
+ * New entities are merged with existing ones if names match.
87
+ */
88
+ async addDocuments(documents) {
89
+ const start = Date.now();
90
+ const totalEntitiesBefore = this.graph.entities.size;
91
+ const totalRelsBefore = this.graph.relationships.size;
92
+ // ── Step 1: Extract entities and relationships from all documents ────────
93
+ for (const doc of documents) {
94
+ const docId = doc.id ?? `doc_${Date.now()}`;
95
+ const extraction = await this.extractor.extract([doc.content], docId);
96
+ // ── Step 2: Add entities to the graph (merge duplicates) ───────────────
97
+ const entityNameToId = new Map();
98
+ for (const extracted of extraction.entities) {
99
+ // Check if entity already exists
100
+ const existing = this.graph.findEntityByName(extracted.name);
101
+ if (existing) {
102
+ this.graph.mergeEntity(existing.id, {
103
+ description: extracted.description,
104
+ sourceDocIds: [docId],
105
+ });
106
+ entityNameToId.set(extracted.name.toLowerCase(), existing.id);
107
+ }
108
+ else {
109
+ const entity = this.graph.addEntity({
110
+ id: nextEntityId(),
111
+ name: extracted.name,
112
+ type: extracted.type,
113
+ description: extracted.description,
114
+ sourceDocIds: [docId],
115
+ });
116
+ entityNameToId.set(extracted.name.toLowerCase(), entity.id);
117
+ }
118
+ }
119
+ // ── Step 3: Add relationships ──────────────────────────────────────────
120
+ for (const rel of extraction.relationships) {
121
+ const sourceId = entityNameToId.get(rel.source.toLowerCase());
122
+ const targetId = entityNameToId.get(rel.target.toLowerCase());
123
+ if (!sourceId || !targetId)
124
+ continue;
125
+ this.graph.addRelationship({
126
+ id: nextRelId(),
127
+ sourceId,
128
+ targetId,
129
+ type: rel.type,
130
+ description: rel.description,
131
+ weight: rel.weight,
132
+ sourceDocIds: [docId],
133
+ });
134
+ }
135
+ }
136
+ const entitiesExtracted = this.graph.entities.size - totalEntitiesBefore;
137
+ const entitiesMerged = documents.length * 2; // rough heuristic
138
+ const relsExtracted = this.graph.relationships.size - totalRelsBefore;
139
+ // ── Step 4: Community detection ───────────────────────────────────────────
140
+ const communities = this.communityDetector.detect(this.graph);
141
+ this.graph.setCommunities(communities);
142
+ // ── Step 5: Community report generation ───────────────────────────────────
143
+ let reportsGenerated = 0;
144
+ if (this.config.generateCommunityReports) {
145
+ const reports = await this.communitySummarizer.summarizeAll(communities, this.graph);
146
+ for (const report of reports) {
147
+ this.graph.addCommunityReport(report);
148
+ }
149
+ reportsGenerated = reports.length;
150
+ }
151
+ return {
152
+ documentsProcessed: documents.length,
153
+ entitiesExtracted,
154
+ entitiesMerged,
155
+ relationshipsExtracted: relsExtracted,
156
+ communitiesDetected: communities.length,
157
+ communityReportsGenerated: reportsGenerated,
158
+ duration: Date.now() - start,
159
+ };
160
+ }
161
+ // ── Search ────────────────────────────────────────────────────────────────
162
+ /** Unified search entry point. Defaults to 'hybrid' mode. */
163
+ async search(query, options = {}) {
164
+ const mode = options.mode ?? 'hybrid';
165
+ switch (mode) {
166
+ case 'local':
167
+ return this.localSearch(query, options);
168
+ case 'global':
169
+ return this.globalSearch(query, options);
170
+ case 'hybrid':
171
+ default:
172
+ return this.hybridSearch(query, options);
173
+ }
174
+ }
175
+ // ── Local Search ──────────────────────────────────────────────────────────
176
+ /**
177
+ * Entity-centric local search.
178
+ * 1. Find entities whose names match the query keywords.
179
+ * 2. Traverse up to `depth` hops in the knowledge graph.
180
+ * 3. Assemble entity + relationship context.
181
+ * 4. Synthesise an answer with the LLM.
182
+ */
183
+ async localSearch(query, options = {}) {
184
+ const start = Date.now();
185
+ const depth = options.depth ?? this.config.localSearchDepth ?? 2;
186
+ const topK = options.topK ?? this.config.localSearchTopK ?? 5;
187
+ // Seed entities matching the query
188
+ const seedEntities = this.findSeedEntities(query, topK);
189
+ const seedIds = seedEntities.map((e) => e.id);
190
+ // BFS traversal
191
+ const { entities, relationships } = this.graph.bfsNeighbours(seedIds, depth);
192
+ const context = this.buildLocalContext(query, entities, relationships);
193
+ const answer = await this.synthesise(query, context, 'local');
194
+ return {
195
+ mode: 'local',
196
+ query,
197
+ answer,
198
+ entities: options.includeGraph !== false ? entities : [],
199
+ relationships: options.includeGraph !== false ? relationships : [],
200
+ communities: [],
201
+ context,
202
+ duration: Date.now() - start,
203
+ };
204
+ }
205
+ // ── Global Search ─────────────────────────────────────────────────────────
206
+ /**
207
+ * Community-report global search.
208
+ * 1. Score community reports by query relevance (keyword overlap + rating).
209
+ * 2. Assemble the top-K report summaries as context.
210
+ * 3. Synthesise a holistic answer.
211
+ */
212
+ async globalSearch(query, options = {}) {
213
+ const start = Date.now();
214
+ const topK = options.topK ?? this.config.globalSearchTopK ?? 5;
215
+ const rankedReports = this.rankCommunityReports(query, topK);
216
+ const context = this.buildGlobalContext(query, rankedReports);
217
+ const answer = await this.synthesise(query, context, 'global');
218
+ // Collect entities referenced in top communities
219
+ const entityIds = new Set();
220
+ for (const report of rankedReports) {
221
+ for (const id of report.entityIds)
222
+ entityIds.add(id);
223
+ }
224
+ const entities = [...entityIds]
225
+ .map((id) => this.graph.entities.get(id))
226
+ .filter((e) => e !== undefined);
227
+ return {
228
+ mode: 'global',
229
+ query,
230
+ answer,
231
+ entities: options.includeGraph !== false ? entities : [],
232
+ relationships: [],
233
+ communities: options.includeCommunities !== false ? rankedReports : [],
234
+ context,
235
+ duration: Date.now() - start,
236
+ };
237
+ }
238
+ // ── Hybrid Search ─────────────────────────────────────────────────────────
239
+ /**
240
+ * Combines local and global search.
241
+ * Both searches run in parallel; their contexts are merged before the final
242
+ * LLM synthesis call, giving the best of both modes.
243
+ */
244
+ async hybridSearch(query, options = {}) {
245
+ const start = Date.now();
246
+ const [local, global_] = await Promise.all([
247
+ this.localSearch(query, { ...options, mode: 'local' }),
248
+ this.globalSearch(query, { ...options, mode: 'global' }),
249
+ ]);
250
+ const mergedContext = [
251
+ '=== LOCAL KNOWLEDGE GRAPH CONTEXT ===',
252
+ local.context,
253
+ '',
254
+ '=== GLOBAL COMMUNITY CONTEXT ===',
255
+ global_.context,
256
+ ].join('\n');
257
+ const answer = await this.synthesise(query, mergedContext, 'hybrid');
258
+ const allEntityIds = new Set([
259
+ ...local.entities.map((e) => e.id),
260
+ ...global_.entities.map((e) => e.id),
261
+ ]);
262
+ const mergedEntities = [...allEntityIds]
263
+ .map((id) => this.graph.entities.get(id))
264
+ .filter((e) => e !== undefined);
265
+ return {
266
+ mode: 'hybrid',
267
+ query,
268
+ answer,
269
+ entities: options.includeGraph !== false ? mergedEntities : [],
270
+ relationships: options.includeGraph !== false ? local.relationships : [],
271
+ communities: options.includeCommunities !== false ? global_.communities : [],
272
+ context: mergedContext,
273
+ duration: Date.now() - start,
274
+ };
275
+ }
276
+ // ── Graph Access ──────────────────────────────────────────────────────────
277
+ getGraph() {
278
+ return this.graph;
279
+ }
280
+ getStats() {
281
+ return this.graph.getStats();
282
+ }
283
+ clear() {
284
+ this.graph.clear();
285
+ entityCounter = 0;
286
+ relCounter = 0;
287
+ }
288
+ // ── Private helpers ───────────────────────────────────────────────────────
289
+ findSeedEntities(query, topK) {
290
+ // Extract keywords from the query (simple tokenisation)
291
+ const keywords = query
292
+ .toLowerCase()
293
+ .replace(/[^\w\s]/g, '')
294
+ .split(/\s+/)
295
+ .filter((w) => w.length > 2);
296
+ const scored = new Map();
297
+ for (const keyword of keywords) {
298
+ const matches = this.graph.findEntitiesByName(keyword, 20);
299
+ for (const entity of matches) {
300
+ const existing = scored.get(entity.id);
301
+ // Score: +2 for exact match, +1 for partial
302
+ const isExact = entity.name.toLowerCase() === keyword;
303
+ const delta = isExact ? 2 : 1;
304
+ if (existing) {
305
+ existing.score += delta;
306
+ }
307
+ else {
308
+ scored.set(entity.id, { entity, score: delta });
309
+ }
310
+ }
311
+ }
312
+ return [...scored.values()]
313
+ .sort((a, b) => b.score - a.score)
314
+ .slice(0, topK)
315
+ .map((v) => v.entity);
316
+ }
317
+ rankCommunityReports(query, topK) {
318
+ const keywords = query
319
+ .toLowerCase()
320
+ .replace(/[^\w\s]/g, '')
321
+ .split(/\s+/)
322
+ .filter((w) => w.length > 2);
323
+ const scored = [];
324
+ for (const report of this.graph.communityReports.values()) {
325
+ const text = `${report.title} ${report.summary} ${report.findings.join(' ')}`.toLowerCase();
326
+ let score = 0;
327
+ for (const kw of keywords) {
328
+ // Count occurrences of each keyword
329
+ const matches = (text.match(new RegExp(kw, 'g')) ?? []).length;
330
+ score += matches;
331
+ }
332
+ // Boost by LLM importance rating
333
+ score = score * (1 + report.rating / 10);
334
+ scored.push({ report, score });
335
+ }
336
+ return scored
337
+ .sort((a, b) => b.score - a.score)
338
+ .slice(0, topK)
339
+ .map((v) => v.report);
340
+ }
341
+ buildLocalContext(query, entities, relationships) {
342
+ if (entities.length === 0) {
343
+ return 'No relevant entities found in the knowledge graph for this query.';
344
+ }
345
+ const entitySection = entities
346
+ .map((e) => `• ${e.name} [${e.type}]: ${e.description}`)
347
+ .join('\n');
348
+ const relSection = relationships
349
+ .map((r) => {
350
+ const src = this.graph.entities.get(r.sourceId)?.name ?? r.sourceId;
351
+ const tgt = this.graph.entities.get(r.targetId)?.name ?? r.targetId;
352
+ return ` ${src} → [${r.type}] → ${tgt}: ${r.description}`;
353
+ })
354
+ .join('\n');
355
+ return [
356
+ `ENTITIES related to "${query}":`,
357
+ entitySection,
358
+ '',
359
+ 'RELATIONSHIPS:',
360
+ relSection || ' (none found)',
361
+ ].join('\n');
362
+ }
363
+ buildGlobalContext(query, reports) {
364
+ if (reports.length === 0) {
365
+ return 'No community reports available. Please build the graph first using GraphRAGPipeline.build().';
366
+ }
367
+ return reports
368
+ .map((r, i) => {
369
+ const findings = r.findings.map((f) => ` - ${f}`).join('\n');
370
+ return [
371
+ `[Community ${i + 1}] ${r.title} (importance: ${r.rating}/10)`,
372
+ r.summary,
373
+ 'Key findings:',
374
+ findings,
375
+ ].join('\n');
376
+ })
377
+ .join('\n\n---\n\n');
378
+ }
379
+ async synthesise(query, context, mode) {
380
+ const modeHint = {
381
+ local: 'Use the entity and relationship graph context to give a precise, specific answer.',
382
+ global: 'Use the community summaries to give a broad, thematic answer covering the full scope.',
383
+ hybrid: 'Combine the specific entity details and the broad community themes for a comprehensive answer.',
384
+ };
385
+ const prompt = prompts_1.PromptRegistry.get(graph_search_prompt_1.GRAPH_SEARCH_KEY).render({ modeHint: modeHint[mode], context, query });
386
+ return this.config.llm(prompt);
387
+ }
388
+ }
389
+ exports.GraphRAGPipeline = GraphRAGPipeline;
390
+ //# sourceMappingURL=graph-rag-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-rag-pipeline.js","sourceRoot":"","sources":["../../src/graph/graph-rag-pipeline.ts"],"names":[],"mappings":"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"}