@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.
- package/LICENSE +192 -0
- package/README.md +504 -0
- package/dist/__tests__/graph/community-detector.test.d.ts +2 -0
- package/dist/__tests__/graph/community-detector.test.d.ts.map +1 -0
- package/dist/__tests__/graph/community-detector.test.js +87 -0
- package/dist/__tests__/graph/community-detector.test.js.map +1 -0
- package/dist/__tests__/graph/community-summarizer.test.d.ts +2 -0
- package/dist/__tests__/graph/community-summarizer.test.d.ts.map +1 -0
- package/dist/__tests__/graph/community-summarizer.test.js +131 -0
- package/dist/__tests__/graph/community-summarizer.test.js.map +1 -0
- package/dist/__tests__/graph/entity-extractor.test.d.ts +2 -0
- package/dist/__tests__/graph/entity-extractor.test.d.ts.map +1 -0
- package/dist/__tests__/graph/entity-extractor.test.js +129 -0
- package/dist/__tests__/graph/entity-extractor.test.js.map +1 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts +2 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.js +158 -0
- package/dist/__tests__/graph/graph-rag-pipeline.test.js.map +1 -0
- package/dist/__tests__/graph/knowledge-graph.test.d.ts +2 -0
- package/dist/__tests__/graph/knowledge-graph.test.d.ts.map +1 -0
- package/dist/__tests__/graph/knowledge-graph.test.js +208 -0
- package/dist/__tests__/graph/knowledge-graph.test.js.map +1 -0
- package/dist/__tests__/loaders/base.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/base.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/base.loader.test.js +114 -0
- package/dist/__tests__/loaders/base.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/csv-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/csv-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/csv-file.loader.test.js +98 -0
- package/dist/__tests__/loaders/csv-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/directory.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/directory.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/directory.loader.test.js +154 -0
- package/dist/__tests__/loaders/directory.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/html-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/html-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/html-file.loader.test.js +93 -0
- package/dist/__tests__/loaders/html-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/json-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/json-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/json-file.loader.test.js +84 -0
- package/dist/__tests__/loaders/json-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.js +83 -0
- package/dist/__tests__/loaders/markdown-file.loader.test.js.map +1 -0
- package/dist/__tests__/loaders/text-file.loader.test.d.ts +2 -0
- package/dist/__tests__/loaders/text-file.loader.test.d.ts.map +1 -0
- package/dist/__tests__/loaders/text-file.loader.test.js +50 -0
- package/dist/__tests__/loaders/text-file.loader.test.js.map +1 -0
- package/dist/__tests__/rag-pipeline.test.d.ts +2 -0
- package/dist/__tests__/rag-pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/rag-pipeline.test.js +210 -0
- package/dist/__tests__/rag-pipeline.test.js.map +1 -0
- package/dist/__tests__/retrieval/bm25.test.d.ts +2 -0
- package/dist/__tests__/retrieval/bm25.test.d.ts.map +1 -0
- package/dist/__tests__/retrieval/bm25.test.js +86 -0
- package/dist/__tests__/retrieval/bm25.test.js.map +1 -0
- package/dist/__tests__/retrieval/hybrid-search.test.d.ts +2 -0
- package/dist/__tests__/retrieval/hybrid-search.test.d.ts.map +1 -0
- package/dist/__tests__/retrieval/hybrid-search.test.js +85 -0
- package/dist/__tests__/retrieval/hybrid-search.test.js.map +1 -0
- package/dist/__tests__/retrieval/multi-query.test.d.ts +2 -0
- package/dist/__tests__/retrieval/multi-query.test.d.ts.map +1 -0
- package/dist/__tests__/retrieval/multi-query.test.js +90 -0
- package/dist/__tests__/retrieval/multi-query.test.js.map +1 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts +2 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.d.ts.map +1 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.js +97 -0
- package/dist/__tests__/text-splitters/recursive-text-splitter.test.js.map +1 -0
- package/dist/__tests__/utils/similarity.test.d.ts +2 -0
- package/dist/__tests__/utils/similarity.test.d.ts.map +1 -0
- package/dist/__tests__/utils/similarity.test.js +47 -0
- package/dist/__tests__/utils/similarity.test.js.map +1 -0
- package/dist/agentic/agentic-rag.service.d.ts +49 -0
- package/dist/agentic/agentic-rag.service.d.ts.map +1 -0
- package/dist/agentic/agentic-rag.service.js +149 -0
- package/dist/agentic/agentic-rag.service.js.map +1 -0
- package/dist/agentic/decorators/active-learning.decorator.d.ts +19 -0
- package/dist/agentic/decorators/active-learning.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/active-learning.decorator.js +98 -0
- package/dist/agentic/decorators/active-learning.decorator.js.map +1 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts +17 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.js +103 -0
- package/dist/agentic/decorators/adaptive-retrieval.decorator.js.map +1 -0
- package/dist/agentic/decorators/cached.decorator.d.ts +18 -0
- package/dist/agentic/decorators/cached.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/cached.decorator.js +93 -0
- package/dist/agentic/decorators/cached.decorator.js.map +1 -0
- package/dist/agentic/decorators/context-aware.decorator.d.ts +16 -0
- package/dist/agentic/decorators/context-aware.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/context-aware.decorator.js +169 -0
- package/dist/agentic/decorators/context-aware.decorator.js.map +1 -0
- package/dist/agentic/decorators/corrective-rag.decorator.d.ts +16 -0
- package/dist/agentic/decorators/corrective-rag.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/corrective-rag.decorator.js +142 -0
- package/dist/agentic/decorators/corrective-rag.decorator.js.map +1 -0
- package/dist/agentic/decorators/hyde.decorator.d.ts +15 -0
- package/dist/agentic/decorators/hyde.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/hyde.decorator.js +91 -0
- package/dist/agentic/decorators/hyde.decorator.js.map +1 -0
- package/dist/agentic/decorators/index.d.ts +16 -0
- package/dist/agentic/decorators/index.d.ts.map +1 -0
- package/dist/agentic/decorators/index.js +32 -0
- package/dist/agentic/decorators/index.js.map +1 -0
- package/dist/agentic/decorators/multi-hop.decorator.d.ts +15 -0
- package/dist/agentic/decorators/multi-hop.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/multi-hop.decorator.js +109 -0
- package/dist/agentic/decorators/multi-hop.decorator.js.map +1 -0
- package/dist/agentic/decorators/query-planner.decorator.d.ts +20 -0
- package/dist/agentic/decorators/query-planner.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/query-planner.decorator.js +213 -0
- package/dist/agentic/decorators/query-planner.decorator.js.map +1 -0
- package/dist/agentic/decorators/query-rewriter.decorator.d.ts +16 -0
- package/dist/agentic/decorators/query-rewriter.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/query-rewriter.decorator.js +143 -0
- package/dist/agentic/decorators/query-rewriter.decorator.js.map +1 -0
- package/dist/agentic/decorators/self-reflective.decorator.d.ts +20 -0
- package/dist/agentic/decorators/self-reflective.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/self-reflective.decorator.js +189 -0
- package/dist/agentic/decorators/self-reflective.decorator.js.map +1 -0
- package/dist/agentic/decorators/source-verification.decorator.d.ts +15 -0
- package/dist/agentic/decorators/source-verification.decorator.d.ts.map +1 -0
- package/dist/agentic/decorators/source-verification.decorator.js +121 -0
- package/dist/agentic/decorators/source-verification.decorator.js.map +1 -0
- package/dist/agentic/index.d.ts +9 -0
- package/dist/agentic/index.d.ts.map +1 -0
- package/dist/agentic/index.js +25 -0
- package/dist/agentic/index.js.map +1 -0
- package/dist/agentic/types.d.ts +210 -0
- package/dist/agentic/types.d.ts.map +1 -0
- package/dist/agentic/types.js +7 -0
- package/dist/agentic/types.js.map +1 -0
- package/dist/decorators/embeddable.decorator.d.ts +31 -0
- package/dist/decorators/embeddable.decorator.d.ts.map +1 -0
- package/dist/decorators/embeddable.decorator.js +44 -0
- package/dist/decorators/embeddable.decorator.js.map +1 -0
- package/dist/decorators/rag.decorator.d.ts +58 -0
- package/dist/decorators/rag.decorator.d.ts.map +1 -0
- package/dist/decorators/rag.decorator.js +78 -0
- package/dist/decorators/rag.decorator.js.map +1 -0
- package/dist/decorators/semantic-search.decorator.d.ts +69 -0
- package/dist/decorators/semantic-search.decorator.d.ts.map +1 -0
- package/dist/decorators/semantic-search.decorator.js +116 -0
- package/dist/decorators/semantic-search.decorator.js.map +1 -0
- package/dist/embeddings/cohere-embeddings.d.ts +33 -0
- package/dist/embeddings/cohere-embeddings.d.ts.map +1 -0
- package/dist/embeddings/cohere-embeddings.js +91 -0
- package/dist/embeddings/cohere-embeddings.js.map +1 -0
- package/dist/embeddings/openai-embeddings.d.ts +21 -0
- package/dist/embeddings/openai-embeddings.d.ts.map +1 -0
- package/dist/embeddings/openai-embeddings.js +53 -0
- package/dist/embeddings/openai-embeddings.js.map +1 -0
- package/dist/graph/community-detector.d.ts +45 -0
- package/dist/graph/community-detector.d.ts.map +1 -0
- package/dist/graph/community-detector.js +153 -0
- package/dist/graph/community-detector.js.map +1 -0
- package/dist/graph/community-summarizer.d.ts +41 -0
- package/dist/graph/community-summarizer.d.ts.map +1 -0
- package/dist/graph/community-summarizer.js +119 -0
- package/dist/graph/community-summarizer.js.map +1 -0
- package/dist/graph/entity-extractor.d.ts +47 -0
- package/dist/graph/entity-extractor.d.ts.map +1 -0
- package/dist/graph/entity-extractor.js +224 -0
- package/dist/graph/entity-extractor.js.map +1 -0
- package/dist/graph/graph-rag-pipeline.d.ts +83 -0
- package/dist/graph/graph-rag-pipeline.d.ts.map +1 -0
- package/dist/graph/graph-rag-pipeline.js +390 -0
- package/dist/graph/graph-rag-pipeline.js.map +1 -0
- package/dist/graph/graph.types.d.ts +186 -0
- package/dist/graph/graph.types.d.ts.map +1 -0
- package/dist/graph/graph.types.js +20 -0
- package/dist/graph/graph.types.js.map +1 -0
- package/dist/graph/index.d.ts +15 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +31 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/knowledge-graph.d.ts +57 -0
- package/dist/graph/knowledge-graph.d.ts.map +1 -0
- package/dist/graph/knowledge-graph.js +198 -0
- package/dist/graph/knowledge-graph.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/base.loader.d.ts +108 -0
- package/dist/loaders/base.loader.d.ts.map +1 -0
- package/dist/loaders/base.loader.js +123 -0
- package/dist/loaders/base.loader.js.map +1 -0
- package/dist/loaders/csv-file.loader.d.ts +61 -0
- package/dist/loaders/csv-file.loader.d.ts.map +1 -0
- package/dist/loaders/csv-file.loader.js +162 -0
- package/dist/loaders/csv-file.loader.js.map +1 -0
- package/dist/loaders/directory.loader.d.ts +67 -0
- package/dist/loaders/directory.loader.d.ts.map +1 -0
- package/dist/loaders/directory.loader.js +163 -0
- package/dist/loaders/directory.loader.js.map +1 -0
- package/dist/loaders/docx.loader.d.ts +52 -0
- package/dist/loaders/docx.loader.d.ts.map +1 -0
- package/dist/loaders/docx.loader.js +110 -0
- package/dist/loaders/docx.loader.js.map +1 -0
- package/dist/loaders/github.loader.d.ts +114 -0
- package/dist/loaders/github.loader.d.ts.map +1 -0
- package/dist/loaders/github.loader.js +217 -0
- package/dist/loaders/github.loader.js.map +1 -0
- package/dist/loaders/html-file.loader.d.ts +55 -0
- package/dist/loaders/html-file.loader.d.ts.map +1 -0
- package/dist/loaders/html-file.loader.js +170 -0
- package/dist/loaders/html-file.loader.js.map +1 -0
- package/dist/loaders/index.d.ts +52 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +61 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/loaders/json-file.loader.d.ts +51 -0
- package/dist/loaders/json-file.loader.d.ts.map +1 -0
- package/dist/loaders/json-file.loader.js +100 -0
- package/dist/loaders/json-file.loader.js.map +1 -0
- package/dist/loaders/markdown-file.loader.d.ts +61 -0
- package/dist/loaders/markdown-file.loader.d.ts.map +1 -0
- package/dist/loaders/markdown-file.loader.js +148 -0
- package/dist/loaders/markdown-file.loader.js.map +1 -0
- package/dist/loaders/pdf.loader.d.ts +64 -0
- package/dist/loaders/pdf.loader.d.ts.map +1 -0
- package/dist/loaders/pdf.loader.js +163 -0
- package/dist/loaders/pdf.loader.js.map +1 -0
- package/dist/loaders/text-file.loader.d.ts +39 -0
- package/dist/loaders/text-file.loader.d.ts.map +1 -0
- package/dist/loaders/text-file.loader.js +69 -0
- package/dist/loaders/text-file.loader.js.map +1 -0
- package/dist/loaders/web.loader.d.ts +87 -0
- package/dist/loaders/web.loader.d.ts.map +1 -0
- package/dist/loaders/web.loader.js +194 -0
- package/dist/loaders/web.loader.js.map +1 -0
- package/dist/loaders/youtube-transcript.loader.d.ts +92 -0
- package/dist/loaders/youtube-transcript.loader.d.ts.map +1 -0
- package/dist/loaders/youtube-transcript.loader.js +254 -0
- package/dist/loaders/youtube-transcript.loader.js.map +1 -0
- package/dist/memory/index.d.ts +11 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +31 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +96 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +369 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/memory/memory-store.interface.d.ts +73 -0
- package/dist/memory/memory-store.interface.d.ts.map +1 -0
- package/dist/memory/memory-store.interface.js +6 -0
- package/dist/memory/memory-store.interface.js.map +1 -0
- package/dist/memory/stores/buffer-memory.d.ts +47 -0
- package/dist/memory/stores/buffer-memory.d.ts.map +1 -0
- package/dist/memory/stores/buffer-memory.js +280 -0
- package/dist/memory/stores/buffer-memory.js.map +1 -0
- package/dist/memory/stores/hybrid-memory.d.ts +49 -0
- package/dist/memory/stores/hybrid-memory.d.ts.map +1 -0
- package/dist/memory/stores/hybrid-memory.js +194 -0
- package/dist/memory/stores/hybrid-memory.js.map +1 -0
- package/dist/memory/stores/vector-memory.d.ts +48 -0
- package/dist/memory/stores/vector-memory.d.ts.map +1 -0
- package/dist/memory/stores/vector-memory.js +312 -0
- package/dist/memory/stores/vector-memory.js.map +1 -0
- package/dist/memory/types.d.ts +119 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +18 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts +8 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.js +27 -0
- package/dist/prompts/agentic/adaptive-retrieval.prompt.js.map +1 -0
- package/dist/prompts/agentic/corrective-rag.prompt.d.ts +9 -0
- package/dist/prompts/agentic/corrective-rag.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/corrective-rag.prompt.js +23 -0
- package/dist/prompts/agentic/corrective-rag.prompt.js.map +1 -0
- package/dist/prompts/agentic/hyde.prompt.d.ts +9 -0
- package/dist/prompts/agentic/hyde.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/hyde.prompt.js +18 -0
- package/dist/prompts/agentic/hyde.prompt.js.map +1 -0
- package/dist/prompts/agentic/multi-hop.prompt.d.ts +15 -0
- package/dist/prompts/agentic/multi-hop.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/multi-hop.prompt.js +38 -0
- package/dist/prompts/agentic/multi-hop.prompt.js.map +1 -0
- package/dist/prompts/agentic/query-planner.prompt.d.ts +8 -0
- package/dist/prompts/agentic/query-planner.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/query-planner.prompt.js +30 -0
- package/dist/prompts/agentic/query-planner.prompt.js.map +1 -0
- package/dist/prompts/agentic/query-rewriter.prompt.d.ts +10 -0
- package/dist/prompts/agentic/query-rewriter.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/query-rewriter.prompt.js +17 -0
- package/dist/prompts/agentic/query-rewriter.prompt.js.map +1 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts +10 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.js +24 -0
- package/dist/prompts/agentic/self-reflective-improve.prompt.js.map +1 -0
- package/dist/prompts/agentic/self-reflective.prompt.d.ts +9 -0
- package/dist/prompts/agentic/self-reflective.prompt.d.ts.map +1 -0
- package/dist/prompts/agentic/self-reflective.prompt.js +32 -0
- package/dist/prompts/agentic/self-reflective.prompt.js.map +1 -0
- package/dist/prompts/community-summary.prompt.d.ts +9 -0
- package/dist/prompts/community-summary.prompt.d.ts.map +1 -0
- package/dist/prompts/community-summary.prompt.js +30 -0
- package/dist/prompts/community-summary.prompt.js.map +1 -0
- package/dist/prompts/entity-extraction.prompt.d.ts +10 -0
- package/dist/prompts/entity-extraction.prompt.d.ts.map +1 -0
- package/dist/prompts/entity-extraction.prompt.js +39 -0
- package/dist/prompts/entity-extraction.prompt.js.map +1 -0
- package/dist/prompts/graph-search.prompt.d.ts +10 -0
- package/dist/prompts/graph-search.prompt.d.ts.map +1 -0
- package/dist/prompts/graph-search.prompt.js +23 -0
- package/dist/prompts/graph-search.prompt.js.map +1 -0
- package/dist/prompts/index.d.ts +13 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +29 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/rag-answer.prompt.d.ts +9 -0
- package/dist/prompts/rag-answer.prompt.d.ts.map +1 -0
- package/dist/prompts/rag-answer.prompt.js +20 -0
- package/dist/prompts/rag-answer.prompt.js.map +1 -0
- package/dist/rag-pipeline-with-memory.d.ts +68 -0
- package/dist/rag-pipeline-with-memory.d.ts.map +1 -0
- package/dist/rag-pipeline-with-memory.js +186 -0
- package/dist/rag-pipeline-with-memory.js.map +1 -0
- package/dist/rag-pipeline.d.ts +59 -0
- package/dist/rag-pipeline.d.ts.map +1 -0
- package/dist/rag-pipeline.js +181 -0
- package/dist/rag-pipeline.js.map +1 -0
- package/dist/rag.module.d.ts +26 -0
- package/dist/rag.module.d.ts.map +1 -0
- package/dist/rag.module.js +40 -0
- package/dist/rag.module.js.map +1 -0
- package/dist/rag.service.d.ts +96 -0
- package/dist/rag.service.d.ts.map +1 -0
- package/dist/rag.service.js +173 -0
- package/dist/rag.service.js.map +1 -0
- package/dist/retrieval/bm25.d.ts +57 -0
- package/dist/retrieval/bm25.d.ts.map +1 -0
- package/dist/retrieval/bm25.js +106 -0
- package/dist/retrieval/bm25.js.map +1 -0
- package/dist/retrieval/hybrid-search.d.ts +48 -0
- package/dist/retrieval/hybrid-search.d.ts.map +1 -0
- package/dist/retrieval/hybrid-search.js +123 -0
- package/dist/retrieval/hybrid-search.js.map +1 -0
- package/dist/retrieval/multi-query.d.ts +38 -0
- package/dist/retrieval/multi-query.d.ts.map +1 -0
- package/dist/retrieval/multi-query.js +135 -0
- package/dist/retrieval/multi-query.js.map +1 -0
- package/dist/text-splitters/recursive-text-splitter.d.ts +21 -0
- package/dist/text-splitters/recursive-text-splitter.d.ts.map +1 -0
- package/dist/text-splitters/recursive-text-splitter.js +95 -0
- package/dist/text-splitters/recursive-text-splitter.js.map +1 -0
- package/dist/types/index.d.ts +144 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/similarity.d.ts +16 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +58 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/vector-stores/chroma.store.d.ts +42 -0
- package/dist/vector-stores/chroma.store.d.ts.map +1 -0
- package/dist/vector-stores/chroma.store.js +242 -0
- package/dist/vector-stores/chroma.store.js.map +1 -0
- package/dist/vector-stores/memory-vector-store.d.ts +20 -0
- package/dist/vector-stores/memory-vector-store.d.ts.map +1 -0
- package/dist/vector-stores/memory-vector-store.js +94 -0
- package/dist/vector-stores/memory-vector-store.js.map +1 -0
- package/dist/vector-stores/pinecone.store.d.ts +34 -0
- package/dist/vector-stores/pinecone.store.d.ts.map +1 -0
- package/dist/vector-stores/pinecone.store.js +146 -0
- package/dist/vector-stores/pinecone.store.js.map +1 -0
- package/dist/vector-stores/qdrant.store.d.ts +33 -0
- package/dist/vector-stores/qdrant.store.d.ts.map +1 -0
- package/dist/vector-stores/qdrant.store.js +174 -0
- package/dist/vector-stores/qdrant.store.js.map +1 -0
- package/dist/vector-stores/weaviate.store.d.ts +37 -0
- package/dist/vector-stores/weaviate.store.d.ts.map +1 -0
- package/dist/vector-stores/weaviate.store.js +226 -0
- package/dist/vector-stores/weaviate.store.js.map +1 -0
- package/package.json +146 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Document Loader
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for all document loaders in @hazeljs/rag.
|
|
5
|
+
* Every loader:
|
|
6
|
+
* 1. Extends `BaseDocumentLoader`
|
|
7
|
+
* 2. Implements `load(): Promise<Document[]>`
|
|
8
|
+
* 3. May optionally be decorated with `@Loader` for metadata reflection
|
|
9
|
+
*
|
|
10
|
+
* The `@Loader` decorator stores descriptive metadata on the class so that
|
|
11
|
+
* a DocumentLoaderRegistry or DI container can enumerate available loaders,
|
|
12
|
+
* display them in a developer UI, and auto-select the right one by MIME type
|
|
13
|
+
* or file extension.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* @Loader({
|
|
18
|
+
* name: 'MyCustomLoader',
|
|
19
|
+
* description: 'Loads .xyz files from a proprietary database',
|
|
20
|
+
* extensions: ['.xyz'],
|
|
21
|
+
* })
|
|
22
|
+
* export class MyCustomLoader extends BaseDocumentLoader {
|
|
23
|
+
* async load(): Promise<Document[]> {
|
|
24
|
+
* return [this.createDocument('content', { source: 'custom' })];
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import 'reflect-metadata';
|
|
30
|
+
import type { Document, DocumentLoader } from '../types';
|
|
31
|
+
export interface LoaderConfig {
|
|
32
|
+
/** Human-readable name used in logs and the registry. */
|
|
33
|
+
name: string;
|
|
34
|
+
/** Short description of what this loader handles. */
|
|
35
|
+
description?: string;
|
|
36
|
+
/**
|
|
37
|
+
* File extensions this loader handles (with leading dot).
|
|
38
|
+
* @example ['.pdf', '.PDF']
|
|
39
|
+
*/
|
|
40
|
+
extensions?: string[];
|
|
41
|
+
/**
|
|
42
|
+
* MIME types this loader handles.
|
|
43
|
+
* @example ['application/pdf']
|
|
44
|
+
*/
|
|
45
|
+
mimeTypes?: string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Mark a class as a document loader.
|
|
49
|
+
*
|
|
50
|
+
* Stores `LoaderConfig` metadata on the class that can be read at runtime
|
|
51
|
+
* via `getLoaderConfig()`. Applying `@Loader` is optional — any class that
|
|
52
|
+
* extends `BaseDocumentLoader` works without it.
|
|
53
|
+
*/
|
|
54
|
+
export declare function Loader(config: LoaderConfig): ClassDecorator;
|
|
55
|
+
/**
|
|
56
|
+
* Read the `@Loader` config from a class.
|
|
57
|
+
* Returns `undefined` if the decorator was not applied.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getLoaderConfig(target: object): LoaderConfig | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Abstract base class for all document loaders.
|
|
62
|
+
*
|
|
63
|
+
* Provides convenience helpers for creating well-formed `Document` objects
|
|
64
|
+
* and normalising metadata. All loaders must implement `load()`.
|
|
65
|
+
*/
|
|
66
|
+
export declare abstract class BaseDocumentLoader implements DocumentLoader {
|
|
67
|
+
/** Load documents from the source. */
|
|
68
|
+
abstract load(): Promise<Document[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Convenience factory for creating a `Document` with normalised whitespace.
|
|
71
|
+
*
|
|
72
|
+
* @param content The raw text content.
|
|
73
|
+
* @param metadata Optional metadata attached to the document.
|
|
74
|
+
*/
|
|
75
|
+
protected createDocument(content: string, metadata?: Record<string, unknown>): Document;
|
|
76
|
+
/**
|
|
77
|
+
* Split a large string into multiple `Document` objects, one per page or
|
|
78
|
+
* logical section. Useful for loaders that produce multi-page content
|
|
79
|
+
* (PDF, DOCX) where you want one document per page.
|
|
80
|
+
*/
|
|
81
|
+
protected createDocuments(pages: string[], baseMetadata?: Record<string, unknown>): Document[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Simple in-process registry that maps file extensions and MIME types to
|
|
85
|
+
* loader factories. Loaders self-register by calling `registerLoader()`.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* DocumentLoaderRegistry.register(PdfLoader, () => new PdfLoader({ path: '...' }));
|
|
90
|
+
* const loader = DocumentLoaderRegistry.forExtension('.pdf', { path: 'doc.pdf' });
|
|
91
|
+
* const docs = await loader.load();
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
type LoaderFactory<T extends BaseDocumentLoader> = (opts: unknown) => T;
|
|
95
|
+
export declare class DocumentLoaderRegistry {
|
|
96
|
+
private static byExtension;
|
|
97
|
+
private static byMimeType;
|
|
98
|
+
/** Register a loader class and factory for all its declared extensions / MIME types. */
|
|
99
|
+
static register<T extends BaseDocumentLoader>(loaderClass: new (...args: unknown[]) => T, factory: LoaderFactory<T>): void;
|
|
100
|
+
/** Get a loader factory by file extension (e.g. `".pdf"`). */
|
|
101
|
+
static forExtension(ext: string, opts?: unknown): BaseDocumentLoader | undefined;
|
|
102
|
+
/** Get a loader factory by MIME type (e.g. `"application/pdf"`). */
|
|
103
|
+
static forMimeType(mimeType: string, opts?: unknown): BaseDocumentLoader | undefined;
|
|
104
|
+
/** List all registered extensions. */
|
|
105
|
+
static registeredExtensions(): string[];
|
|
106
|
+
}
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=base.loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.loader.d.ts","sourceRoot":"","sources":["../../src/loaders/base.loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQzD,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAI3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAExE;AAID;;;;;GAKG;AACH,8BAAsB,kBAAmB,YAAW,cAAc;IAChE,sCAAsC;IACtC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEpC;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ;IAOvF;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAE;CAW/F;AAID;;;;;;;;;;GAUG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,kBAAkB,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC;AAExE,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAwD;IAClF,OAAO,CAAC,MAAM,CAAC,UAAU,CAAwD;IAEjF,wFAAwF;IACxF,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,kBAAkB,EAC1C,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAC1C,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,IAAI;IAkBP,8DAA8D;IAC9D,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;IAKhF,oEAAoE;IACpE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;IAKpF,sCAAsC;IACtC,MAAM,CAAC,oBAAoB,IAAI,MAAM,EAAE;CAGxC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base Document Loader
|
|
4
|
+
*
|
|
5
|
+
* Abstract base class for all document loaders in @hazeljs/rag.
|
|
6
|
+
* Every loader:
|
|
7
|
+
* 1. Extends `BaseDocumentLoader`
|
|
8
|
+
* 2. Implements `load(): Promise<Document[]>`
|
|
9
|
+
* 3. May optionally be decorated with `@Loader` for metadata reflection
|
|
10
|
+
*
|
|
11
|
+
* The `@Loader` decorator stores descriptive metadata on the class so that
|
|
12
|
+
* a DocumentLoaderRegistry or DI container can enumerate available loaders,
|
|
13
|
+
* display them in a developer UI, and auto-select the right one by MIME type
|
|
14
|
+
* or file extension.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* @Loader({
|
|
19
|
+
* name: 'MyCustomLoader',
|
|
20
|
+
* description: 'Loads .xyz files from a proprietary database',
|
|
21
|
+
* extensions: ['.xyz'],
|
|
22
|
+
* })
|
|
23
|
+
* export class MyCustomLoader extends BaseDocumentLoader {
|
|
24
|
+
* async load(): Promise<Document[]> {
|
|
25
|
+
* return [this.createDocument('content', { source: 'custom' })];
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.DocumentLoaderRegistry = exports.BaseDocumentLoader = void 0;
|
|
32
|
+
exports.Loader = Loader;
|
|
33
|
+
exports.getLoaderConfig = getLoaderConfig;
|
|
34
|
+
require("reflect-metadata");
|
|
35
|
+
// ── Metadata keys ────────────────────────────────────────────────────────────
|
|
36
|
+
const LOADER_METADATA_KEY = Symbol('hazel:rag:loader');
|
|
37
|
+
/**
|
|
38
|
+
* Mark a class as a document loader.
|
|
39
|
+
*
|
|
40
|
+
* Stores `LoaderConfig` metadata on the class that can be read at runtime
|
|
41
|
+
* via `getLoaderConfig()`. Applying `@Loader` is optional — any class that
|
|
42
|
+
* extends `BaseDocumentLoader` works without it.
|
|
43
|
+
*/
|
|
44
|
+
function Loader(config) {
|
|
45
|
+
return (target) => {
|
|
46
|
+
Reflect.defineMetadata(LOADER_METADATA_KEY, config, target);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read the `@Loader` config from a class.
|
|
51
|
+
* Returns `undefined` if the decorator was not applied.
|
|
52
|
+
*/
|
|
53
|
+
function getLoaderConfig(target) {
|
|
54
|
+
return Reflect.getMetadata(LOADER_METADATA_KEY, target);
|
|
55
|
+
}
|
|
56
|
+
// ── Base class ───────────────────────────────────────────────────────────────
|
|
57
|
+
/**
|
|
58
|
+
* Abstract base class for all document loaders.
|
|
59
|
+
*
|
|
60
|
+
* Provides convenience helpers for creating well-formed `Document` objects
|
|
61
|
+
* and normalising metadata. All loaders must implement `load()`.
|
|
62
|
+
*/
|
|
63
|
+
class BaseDocumentLoader {
|
|
64
|
+
/**
|
|
65
|
+
* Convenience factory for creating a `Document` with normalised whitespace.
|
|
66
|
+
*
|
|
67
|
+
* @param content The raw text content.
|
|
68
|
+
* @param metadata Optional metadata attached to the document.
|
|
69
|
+
*/
|
|
70
|
+
createDocument(content, metadata) {
|
|
71
|
+
return {
|
|
72
|
+
content: content.trim(),
|
|
73
|
+
metadata: metadata ?? {},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Split a large string into multiple `Document` objects, one per page or
|
|
78
|
+
* logical section. Useful for loaders that produce multi-page content
|
|
79
|
+
* (PDF, DOCX) where you want one document per page.
|
|
80
|
+
*/
|
|
81
|
+
createDocuments(pages, baseMetadata) {
|
|
82
|
+
return pages
|
|
83
|
+
.map((page, idx) => this.createDocument(page, {
|
|
84
|
+
...baseMetadata,
|
|
85
|
+
pageNumber: idx + 1,
|
|
86
|
+
totalPages: pages.length,
|
|
87
|
+
}))
|
|
88
|
+
.filter((doc) => doc.content.length > 0);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.BaseDocumentLoader = BaseDocumentLoader;
|
|
92
|
+
class DocumentLoaderRegistry {
|
|
93
|
+
/** Register a loader class and factory for all its declared extensions / MIME types. */
|
|
94
|
+
static register(loaderClass, factory) {
|
|
95
|
+
const config = getLoaderConfig(loaderClass);
|
|
96
|
+
if (!config)
|
|
97
|
+
return;
|
|
98
|
+
for (const ext of config.extensions ?? []) {
|
|
99
|
+
DocumentLoaderRegistry.byExtension.set(ext.toLowerCase(), factory);
|
|
100
|
+
}
|
|
101
|
+
for (const mime of config.mimeTypes ?? []) {
|
|
102
|
+
DocumentLoaderRegistry.byMimeType.set(mime.toLowerCase(), factory);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Get a loader factory by file extension (e.g. `".pdf"`). */
|
|
106
|
+
static forExtension(ext, opts) {
|
|
107
|
+
const factory = DocumentLoaderRegistry.byExtension.get(ext.toLowerCase());
|
|
108
|
+
return factory ? factory(opts) : undefined;
|
|
109
|
+
}
|
|
110
|
+
/** Get a loader factory by MIME type (e.g. `"application/pdf"`). */
|
|
111
|
+
static forMimeType(mimeType, opts) {
|
|
112
|
+
const factory = DocumentLoaderRegistry.byMimeType.get(mimeType.toLowerCase());
|
|
113
|
+
return factory ? factory(opts) : undefined;
|
|
114
|
+
}
|
|
115
|
+
/** List all registered extensions. */
|
|
116
|
+
static registeredExtensions() {
|
|
117
|
+
return [...DocumentLoaderRegistry.byExtension.keys()];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.DocumentLoaderRegistry = DocumentLoaderRegistry;
|
|
121
|
+
DocumentLoaderRegistry.byExtension = new Map();
|
|
122
|
+
DocumentLoaderRegistry.byMimeType = new Map();
|
|
123
|
+
//# sourceMappingURL=base.loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.loader.js","sourceRoot":"","sources":["../../src/loaders/base.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSVFileLoader
|
|
3
|
+
*
|
|
4
|
+
* Loads a CSV file and converts each row to a `Document`.
|
|
5
|
+
* No external dependency — uses a built-in parser that handles quoted fields
|
|
6
|
+
* and escaped commas.
|
|
7
|
+
*
|
|
8
|
+
* Each row's content is built from either:
|
|
9
|
+
* - A specific `contentColumns` list (concatenated with a separator), or
|
|
10
|
+
* - All columns joined as `key: value` pairs.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // products.csv has columns: id, name, description, price
|
|
15
|
+
* const loader = new CSVFileLoader({
|
|
16
|
+
* path: './products.csv',
|
|
17
|
+
* contentColumns: ['name', 'description'],
|
|
18
|
+
* metadataColumns: ['id', 'price'],
|
|
19
|
+
* });
|
|
20
|
+
* const docs = await loader.load();
|
|
21
|
+
* // docs[0].content === "Product Name\nProduct description here"
|
|
22
|
+
* // docs[0].metadata === { id: '1', price: '9.99', row: 0, source: 'products.csv' }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { BaseDocumentLoader } from './base.loader';
|
|
26
|
+
import type { Document } from '../types';
|
|
27
|
+
export interface CSVFileLoaderOptions {
|
|
28
|
+
path: string;
|
|
29
|
+
/** Column delimiter. @default ',' */
|
|
30
|
+
delimiter?: string;
|
|
31
|
+
/** Quote character for fields containing delimiters. @default '"' */
|
|
32
|
+
quote?: string;
|
|
33
|
+
/** If true, the first row is a header row. @default true */
|
|
34
|
+
hasHeader?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Columns whose values are concatenated to form the document content.
|
|
37
|
+
* If omitted, all columns are used in `key: value` format.
|
|
38
|
+
*/
|
|
39
|
+
contentColumns?: string[];
|
|
40
|
+
/** Separator used between content column values. @default '\n' */
|
|
41
|
+
contentSeparator?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Columns included in the document metadata.
|
|
44
|
+
* If omitted, all non-content columns are included.
|
|
45
|
+
*/
|
|
46
|
+
metadataColumns?: string[];
|
|
47
|
+
/** Extra metadata merged into every document. */
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
export declare class CSVFileLoader extends BaseDocumentLoader {
|
|
51
|
+
private readonly opts;
|
|
52
|
+
constructor(options: CSVFileLoaderOptions);
|
|
53
|
+
load(): Promise<Document[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Minimal RFC-4180-compliant CSV parser.
|
|
56
|
+
* Handles quoted fields with embedded commas and escaped quotes.
|
|
57
|
+
*/
|
|
58
|
+
private parseCSV;
|
|
59
|
+
private parseLine;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=csv-file.loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-file.loader.d.ts","sourceRoot":"","sources":["../../src/loaders/csv-file.loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAE,kBAAkB,EAAU,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAMa,aAAc,SAAQ,kBAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;gBAE1C,OAAO,EAAE,oBAAoB;IAcnC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA4DjC;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,SAAS;CAgClB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CSVFileLoader
|
|
4
|
+
*
|
|
5
|
+
* Loads a CSV file and converts each row to a `Document`.
|
|
6
|
+
* No external dependency — uses a built-in parser that handles quoted fields
|
|
7
|
+
* and escaped commas.
|
|
8
|
+
*
|
|
9
|
+
* Each row's content is built from either:
|
|
10
|
+
* - A specific `contentColumns` list (concatenated with a separator), or
|
|
11
|
+
* - All columns joined as `key: value` pairs.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // products.csv has columns: id, name, description, price
|
|
16
|
+
* const loader = new CSVFileLoader({
|
|
17
|
+
* path: './products.csv',
|
|
18
|
+
* contentColumns: ['name', 'description'],
|
|
19
|
+
* metadataColumns: ['id', 'price'],
|
|
20
|
+
* });
|
|
21
|
+
* const docs = await loader.load();
|
|
22
|
+
* // docs[0].content === "Product Name\nProduct description here"
|
|
23
|
+
* // docs[0].metadata === { id: '1', price: '9.99', row: 0, source: 'products.csv' }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
27
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
28
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
29
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
30
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
31
|
+
};
|
|
32
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
33
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CSVFileLoader = void 0;
|
|
37
|
+
const promises_1 = require("fs/promises");
|
|
38
|
+
const path_1 = require("path");
|
|
39
|
+
const base_loader_1 = require("./base.loader");
|
|
40
|
+
let CSVFileLoader = class CSVFileLoader extends base_loader_1.BaseDocumentLoader {
|
|
41
|
+
constructor(options) {
|
|
42
|
+
super();
|
|
43
|
+
this.opts = {
|
|
44
|
+
path: options.path,
|
|
45
|
+
delimiter: options.delimiter ?? ',',
|
|
46
|
+
quote: options.quote ?? '"',
|
|
47
|
+
hasHeader: options.hasHeader ?? true,
|
|
48
|
+
contentColumns: options.contentColumns ?? [],
|
|
49
|
+
contentSeparator: options.contentSeparator ?? '\n',
|
|
50
|
+
metadataColumns: options.metadataColumns ?? [],
|
|
51
|
+
metadata: options.metadata ?? {},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async load() {
|
|
55
|
+
const raw = await (0, promises_1.readFile)(this.opts.path, { encoding: 'utf-8' });
|
|
56
|
+
const rows = this.parseCSV(raw);
|
|
57
|
+
if (rows.length === 0)
|
|
58
|
+
return [];
|
|
59
|
+
let headers;
|
|
60
|
+
let dataRows;
|
|
61
|
+
if (this.opts.hasHeader) {
|
|
62
|
+
headers = rows[0];
|
|
63
|
+
dataRows = rows.slice(1);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Generate column names col0, col1, ...
|
|
67
|
+
headers = rows[0].map((_, i) => `col${i}`);
|
|
68
|
+
dataRows = rows;
|
|
69
|
+
}
|
|
70
|
+
const fileName = (0, path_1.basename)(this.opts.path);
|
|
71
|
+
const contentCols = this.opts.contentColumns.length > 0 ? this.opts.contentColumns : headers;
|
|
72
|
+
const metaCols = this.opts.metadataColumns.length > 0
|
|
73
|
+
? this.opts.metadataColumns
|
|
74
|
+
: headers.filter((h) => !contentCols.includes(h));
|
|
75
|
+
return dataRows
|
|
76
|
+
.map((row, rowIdx) => {
|
|
77
|
+
const obj = {};
|
|
78
|
+
headers.forEach((h, i) => {
|
|
79
|
+
obj[h] = row[i] ?? '';
|
|
80
|
+
});
|
|
81
|
+
// Build content
|
|
82
|
+
const contentParts = contentCols
|
|
83
|
+
.filter((col) => col in obj && obj[col].trim().length > 0)
|
|
84
|
+
.map((col) => contentCols.length === 1
|
|
85
|
+
? obj[col] // single column: raw value
|
|
86
|
+
: `${col}: ${obj[col]}` // multiple: key: value
|
|
87
|
+
);
|
|
88
|
+
const content = contentParts.join(this.opts.contentSeparator);
|
|
89
|
+
// Build metadata
|
|
90
|
+
const metadata = {
|
|
91
|
+
source: fileName,
|
|
92
|
+
filePath: this.opts.path,
|
|
93
|
+
row: rowIdx,
|
|
94
|
+
loaderType: 'csv',
|
|
95
|
+
...this.opts.metadata,
|
|
96
|
+
};
|
|
97
|
+
for (const col of metaCols) {
|
|
98
|
+
if (col in obj)
|
|
99
|
+
metadata[col] = obj[col];
|
|
100
|
+
}
|
|
101
|
+
return this.createDocument(content, metadata);
|
|
102
|
+
})
|
|
103
|
+
.filter((doc) => doc.content.length > 0);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Minimal RFC-4180-compliant CSV parser.
|
|
107
|
+
* Handles quoted fields with embedded commas and escaped quotes.
|
|
108
|
+
*/
|
|
109
|
+
parseCSV(text) {
|
|
110
|
+
const rows = [];
|
|
111
|
+
const lines = text.split(/\r?\n/);
|
|
112
|
+
for (const line of lines) {
|
|
113
|
+
if (line.trim() === '')
|
|
114
|
+
continue;
|
|
115
|
+
rows.push(this.parseLine(line));
|
|
116
|
+
}
|
|
117
|
+
return rows;
|
|
118
|
+
}
|
|
119
|
+
parseLine(line) {
|
|
120
|
+
const fields = [];
|
|
121
|
+
const { delimiter, quote } = this.opts;
|
|
122
|
+
let field = '';
|
|
123
|
+
let inQuotes = false;
|
|
124
|
+
let i = 0;
|
|
125
|
+
while (i < line.length) {
|
|
126
|
+
const char = line[i];
|
|
127
|
+
if (char === quote) {
|
|
128
|
+
if (inQuotes && line[i + 1] === quote) {
|
|
129
|
+
// Escaped quote inside quoted field
|
|
130
|
+
field += quote;
|
|
131
|
+
i += 2;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
inQuotes = !inQuotes;
|
|
135
|
+
i++;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (char === delimiter && !inQuotes) {
|
|
139
|
+
fields.push(field);
|
|
140
|
+
field = '';
|
|
141
|
+
i++;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
field += char;
|
|
145
|
+
i++;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
fields.push(field);
|
|
149
|
+
return fields;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
exports.CSVFileLoader = CSVFileLoader;
|
|
153
|
+
exports.CSVFileLoader = CSVFileLoader = __decorate([
|
|
154
|
+
(0, base_loader_1.Loader)({
|
|
155
|
+
name: 'CSVFileLoader',
|
|
156
|
+
description: 'Loads rows from a CSV file, one document per row.',
|
|
157
|
+
extensions: ['.csv'],
|
|
158
|
+
mimeTypes: ['text/csv'],
|
|
159
|
+
}),
|
|
160
|
+
__metadata("design:paramtypes", [Object])
|
|
161
|
+
], CSVFileLoader);
|
|
162
|
+
//# sourceMappingURL=csv-file.loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-file.loader.js","sourceRoot":"","sources":["../../src/loaders/csv-file.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DirectoryLoader
|
|
3
|
+
*
|
|
4
|
+
* Walks a directory (optionally recursively) and loads every file whose
|
|
5
|
+
* extension is matched by a registered loader or the `loaders` map.
|
|
6
|
+
*
|
|
7
|
+
* Supported patterns:
|
|
8
|
+
* 1. **Extension map** (recommended) — pass a `loaders` map of
|
|
9
|
+
* `{ '.pdf': (path) => new PdfLoader({ path }) }` to customise which
|
|
10
|
+
* loader handles which extension.
|
|
11
|
+
* 2. **Auto-detect** — falls back to the built-in file loaders for the
|
|
12
|
+
* common types (.txt, .md, .html, .json, .csv) with default options.
|
|
13
|
+
* 3. **Glob filter** — pass `glob` to only load files matching a pattern.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const loader = new DirectoryLoader({
|
|
18
|
+
* path: './docs',
|
|
19
|
+
* recursive: true,
|
|
20
|
+
* loaders: {
|
|
21
|
+
* '.txt': (p) => new TextFileLoader({ path: p }),
|
|
22
|
+
* '.md': (p) => new MarkdownFileLoader({ path: p, splitByHeading: 'h2' }),
|
|
23
|
+
* '.pdf': (p) => new PdfLoader({ path: p }),
|
|
24
|
+
* },
|
|
25
|
+
* });
|
|
26
|
+
* const docs = await loader.load();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import { BaseDocumentLoader } from './base.loader';
|
|
30
|
+
import type { Document } from '../types';
|
|
31
|
+
import type { BaseDocumentLoader as IBaseDocumentLoader } from './base.loader';
|
|
32
|
+
export type LoaderFactory = (filePath: string) => IBaseDocumentLoader;
|
|
33
|
+
export interface DirectoryLoaderOptions {
|
|
34
|
+
/** Root directory path to scan. */
|
|
35
|
+
path: string;
|
|
36
|
+
/**
|
|
37
|
+
* Map of file extension → loader factory.
|
|
38
|
+
* @example { '.txt': (p) => new TextFileLoader({ path: p }) }
|
|
39
|
+
*/
|
|
40
|
+
loaders?: Record<string, LoaderFactory>;
|
|
41
|
+
/** Recurse into sub-directories. @default true */
|
|
42
|
+
recursive?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Extensions to include. If provided, only files with these extensions are
|
|
45
|
+
* loaded (even if a loader is registered for other types).
|
|
46
|
+
* @example ['.txt', '.md', '.pdf']
|
|
47
|
+
*/
|
|
48
|
+
includeExtensions?: string[];
|
|
49
|
+
/**
|
|
50
|
+
* Extensions to exclude.
|
|
51
|
+
* @example ['.DS_Store', '.gitkeep']
|
|
52
|
+
*/
|
|
53
|
+
excludeExtensions?: string[];
|
|
54
|
+
/** Maximum number of files to load (safety limit). @default 1000 */
|
|
55
|
+
maxFiles?: number;
|
|
56
|
+
/** Extra metadata merged into every document produced by this loader. */
|
|
57
|
+
metadata?: Record<string, unknown>;
|
|
58
|
+
}
|
|
59
|
+
export declare class DirectoryLoader extends BaseDocumentLoader {
|
|
60
|
+
private readonly opts;
|
|
61
|
+
constructor(options: DirectoryLoaderOptions);
|
|
62
|
+
load(): Promise<Document[]>;
|
|
63
|
+
private collectFiles;
|
|
64
|
+
private resolveLoader;
|
|
65
|
+
private autoDetectLoader;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=directory.loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.loader.d.ts","sourceRoot":"","sources":["../../src/loaders/directory.loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAE,kBAAkB,EAAU,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAO/E,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,mBAAmB,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAIa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;gBAE5C,OAAO,EAAE,sBAAsB;IAarC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAwCnB,YAAY;IAiC1B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;CAqBzB"}
|