@ax-llm/ax 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +547 -0
- package/build/module/docs/assets/icons.d.ts +1 -0
- package/build/module/docs/assets/icons.js +19 -0
- package/build/module/docs/assets/icons.js.map +1 -0
- package/build/module/docs/assets/main.d.ts +1 -0
- package/build/module/docs/assets/main.js +629 -0
- package/build/module/docs/assets/main.js.map +1 -0
- package/build/module/docs/assets/navigation.d.ts +1 -0
- package/build/module/docs/assets/navigation.js +3 -0
- package/build/module/docs/assets/navigation.js.map +1 -0
- package/build/module/docs/assets/search.d.ts +1 -0
- package/build/module/docs/assets/search.js +3 -0
- package/build/module/docs/assets/search.js.map +1 -0
- package/build/module/src/ai/anthropic/api.d.ts +24 -0
- package/build/module/src/ai/anthropic/api.js +188 -0
- package/build/module/src/ai/anthropic/api.js.map +1 -0
- package/build/module/src/ai/anthropic/index.d.ts +2 -0
- package/build/module/src/ai/anthropic/index.js +3 -0
- package/build/module/src/ai/anthropic/index.js.map +1 -0
- package/build/module/src/ai/anthropic/info.d.ts +2 -0
- package/build/module/src/ai/anthropic/info.js +34 -0
- package/build/module/src/ai/anthropic/info.js.map +1 -0
- package/build/module/src/ai/anthropic/types.d.ts +140 -0
- package/build/module/src/ai/anthropic/types.js +13 -0
- package/build/module/src/ai/anthropic/types.js.map +1 -0
- package/build/module/src/ai/azure-openai/api.d.ts +34 -0
- package/build/module/src/ai/azure-openai/api.js +42 -0
- package/build/module/src/ai/azure-openai/api.js.map +1 -0
- package/build/module/src/ai/azure-openai/index.d.ts +1 -0
- package/build/module/src/ai/azure-openai/index.js +2 -0
- package/build/module/src/ai/azure-openai/index.js.map +1 -0
- package/build/module/src/ai/balance.d.ts +26 -0
- package/build/module/src/ai/balance.js +87 -0
- package/build/module/src/ai/balance.js.map +1 -0
- package/build/module/src/ai/base.d.ts +56 -0
- package/build/module/src/ai/base.js +328 -0
- package/build/module/src/ai/base.js.map +1 -0
- package/build/module/src/ai/cohere/api.d.ts +35 -0
- package/build/module/src/ai/cohere/api.js +214 -0
- package/build/module/src/ai/cohere/api.js.map +1 -0
- package/build/module/src/ai/cohere/index.d.ts +2 -0
- package/build/module/src/ai/cohere/index.js +3 -0
- package/build/module/src/ai/cohere/index.js.map +1 -0
- package/build/module/src/ai/cohere/info.d.ts +2 -0
- package/build/module/src/ai/cohere/info.js +52 -0
- package/build/module/src/ai/cohere/info.js.map +1 -0
- package/build/module/src/ai/cohere/types.d.ts +85 -0
- package/build/module/src/ai/cohere/types.js +23 -0
- package/build/module/src/ai/cohere/types.js.map +1 -0
- package/build/module/src/ai/deepseek/api.d.ts +27 -0
- package/build/module/src/ai/deepseek/api.js +38 -0
- package/build/module/src/ai/deepseek/api.js.map +1 -0
- package/build/module/src/ai/deepseek/index.d.ts +2 -0
- package/build/module/src/ai/deepseek/index.js +3 -0
- package/build/module/src/ai/deepseek/index.js.map +1 -0
- package/build/module/src/ai/deepseek/info.d.ts +2 -0
- package/build/module/src/ai/deepseek/info.js +16 -0
- package/build/module/src/ai/deepseek/info.js.map +1 -0
- package/build/module/src/ai/deepseek/types.d.ts +8 -0
- package/build/module/src/ai/deepseek/types.js +10 -0
- package/build/module/src/ai/deepseek/types.js.map +1 -0
- package/build/module/src/ai/google-gemini/api.d.ts +34 -0
- package/build/module/src/ai/google-gemini/api.js +268 -0
- package/build/module/src/ai/google-gemini/api.js.map +1 -0
- package/build/module/src/ai/google-gemini/index.d.ts +2 -0
- package/build/module/src/ai/google-gemini/index.js +3 -0
- package/build/module/src/ai/google-gemini/index.js.map +1 -0
- package/build/module/src/ai/google-gemini/info.d.ts +6 -0
- package/build/module/src/ai/google-gemini/info.js +29 -0
- package/build/module/src/ai/google-gemini/info.js.map +1 -0
- package/build/module/src/ai/google-gemini/types.d.ts +151 -0
- package/build/module/src/ai/google-gemini/types.js +38 -0
- package/build/module/src/ai/google-gemini/types.js.map +1 -0
- package/build/module/src/ai/groq/api.d.ts +22 -0
- package/build/module/src/ai/groq/api.js +29 -0
- package/build/module/src/ai/groq/api.js.map +1 -0
- package/build/module/src/ai/groq/index.d.ts +1 -0
- package/build/module/src/ai/groq/index.js +2 -0
- package/build/module/src/ai/groq/index.js.map +1 -0
- package/build/module/src/ai/huggingface/api.d.ts +32 -0
- package/build/module/src/ai/huggingface/api.js +99 -0
- package/build/module/src/ai/huggingface/api.js.map +1 -0
- package/build/module/src/ai/huggingface/index.d.ts +2 -0
- package/build/module/src/ai/huggingface/index.js +3 -0
- package/build/module/src/ai/huggingface/index.js.map +1 -0
- package/build/module/src/ai/huggingface/info.d.ts +6 -0
- package/build/module/src/ai/huggingface/info.js +6 -0
- package/build/module/src/ai/huggingface/info.js.map +1 -0
- package/build/module/src/ai/huggingface/types.d.ts +42 -0
- package/build/module/src/ai/huggingface/types.js +9 -0
- package/build/module/src/ai/huggingface/types.js.map +1 -0
- package/build/module/src/ai/index.d.ts +28 -0
- package/build/module/src/ai/index.js +54 -0
- package/build/module/src/ai/index.js.map +1 -0
- package/build/module/src/ai/mistral/api.d.ts +27 -0
- package/build/module/src/ai/mistral/api.js +38 -0
- package/build/module/src/ai/mistral/api.js.map +1 -0
- package/build/module/src/ai/mistral/index.d.ts +2 -0
- package/build/module/src/ai/mistral/index.js +3 -0
- package/build/module/src/ai/mistral/index.js.map +1 -0
- package/build/module/src/ai/mistral/info.d.ts +2 -0
- package/build/module/src/ai/mistral/info.js +34 -0
- package/build/module/src/ai/mistral/info.js.map +1 -0
- package/build/module/src/ai/mistral/types.d.ts +18 -0
- package/build/module/src/ai/mistral/types.js +21 -0
- package/build/module/src/ai/mistral/types.js.map +1 -0
- package/build/module/src/ai/ollama/api.d.ts +24 -0
- package/build/module/src/ai/ollama/api.js +28 -0
- package/build/module/src/ai/ollama/api.js.map +1 -0
- package/build/module/src/ai/ollama/index.d.ts +1 -0
- package/build/module/src/ai/ollama/index.js +2 -0
- package/build/module/src/ai/ollama/index.js.map +1 -0
- package/build/module/src/ai/openai/api.d.ts +49 -0
- package/build/module/src/ai/openai/api.js +333 -0
- package/build/module/src/ai/openai/api.js.map +1 -0
- package/build/module/src/ai/openai/index.d.ts +2 -0
- package/build/module/src/ai/openai/index.js +3 -0
- package/build/module/src/ai/openai/index.js.map +1 -0
- package/build/module/src/ai/openai/info.d.ts +6 -0
- package/build/module/src/ai/openai/info.js +50 -0
- package/build/module/src/ai/openai/info.js.map +1 -0
- package/build/module/src/ai/openai/types.d.ts +192 -0
- package/build/module/src/ai/openai/types.js +35 -0
- package/build/module/src/ai/openai/types.js.map +1 -0
- package/build/module/src/ai/together/api.d.ts +22 -0
- package/build/module/src/ai/together/api.js +29 -0
- package/build/module/src/ai/together/api.js.map +1 -0
- package/build/module/src/ai/together/index.d.ts +1 -0
- package/build/module/src/ai/together/index.js +2 -0
- package/build/module/src/ai/together/index.js.map +1 -0
- package/build/module/src/ai/together/info.d.ts +2 -0
- package/build/module/src/ai/together/info.js +2 -0
- package/build/module/src/ai/together/info.js.map +1 -0
- package/build/module/src/ai/types.d.ts +70 -0
- package/build/module/src/ai/types.js +2 -0
- package/build/module/src/ai/types.js.map +1 -0
- package/build/module/src/ai/util.d.ts +13 -0
- package/build/module/src/ai/util.js +112 -0
- package/build/module/src/ai/util.js.map +1 -0
- package/build/module/src/db/base.d.ts +24 -0
- package/build/module/src/db/base.js +90 -0
- package/build/module/src/db/base.js.map +1 -0
- package/build/module/src/db/cloudflare.d.ts +20 -0
- package/build/module/src/db/cloudflare.js +98 -0
- package/build/module/src/db/cloudflare.js.map +1 -0
- package/build/module/src/db/index.d.ts +12 -0
- package/build/module/src/db/index.js +23 -0
- package/build/module/src/db/index.js.map +1 -0
- package/build/module/src/db/memory.d.ts +23 -0
- package/build/module/src/db/memory.js +125 -0
- package/build/module/src/db/memory.js.map +1 -0
- package/build/module/src/db/pinecone.d.ts +20 -0
- package/build/module/src/db/pinecone.js +71 -0
- package/build/module/src/db/pinecone.js.map +1 -0
- package/build/module/src/db/types.d.ts +35 -0
- package/build/module/src/db/types.js +3 -0
- package/build/module/src/db/types.js.map +1 -0
- package/build/module/src/db/weaviate.d.ts +20 -0
- package/build/module/src/db/weaviate.js +127 -0
- package/build/module/src/db/weaviate.js.map +1 -0
- package/build/module/src/docs/index.d.ts +4 -0
- package/build/module/src/docs/index.js +5 -0
- package/build/module/src/docs/index.js.map +1 -0
- package/build/module/src/docs/manager.d.ts +45 -0
- package/build/module/src/docs/manager.js +159 -0
- package/build/module/src/docs/manager.js.map +1 -0
- package/build/module/src/docs/reranker.d.ts +7 -0
- package/build/module/src/docs/reranker.js +26 -0
- package/build/module/src/docs/reranker.js.map +1 -0
- package/build/module/src/docs/rewriter.d.ts +4 -0
- package/build/module/src/docs/rewriter.js +9 -0
- package/build/module/src/docs/rewriter.js.map +1 -0
- package/build/module/src/docs/tika.d.ts +21 -0
- package/build/module/src/docs/tika.js +46 -0
- package/build/module/src/docs/tika.js.map +1 -0
- package/build/module/src/dsp/asserts.d.ts +32 -0
- package/build/module/src/dsp/asserts.js +88 -0
- package/build/module/src/dsp/asserts.js.map +1 -0
- package/build/module/src/dsp/eval.d.ts +62 -0
- package/build/module/src/dsp/eval.js +120 -0
- package/build/module/src/dsp/eval.js.map +1 -0
- package/build/module/src/dsp/evaluate.d.ts +12 -0
- package/build/module/src/dsp/evaluate.js +32 -0
- package/build/module/src/dsp/evaluate.js.map +1 -0
- package/build/module/src/dsp/extract.d.ts +25 -0
- package/build/module/src/dsp/extract.js +152 -0
- package/build/module/src/dsp/extract.js.map +1 -0
- package/build/module/src/dsp/generate.d.ts +52 -0
- package/build/module/src/dsp/generate.js +335 -0
- package/build/module/src/dsp/generate.js.map +1 -0
- package/build/module/src/dsp/generate.test.d.ts +1 -0
- package/build/module/src/dsp/generate.test.js +41 -0
- package/build/module/src/dsp/generate.test.js.map +1 -0
- package/build/module/src/dsp/index.d.ts +14 -0
- package/build/module/src/dsp/index.js +10 -0
- package/build/module/src/dsp/index.js.map +1 -0
- package/build/module/src/dsp/loader.d.ts +25 -0
- package/build/module/src/dsp/loader.js +87 -0
- package/build/module/src/dsp/loader.js.map +1 -0
- package/build/module/src/dsp/optimize.d.ts +29 -0
- package/build/module/src/dsp/optimize.js +100 -0
- package/build/module/src/dsp/optimize.js.map +1 -0
- package/build/module/src/dsp/parser.d.ts +86 -0
- package/build/module/src/dsp/parser.js +1437 -0
- package/build/module/src/dsp/parser.js.map +1 -0
- package/build/module/src/dsp/program.d.ts +64 -0
- package/build/module/src/dsp/program.js +129 -0
- package/build/module/src/dsp/program.js.map +1 -0
- package/build/module/src/dsp/prompt.d.ts +25 -0
- package/build/module/src/dsp/prompt.js +178 -0
- package/build/module/src/dsp/prompt.js.map +1 -0
- package/build/module/src/dsp/registry.d.ts +6 -0
- package/build/module/src/dsp/registry.js +15 -0
- package/build/module/src/dsp/registry.js.map +1 -0
- package/build/module/src/dsp/router.d.ts +24 -0
- package/build/module/src/dsp/router.js +72 -0
- package/build/module/src/dsp/router.js.map +1 -0
- package/build/module/src/dsp/sig.d.ts +37 -0
- package/build/module/src/dsp/sig.js +160 -0
- package/build/module/src/dsp/sig.js.map +1 -0
- package/build/module/src/dsp/sig.test.d.ts +1 -0
- package/build/module/src/dsp/sig.test.js +25 -0
- package/build/module/src/dsp/sig.test.js.map +1 -0
- package/build/module/src/dsp/stopwords.d.ts +1 -0
- package/build/module/src/dsp/stopwords.js +1163 -0
- package/build/module/src/dsp/stopwords.js.map +1 -0
- package/build/module/src/dsp/strutil.d.ts +9 -0
- package/build/module/src/dsp/strutil.js +52 -0
- package/build/module/src/dsp/strutil.js.map +1 -0
- package/build/module/src/dsp/util.d.ts +1 -0
- package/build/module/src/dsp/util.js +14 -0
- package/build/module/src/dsp/util.js.map +1 -0
- package/build/module/src/examples/agent.d.ts +1 -0
- package/build/module/src/examples/agent.js +24 -0
- package/build/module/src/examples/agent.js.map +1 -0
- package/build/module/src/examples/chain-of-thought.d.ts +1 -0
- package/build/module/src/examples/chain-of-thought.js +18 -0
- package/build/module/src/examples/chain-of-thought.js.map +1 -0
- package/build/module/src/examples/customer-support.d.ts +1 -0
- package/build/module/src/examples/customer-support.js +22 -0
- package/build/module/src/examples/customer-support.js.map +1 -0
- package/build/module/src/examples/fibonacci.d.ts +1 -0
- package/build/module/src/examples/fibonacci.js +9 -0
- package/build/module/src/examples/fibonacci.js.map +1 -0
- package/build/module/src/examples/food-search.d.ts +1 -0
- package/build/module/src/examples/food-search.js +137 -0
- package/build/module/src/examples/food-search.js.map +1 -0
- package/build/module/src/examples/marketing.d.ts +1 -0
- package/build/module/src/examples/marketing.js +26 -0
- package/build/module/src/examples/marketing.js.map +1 -0
- package/build/module/src/examples/meetings.d.ts +1 -0
- package/build/module/src/examples/meetings.js +149 -0
- package/build/module/src/examples/meetings.js.map +1 -0
- package/build/module/src/examples/qna-tune.d.ts +1 -0
- package/build/module/src/examples/qna-tune.js +29 -0
- package/build/module/src/examples/qna-tune.js.map +1 -0
- package/build/module/src/examples/qna-use-tuned.d.ts +1 -0
- package/build/module/src/examples/qna-use-tuned.js +25 -0
- package/build/module/src/examples/qna-use-tuned.js.map +1 -0
- package/build/module/src/examples/rag-docs.d.ts +1 -0
- package/build/module/src/examples/rag-docs.js +14 -0
- package/build/module/src/examples/rag-docs.js.map +1 -0
- package/build/module/src/examples/rag.d.ts +1 -0
- package/build/module/src/examples/rag.js +14 -0
- package/build/module/src/examples/rag.js.map +1 -0
- package/build/module/src/examples/react.d.ts +1 -0
- package/build/module/src/examples/react.js +36 -0
- package/build/module/src/examples/react.js.map +1 -0
- package/build/module/src/examples/routing.d.ts +1 -0
- package/build/module/src/examples/routing.js +48 -0
- package/build/module/src/examples/routing.js.map +1 -0
- package/build/module/src/examples/streaming1.d.ts +1 -0
- package/build/module/src/examples/streaming1.js +15 -0
- package/build/module/src/examples/streaming1.js.map +1 -0
- package/build/module/src/examples/streaming2.d.ts +1 -0
- package/build/module/src/examples/streaming2.js +24 -0
- package/build/module/src/examples/streaming2.js.map +1 -0
- package/build/module/src/examples/summarize.d.ts +1 -0
- package/build/module/src/examples/summarize.js +27 -0
- package/build/module/src/examples/summarize.js.map +1 -0
- package/build/module/src/examples/vectordb.d.ts +1 -0
- package/build/module/src/examples/vectordb.js +14 -0
- package/build/module/src/examples/vectordb.js.map +1 -0
- package/build/module/src/funcs/code.d.ts +10 -0
- package/build/module/src/funcs/code.js +63 -0
- package/build/module/src/funcs/code.js.map +1 -0
- package/build/module/src/funcs/embed.d.ts +8 -0
- package/build/module/src/funcs/embed.js +29 -0
- package/build/module/src/funcs/embed.js.map +1 -0
- package/build/module/src/funcs/index.d.ts +2 -0
- package/build/module/src/funcs/index.js +3 -0
- package/build/module/src/funcs/index.js.map +1 -0
- package/build/module/src/index.d.ts +9 -0
- package/build/module/src/index.js +15 -0
- package/build/module/src/index.js.map +1 -0
- package/build/module/src/prompts/agent.d.ts +24 -0
- package/build/module/src/prompts/agent.js +65 -0
- package/build/module/src/prompts/agent.js.map +1 -0
- package/build/module/src/prompts/cot.d.ts +9 -0
- package/build/module/src/prompts/cot.js +17 -0
- package/build/module/src/prompts/cot.js.map +1 -0
- package/build/module/src/prompts/index.d.ts +4 -0
- package/build/module/src/prompts/index.js +5 -0
- package/build/module/src/prompts/index.js.map +1 -0
- package/build/module/src/prompts/prompts.test.d.ts +1 -0
- package/build/module/src/prompts/prompts.test.js +48 -0
- package/build/module/src/prompts/prompts.test.js.map +1 -0
- package/build/module/src/prompts/rag.d.ts +23 -0
- package/build/module/src/prompts/rag.js +30 -0
- package/build/module/src/prompts/rag.js.map +1 -0
- package/build/module/src/prompts/react.d.ts +8 -0
- package/build/module/src/prompts/react.js +22 -0
- package/build/module/src/prompts/react.js.map +1 -0
- package/build/module/src/text/functions.d.ts +25 -0
- package/build/module/src/text/functions.js +55 -0
- package/build/module/src/text/functions.js.map +1 -0
- package/build/module/src/text/index.d.ts +3 -0
- package/build/module/src/text/index.js +4 -0
- package/build/module/src/text/index.js.map +1 -0
- package/build/module/src/text/jsonschema.d.ts +2 -0
- package/build/module/src/text/jsonschema.js +96 -0
- package/build/module/src/text/jsonschema.js.map +1 -0
- package/build/module/src/text/memory.d.ts +21 -0
- package/build/module/src/text/memory.js +73 -0
- package/build/module/src/text/memory.js.map +1 -0
- package/build/module/src/text/types.d.ts +57 -0
- package/build/module/src/text/types.js +2 -0
- package/build/module/src/text/types.js.map +1 -0
- package/build/module/src/trace/index.d.ts +171 -0
- package/build/module/src/trace/index.js +67 -0
- package/build/module/src/trace/index.js.map +1 -0
- package/build/module/src/types/index.d.ts +81 -0
- package/build/module/src/types/index.js +2 -0
- package/build/module/src/types/index.js.map +1 -0
- package/build/module/src/util/apicall.d.ts +21 -0
- package/build/module/src/util/apicall.js +137 -0
- package/build/module/src/util/apicall.js.map +1 -0
- package/build/module/src/util/log.d.ts +14 -0
- package/build/module/src/util/log.js +30 -0
- package/build/module/src/util/log.js.map +1 -0
- package/build/module/src/util/other.d.ts +1 -0
- package/build/module/src/util/other.js +4 -0
- package/build/module/src/util/other.js.map +1 -0
- package/build/module/src/util/stream.d.ts +10 -0
- package/build/module/src/util/stream.js +28 -0
- package/build/module/src/util/stream.js.map +1 -0
- package/build/module/src/util/transform.d.ts +8 -0
- package/build/module/src/util/transform.js +57 -0
- package/build/module/src/util/transform.js.map +1 -0
- package/package.json +111 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { apiCall } from '../util/apicall.js';
|
|
2
|
+
import { BaseDB } from './base.js';
|
|
3
|
+
const baseURL = 'https://api.cloudflare.com/client/v4/accounts/';
|
|
4
|
+
/**
|
|
5
|
+
* Cloudflare: DB Service
|
|
6
|
+
* @export
|
|
7
|
+
*/
|
|
8
|
+
export class Cloudflare extends BaseDB {
|
|
9
|
+
apiKey;
|
|
10
|
+
accountId;
|
|
11
|
+
constructor({ apiKey, accountId, fetch, tracer }) {
|
|
12
|
+
if (!apiKey || !accountId) {
|
|
13
|
+
throw new Error('Cloudflare credentials not set');
|
|
14
|
+
}
|
|
15
|
+
super({ name: 'Cloudflare', fetch, tracer });
|
|
16
|
+
this.apiKey = apiKey;
|
|
17
|
+
this.accountId = accountId;
|
|
18
|
+
}
|
|
19
|
+
_upsert = async (req, update, options) => {
|
|
20
|
+
const res = (await apiCall({
|
|
21
|
+
url: new URL(`${this.accountId}/vectorize/indexes/${req.table}/upsert`, baseURL),
|
|
22
|
+
headers: {
|
|
23
|
+
'X-Auth-Key': this.apiKey
|
|
24
|
+
},
|
|
25
|
+
fetch: this.fetch,
|
|
26
|
+
span: options?.span
|
|
27
|
+
}, {
|
|
28
|
+
id: req.id,
|
|
29
|
+
values: req.values,
|
|
30
|
+
namespace: req.namespace,
|
|
31
|
+
metadata: req.metadata
|
|
32
|
+
}));
|
|
33
|
+
if (res.errors) {
|
|
34
|
+
throw new Error(`Cloudflare upsert failed: ${res.errors.map(({ message }) => message).join(', ')}`);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
ids: res.result.ids
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
batchUpsert = async (batchReq, update, options) => {
|
|
41
|
+
if (update) {
|
|
42
|
+
throw new Error('Weaviate does not support batch update');
|
|
43
|
+
}
|
|
44
|
+
if (batchReq.length < 1) {
|
|
45
|
+
throw new Error('Batch request is empty');
|
|
46
|
+
}
|
|
47
|
+
if (!batchReq[0] || !batchReq[0].table) {
|
|
48
|
+
throw new Error('Table name is empty');
|
|
49
|
+
}
|
|
50
|
+
const table = batchReq[0].table;
|
|
51
|
+
const res = (await apiCall({
|
|
52
|
+
url: new URL(`${this.accountId}/vectorize/indexes/${table}/upsert`, baseURL),
|
|
53
|
+
headers: {
|
|
54
|
+
'X-Auth-Key': this.apiKey
|
|
55
|
+
},
|
|
56
|
+
fetch: this.fetch,
|
|
57
|
+
span: options?.span
|
|
58
|
+
}, batchReq.map((req) => ({
|
|
59
|
+
id: req.id,
|
|
60
|
+
values: req.values,
|
|
61
|
+
namespace: req.namespace,
|
|
62
|
+
metadata: req.metadata
|
|
63
|
+
}))));
|
|
64
|
+
if (res.errors) {
|
|
65
|
+
throw new Error(`Cloudflare batch upsert failed: ${res.errors
|
|
66
|
+
.map(({ message }) => message)
|
|
67
|
+
.join(', ')}`);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
ids: res.result.ids
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
query = async (req, options) => {
|
|
74
|
+
const res = (await apiCall({
|
|
75
|
+
url: new URL(`${this.accountId}/vectorize/indexes/${req.table}/query`, baseURL),
|
|
76
|
+
headers: {
|
|
77
|
+
'X-Auth-Key': this.apiKey
|
|
78
|
+
},
|
|
79
|
+
fetch: this.fetch,
|
|
80
|
+
span: options?.span
|
|
81
|
+
}, {
|
|
82
|
+
vector: req.values,
|
|
83
|
+
topK: req.limit || 10,
|
|
84
|
+
returnValues: true
|
|
85
|
+
}));
|
|
86
|
+
if (res.errors) {
|
|
87
|
+
throw new Error(`Cloudflare query failed: ${res.errors.map(({ message }) => message).join(', ')}`);
|
|
88
|
+
}
|
|
89
|
+
const matches = res.result.matches.map(({ id, score, values, metadata }) => ({
|
|
90
|
+
id,
|
|
91
|
+
score,
|
|
92
|
+
values,
|
|
93
|
+
metadata
|
|
94
|
+
}));
|
|
95
|
+
return { matches };
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=cloudflare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../../../src/db/cloudflare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Cloudflare, type CloudflareArgs } from './cloudflare.js';
|
|
2
|
+
import { MemoryDB, type MemoryDBArgs } from './memory.js';
|
|
3
|
+
import { Pinecone, type PineconeArgs } from './pinecone.js';
|
|
4
|
+
import { Weaviate, type WeaviateArgs } from './weaviate.js';
|
|
5
|
+
export * from './types.js';
|
|
6
|
+
export * from './weaviate.js';
|
|
7
|
+
export * from './pinecone.js';
|
|
8
|
+
export * from './cloudflare.js';
|
|
9
|
+
export * from './memory.js';
|
|
10
|
+
export type { BaseArgs, BaseOpOptions } from './base.js';
|
|
11
|
+
export type DBName = 'weaviate' | 'pinecone' | 'memory' | 'cloudflare';
|
|
12
|
+
export declare const DB: (name: DBName, options?: Readonly<CloudflareArgs | PineconeArgs | WeaviateArgs | MemoryDBArgs>) => MemoryDB | Cloudflare | Pinecone | Weaviate;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Cloudflare } from './cloudflare.js';
|
|
2
|
+
import { MemoryDB } from './memory.js';
|
|
3
|
+
import { Pinecone } from './pinecone.js';
|
|
4
|
+
import { Weaviate } from './weaviate.js';
|
|
5
|
+
export * from './types.js';
|
|
6
|
+
export * from './weaviate.js';
|
|
7
|
+
export * from './pinecone.js';
|
|
8
|
+
export * from './cloudflare.js';
|
|
9
|
+
export * from './memory.js';
|
|
10
|
+
export const DB = (name, options = {}) => {
|
|
11
|
+
switch (name) {
|
|
12
|
+
case 'weaviate':
|
|
13
|
+
return new Weaviate(options);
|
|
14
|
+
case 'pinecone':
|
|
15
|
+
return new Pinecone(options);
|
|
16
|
+
case 'cloudflare':
|
|
17
|
+
return new Cloudflare(options);
|
|
18
|
+
case 'memory':
|
|
19
|
+
return new MemoryDB(options);
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`Unknown DB ${name}`);
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAqB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAE5D,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAM5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAChB,IAAY,EACZ,UAEI,EAAE,EACN,EAAE;IACF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,IAAI,QAAQ,CAAC,OAAuB,CAAC,CAAC;QAC/C,KAAK,UAAU;YACb,OAAO,IAAI,QAAQ,CAAC,OAAuB,CAAC,CAAC;QAC/C,KAAK,YAAY;YACf,OAAO,IAAI,UAAU,CAAC,OAAyB,CAAC,CAAC;QACnD,KAAK,QAAQ;YACX,OAAO,IAAI,QAAQ,CAAC,OAAuB,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type BaseArgs, BaseDB, type BaseOpOptions } from './base.js';
|
|
2
|
+
import type { DBQueryRequest, DBQueryResponse, DBUpsertRequest, DBUpsertResponse } from './types.js';
|
|
3
|
+
export interface MemoryDBArgs {
|
|
4
|
+
filename?: string;
|
|
5
|
+
}
|
|
6
|
+
export type DBState = Record<string, Record<string, DBUpsertRequest>>;
|
|
7
|
+
/**
|
|
8
|
+
* MemoryDB: DB Service
|
|
9
|
+
* @export
|
|
10
|
+
*/
|
|
11
|
+
export declare class MemoryDB extends BaseDB {
|
|
12
|
+
private state;
|
|
13
|
+
private filename?;
|
|
14
|
+
constructor({ filename, tracer }?: Readonly<MemoryDBArgs & BaseArgs>);
|
|
15
|
+
_upsert: (req: Readonly<DBUpsertRequest>, _update?: boolean, _options?: Readonly<BaseOpOptions>) => Promise<DBUpsertResponse>;
|
|
16
|
+
_batchUpsert: (batchReq: Readonly<DBUpsertRequest[]>, update?: boolean, _options?: Readonly<BaseOpOptions>) => Promise<DBUpsertResponse>;
|
|
17
|
+
_query: (req: Readonly<DBQueryRequest>, _options?: Readonly<BaseOpOptions>) => Promise<DBQueryResponse>;
|
|
18
|
+
save: (fn?: string | undefined) => Promise<void>;
|
|
19
|
+
load: (fn?: string | undefined) => Promise<void>;
|
|
20
|
+
getDB: () => DBState;
|
|
21
|
+
setDB: (state: DBState) => void;
|
|
22
|
+
clearDB: () => void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { BaseDB } from './base.js';
|
|
3
|
+
/**
|
|
4
|
+
* MemoryDB: DB Service
|
|
5
|
+
* @export
|
|
6
|
+
*/
|
|
7
|
+
export class MemoryDB extends BaseDB {
|
|
8
|
+
state;
|
|
9
|
+
filename;
|
|
10
|
+
constructor({ filename, tracer } = {}) {
|
|
11
|
+
super({ name: 'Memory', tracer });
|
|
12
|
+
this.state = {};
|
|
13
|
+
this.filename = filename;
|
|
14
|
+
if (filename && existsSync(filename)) {
|
|
15
|
+
this.load();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
_upsert = async (req,
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
_update,
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
|
+
_options) => {
|
|
23
|
+
if (!this.state[req.table]) {
|
|
24
|
+
this.state[req.table] = {
|
|
25
|
+
[req.id]: req
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const obj = this.state[req.table];
|
|
30
|
+
if (!obj) {
|
|
31
|
+
throw new Error('Table not found: ' + req.table);
|
|
32
|
+
}
|
|
33
|
+
obj[req.id] = req;
|
|
34
|
+
}
|
|
35
|
+
if (this.filename) {
|
|
36
|
+
await this.save();
|
|
37
|
+
}
|
|
38
|
+
return { ids: [req.id] };
|
|
39
|
+
};
|
|
40
|
+
_batchUpsert = async (batchReq, update,
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
42
|
+
_options) => {
|
|
43
|
+
const ids = [];
|
|
44
|
+
for (const req of batchReq) {
|
|
45
|
+
const res = await this.upsert(req, update);
|
|
46
|
+
ids.push(...res.ids);
|
|
47
|
+
}
|
|
48
|
+
if (this.filename) {
|
|
49
|
+
await this.save();
|
|
50
|
+
}
|
|
51
|
+
return { ids };
|
|
52
|
+
};
|
|
53
|
+
_query = async (req,
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
55
|
+
_options) => {
|
|
56
|
+
const table = this.state[req.table];
|
|
57
|
+
if (!table) {
|
|
58
|
+
return { matches: [] };
|
|
59
|
+
}
|
|
60
|
+
const matches = [];
|
|
61
|
+
Object.entries(table).forEach(([id, data]) => {
|
|
62
|
+
if (req.values && data.values) {
|
|
63
|
+
const score = distance(req.values, data.values);
|
|
64
|
+
matches.push({ id: id, score: score, metadata: data.metadata });
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
matches.sort((a, b) => a.score - b.score);
|
|
68
|
+
if (req.limit) {
|
|
69
|
+
matches.length = req.limit;
|
|
70
|
+
}
|
|
71
|
+
return { matches };
|
|
72
|
+
};
|
|
73
|
+
save = async (fn = this.filename) => {
|
|
74
|
+
if (!fn) {
|
|
75
|
+
throw new Error('Filename not set');
|
|
76
|
+
}
|
|
77
|
+
writeFileSync(fn, JSON.stringify(this.state));
|
|
78
|
+
};
|
|
79
|
+
load = async (fn = this.filename) => {
|
|
80
|
+
if (!fn) {
|
|
81
|
+
throw new Error('Filename not set');
|
|
82
|
+
}
|
|
83
|
+
const data = readFileSync(fn, 'utf8');
|
|
84
|
+
const obj = JSON.parse(data);
|
|
85
|
+
this.state = { ...this.state, ...obj };
|
|
86
|
+
};
|
|
87
|
+
getDB = () => {
|
|
88
|
+
return this.state;
|
|
89
|
+
};
|
|
90
|
+
setDB = (state) => {
|
|
91
|
+
this.state = state;
|
|
92
|
+
};
|
|
93
|
+
clearDB = () => {
|
|
94
|
+
this.state = {};
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const distance = (a, b) => {
|
|
98
|
+
if (a.length !== b.length) {
|
|
99
|
+
throw new Error('Vectors must be of the same length.');
|
|
100
|
+
}
|
|
101
|
+
let dotProduct = 0;
|
|
102
|
+
let normA = 0;
|
|
103
|
+
let normB = 0;
|
|
104
|
+
let zeroVectorA = true;
|
|
105
|
+
let zeroVectorB = true;
|
|
106
|
+
const vectorA = new Float64Array(a);
|
|
107
|
+
const vectorB = new Float64Array(b);
|
|
108
|
+
for (let i = 0; i < vectorA.length; i++) {
|
|
109
|
+
dotProduct += vectorA[i] * vectorB[i];
|
|
110
|
+
normA += vectorA[i] * vectorA[i];
|
|
111
|
+
normB += vectorB[i] * vectorB[i];
|
|
112
|
+
if (vectorA[i] !== 0)
|
|
113
|
+
zeroVectorA = false;
|
|
114
|
+
if (vectorB[i] !== 0)
|
|
115
|
+
zeroVectorB = false;
|
|
116
|
+
}
|
|
117
|
+
if (zeroVectorA || zeroVectorB) {
|
|
118
|
+
return 1; // Return maximum distance if one vector is zero
|
|
119
|
+
}
|
|
120
|
+
const sqrtNormA = Math.sqrt(normA);
|
|
121
|
+
const sqrtNormB = Math.sqrt(normB);
|
|
122
|
+
const similarity = dotProduct / (sqrtNormA * sqrtNormB);
|
|
123
|
+
return 1 - similarity; // Returning distance as 1 - cosine similarity.
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/db/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { type BaseArgs, BaseDB, type BaseOpOptions } from './base.js';
|
|
3
|
+
import type { DBQueryRequest, DBQueryResponse, DBUpsertRequest, DBUpsertResponse } from './types.js';
|
|
4
|
+
export interface PineconeArgs {
|
|
5
|
+
apiKey: string;
|
|
6
|
+
host: string;
|
|
7
|
+
fetch?: typeof fetch;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Pinecone: DB Service
|
|
11
|
+
* @export
|
|
12
|
+
*/
|
|
13
|
+
export declare class Pinecone extends BaseDB {
|
|
14
|
+
private apiKey;
|
|
15
|
+
private apiURL;
|
|
16
|
+
constructor({ apiKey, host, fetch, tracer }: Readonly<PineconeArgs & BaseArgs>);
|
|
17
|
+
_upsert: (req: Readonly<DBUpsertRequest>, update?: boolean, options?: Readonly<BaseOpOptions>) => Promise<DBUpsertResponse>;
|
|
18
|
+
_batchUpsert: (batchReq: Readonly<DBUpsertRequest[]>, _update?: boolean, options?: Readonly<BaseOpOptions>) => Promise<DBUpsertResponse>;
|
|
19
|
+
query: (req: Readonly<DBQueryRequest>, options?: Readonly<BaseOpOptions>) => Promise<DBQueryResponse>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { apiCall } from '../util/apicall.js';
|
|
2
|
+
import { BaseDB } from './base.js';
|
|
3
|
+
const createPineconeQueryRequest = (req) => {
|
|
4
|
+
const pineconeQueryRequest = {
|
|
5
|
+
namespace: req.namespace,
|
|
6
|
+
topK: req.limit || 10,
|
|
7
|
+
filter: {},
|
|
8
|
+
includeValues: true,
|
|
9
|
+
includeMetadata: true,
|
|
10
|
+
vector: req.values ?? [],
|
|
11
|
+
id: req.id
|
|
12
|
+
};
|
|
13
|
+
return pineconeQueryRequest;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Pinecone: DB Service
|
|
17
|
+
* @export
|
|
18
|
+
*/
|
|
19
|
+
export class Pinecone extends BaseDB {
|
|
20
|
+
apiKey;
|
|
21
|
+
apiURL;
|
|
22
|
+
constructor({ apiKey, host, fetch, tracer }) {
|
|
23
|
+
if (!apiKey || apiKey === '') {
|
|
24
|
+
throw new Error('Pinecone API key not set');
|
|
25
|
+
}
|
|
26
|
+
super({ name: 'Pinecone', fetch, tracer });
|
|
27
|
+
this.apiKey = apiKey;
|
|
28
|
+
this.apiURL = host;
|
|
29
|
+
}
|
|
30
|
+
_upsert = async (req, update, options) => {
|
|
31
|
+
await this._batchUpsert([req], update, options);
|
|
32
|
+
return { ids: [req.id] };
|
|
33
|
+
};
|
|
34
|
+
_batchUpsert = async (batchReq, _update, options) => {
|
|
35
|
+
if (batchReq.length === 0) {
|
|
36
|
+
throw new Error('Batch request is empty');
|
|
37
|
+
}
|
|
38
|
+
await apiCall({
|
|
39
|
+
url: this.apiURL,
|
|
40
|
+
headers: { Authorization: `Bearer ${this.apiKey}` },
|
|
41
|
+
name: '/vectors/upsert',
|
|
42
|
+
fetch: this.fetch,
|
|
43
|
+
span: options?.span
|
|
44
|
+
}, batchReq.map(({ id, values = [], metadata }) => ({
|
|
45
|
+
id,
|
|
46
|
+
values,
|
|
47
|
+
metadata
|
|
48
|
+
})));
|
|
49
|
+
return { ids: batchReq.map(({ id }) => id) };
|
|
50
|
+
};
|
|
51
|
+
query = async (req, options) => {
|
|
52
|
+
if (req.text) {
|
|
53
|
+
throw new Error('Pinecone does not support text');
|
|
54
|
+
}
|
|
55
|
+
const res = (await apiCall({
|
|
56
|
+
url: this.apiURL,
|
|
57
|
+
headers: { Authorization: `Bearer ${this.apiKey}` },
|
|
58
|
+
name: '/query',
|
|
59
|
+
fetch: this.fetch,
|
|
60
|
+
span: options?.span
|
|
61
|
+
}, createPineconeQueryRequest(req)));
|
|
62
|
+
const matches = res.matches.map(({ id, score, values, metadata }) => ({
|
|
63
|
+
id,
|
|
64
|
+
score,
|
|
65
|
+
metadata,
|
|
66
|
+
values
|
|
67
|
+
}));
|
|
68
|
+
return { matches };
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=pinecone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinecone.js","sourceRoot":"","sources":["../../../../src/db/pinecone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type DBUpsertRequest = {
|
|
2
|
+
id: string;
|
|
3
|
+
text?: string;
|
|
4
|
+
values?: readonly number[];
|
|
5
|
+
metadata?: Record<string, string>;
|
|
6
|
+
table: string;
|
|
7
|
+
namespace?: string;
|
|
8
|
+
};
|
|
9
|
+
export type DBUpsertResponse = {
|
|
10
|
+
ids: string[];
|
|
11
|
+
};
|
|
12
|
+
export type DBQueryRequest = {
|
|
13
|
+
id?: string;
|
|
14
|
+
text?: string;
|
|
15
|
+
values?: readonly number[];
|
|
16
|
+
table: string;
|
|
17
|
+
columns?: string[];
|
|
18
|
+
limit?: number;
|
|
19
|
+
namespace?: string;
|
|
20
|
+
};
|
|
21
|
+
export type DBQueryResponse = {
|
|
22
|
+
matches: {
|
|
23
|
+
id: string;
|
|
24
|
+
score: number;
|
|
25
|
+
metadata?: Record<string, string>;
|
|
26
|
+
table?: string;
|
|
27
|
+
}[];
|
|
28
|
+
};
|
|
29
|
+
export interface DBService extends DBQueryService {
|
|
30
|
+
upsert(req: Readonly<DBUpsertRequest>, update?: boolean): Promise<DBUpsertResponse>;
|
|
31
|
+
batchUpsert(batchReq: Readonly<DBUpsertRequest[]>, update?: boolean): Promise<DBUpsertResponse>;
|
|
32
|
+
}
|
|
33
|
+
export interface DBQueryService {
|
|
34
|
+
query(req: Readonly<DBQueryRequest>): Promise<DBQueryResponse>;
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/db/types.ts"],"names":[],"mappings":"AAAA,aAAa"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { type BaseArgs, BaseDB, type BaseOpOptions } from './base.js';
|
|
3
|
+
import type { DBQueryRequest, DBQueryResponse, DBUpsertRequest, DBUpsertResponse } from './types.js';
|
|
4
|
+
export interface WeaviateArgs {
|
|
5
|
+
apiKey: string;
|
|
6
|
+
host: string;
|
|
7
|
+
fetch?: typeof fetch;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Weaviate: DB Service
|
|
11
|
+
* @export
|
|
12
|
+
*/
|
|
13
|
+
export declare class Weaviate extends BaseDB {
|
|
14
|
+
private apiKey;
|
|
15
|
+
private apiURL;
|
|
16
|
+
constructor({ apiKey, host, fetch, tracer }: Readonly<WeaviateArgs & BaseArgs>);
|
|
17
|
+
_upsert: (req: Readonly<DBUpsertRequest>, update?: boolean, options?: Readonly<BaseOpOptions>) => Promise<DBUpsertResponse>;
|
|
18
|
+
_batchUpsert: (batchReq: Readonly<DBUpsertRequest[]>, update?: boolean, options?: Readonly<BaseOpOptions>) => Promise<DBUpsertResponse>;
|
|
19
|
+
_query: (req: Readonly<DBQueryRequest>, options?: Readonly<BaseOpOptions>) => Promise<DBQueryResponse>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { apiCall } from '../util/apicall.js';
|
|
2
|
+
import { BaseDB } from './base.js';
|
|
3
|
+
/**
|
|
4
|
+
* Weaviate: DB Service
|
|
5
|
+
* @export
|
|
6
|
+
*/
|
|
7
|
+
export class Weaviate extends BaseDB {
|
|
8
|
+
apiKey;
|
|
9
|
+
apiURL;
|
|
10
|
+
constructor({ apiKey, host, fetch, tracer }) {
|
|
11
|
+
if (!apiKey || apiKey === '') {
|
|
12
|
+
throw new Error('Weaviate API key not set');
|
|
13
|
+
}
|
|
14
|
+
super({ name: 'Weaviate', fetch, tracer });
|
|
15
|
+
this.apiKey = apiKey;
|
|
16
|
+
this.apiURL = host;
|
|
17
|
+
}
|
|
18
|
+
_upsert = async (req, update, options) => {
|
|
19
|
+
const res = (await apiCall({
|
|
20
|
+
url: this.apiURL,
|
|
21
|
+
headers: { Authorization: `Bearer ${this.apiKey}` },
|
|
22
|
+
name: `/v1/objects/${req.table}/${req.id}`,
|
|
23
|
+
put: update ? true : false,
|
|
24
|
+
fetch: this.fetch,
|
|
25
|
+
span: options?.span
|
|
26
|
+
}, {
|
|
27
|
+
id: req.id,
|
|
28
|
+
class: req.table,
|
|
29
|
+
tenant: req.namespace,
|
|
30
|
+
vector: req.values,
|
|
31
|
+
properties: req.metadata ?? {}
|
|
32
|
+
}));
|
|
33
|
+
if (res?.result?.errors) {
|
|
34
|
+
throw new Error(`Weaviate upsert failed: ${res.result.errors.error
|
|
35
|
+
.map(({ message }) => message)
|
|
36
|
+
.join(', ')}`);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
ids: [res.id]
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
_batchUpsert = async (batchReq, update, options) => {
|
|
43
|
+
if (update) {
|
|
44
|
+
throw new Error('Weaviate does not support batch update');
|
|
45
|
+
}
|
|
46
|
+
if (batchReq.length === 0) {
|
|
47
|
+
throw new Error('Batch request is empty');
|
|
48
|
+
}
|
|
49
|
+
const objects = batchReq.map((req) => ({
|
|
50
|
+
id: req.id,
|
|
51
|
+
class: req.table,
|
|
52
|
+
tenant: req.namespace,
|
|
53
|
+
vector: req.values,
|
|
54
|
+
properties: req.metadata ?? {}
|
|
55
|
+
}));
|
|
56
|
+
const res = (await apiCall({
|
|
57
|
+
url: this.apiURL,
|
|
58
|
+
headers: { Authorization: `Bearer ${this.apiKey}` },
|
|
59
|
+
name: '/v1/batch/objects',
|
|
60
|
+
fetch: this.fetch,
|
|
61
|
+
span: options?.span
|
|
62
|
+
}, { objects }));
|
|
63
|
+
if (res?.some(({ result }) => result?.errors)) {
|
|
64
|
+
throw new Error(`Weaviate batch upsert failed: ${res
|
|
65
|
+
.map(({ result }) => result?.errors?.error.map(({ message }) => message).join(', '))
|
|
66
|
+
.join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
ids: res.map(({ id }) => id)
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
_query = async (req, options) => {
|
|
73
|
+
let filter = '';
|
|
74
|
+
if (req.columns && req.columns.length === 0) {
|
|
75
|
+
throw new Error('Weaviate requires at least one column');
|
|
76
|
+
}
|
|
77
|
+
if (req.values) {
|
|
78
|
+
filter = `nearVector: {
|
|
79
|
+
vector: [${req.values.join(',')}],
|
|
80
|
+
}`;
|
|
81
|
+
}
|
|
82
|
+
else if (req.text) {
|
|
83
|
+
filter = `nearText: {
|
|
84
|
+
concepts: ['${req.text}'],
|
|
85
|
+
}`;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw new Error('Weaviate requires either text or values');
|
|
89
|
+
}
|
|
90
|
+
const res = (await apiCall({
|
|
91
|
+
url: this.apiURL,
|
|
92
|
+
headers: { Authorization: `Bearer ${this.apiKey}` },
|
|
93
|
+
name: '/v1/graphql',
|
|
94
|
+
fetch: this.fetch,
|
|
95
|
+
span: options?.span
|
|
96
|
+
}, {
|
|
97
|
+
query: `{
|
|
98
|
+
Get {
|
|
99
|
+
${req.table} (
|
|
100
|
+
limit: ${req.limit || 10},
|
|
101
|
+
${filter}
|
|
102
|
+
) {
|
|
103
|
+
${req.columns?.join('\n')}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}`
|
|
107
|
+
}));
|
|
108
|
+
if (res.errors) {
|
|
109
|
+
throw new Error(`Weaviate query failed: ${res.errors
|
|
110
|
+
.map(({ message }) => message)
|
|
111
|
+
.join(', ')}`);
|
|
112
|
+
}
|
|
113
|
+
const resMatches = res.data.Get[req.table];
|
|
114
|
+
if (!resMatches) {
|
|
115
|
+
return { matches: [] };
|
|
116
|
+
}
|
|
117
|
+
const matches = resMatches.map((match) => {
|
|
118
|
+
return {
|
|
119
|
+
id: match.id,
|
|
120
|
+
score: 1,
|
|
121
|
+
metadata: match
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
return { matches };
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=weaviate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weaviate.js","sourceRoot":"","sources":["../../../../src/db/weaviate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
|