langchain 0.0.202 → 0.0.204-rc.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/dist/cache/cloudflare_kv.cjs +15 -69
- package/dist/cache/cloudflare_kv.d.ts +1 -42
- package/dist/cache/cloudflare_kv.js +1 -67
- package/dist/cache/momento.cjs +15 -135
- package/dist/cache/momento.d.ts +1 -91
- package/dist/cache/momento.js +1 -133
- package/dist/cache/upstash_redis.cjs +15 -72
- package/dist/cache/upstash_redis.d.ts +1 -45
- package/dist/cache/upstash_redis.js +1 -70
- package/dist/callbacks/handlers/llmonitor.cjs +14 -238
- package/dist/callbacks/handlers/llmonitor.d.ts +1 -35
- package/dist/callbacks/handlers/llmonitor.js +1 -233
- package/dist/chains/openai_moderation.cjs +2 -2
- package/dist/chains/openai_moderation.d.ts +1 -1
- package/dist/chains/openai_moderation.js +1 -1
- package/dist/chat_models/anthropic.d.ts +4 -4
- package/dist/chat_models/baiduwenxin.cjs +15 -411
- package/dist/chat_models/baiduwenxin.d.ts +1 -150
- package/dist/chat_models/baiduwenxin.js +1 -409
- package/dist/chat_models/bedrock/index.cjs +15 -33
- package/dist/chat_models/bedrock/index.d.ts +1 -23
- package/dist/chat_models/bedrock/index.js +1 -29
- package/dist/chat_models/bedrock/web.cjs +15 -360
- package/dist/chat_models/bedrock/web.d.ts +1 -82
- package/dist/chat_models/bedrock/web.js +1 -356
- package/dist/chat_models/cloudflare_workersai.cjs +15 -216
- package/dist/chat_models/cloudflare_workersai.d.ts +1 -68
- package/dist/chat_models/cloudflare_workersai.js +1 -214
- package/dist/chat_models/fireworks.cjs +15 -89
- package/dist/chat_models/fireworks.d.ts +1 -43
- package/dist/chat_models/fireworks.js +1 -87
- package/dist/chat_models/googlepalm.cjs +15 -235
- package/dist/chat_models/googlepalm.d.ts +1 -108
- package/dist/chat_models/googlepalm.js +1 -233
- package/dist/chat_models/googlevertexai/index.cjs +15 -40
- package/dist/chat_models/googlevertexai/index.d.ts +1 -28
- package/dist/chat_models/googlevertexai/index.js +1 -38
- package/dist/chat_models/googlevertexai/web.cjs +15 -39
- package/dist/chat_models/googlevertexai/web.d.ts +1 -28
- package/dist/chat_models/googlevertexai/web.js +1 -37
- package/dist/chat_models/iflytek_xinghuo/index.cjs +14 -40
- package/dist/chat_models/iflytek_xinghuo/index.d.ts +1 -13
- package/dist/chat_models/iflytek_xinghuo/index.js +1 -36
- package/dist/chat_models/iflytek_xinghuo/web.cjs +15 -36
- package/dist/chat_models/iflytek_xinghuo/web.d.ts +1 -13
- package/dist/chat_models/iflytek_xinghuo/web.js +1 -34
- package/dist/chat_models/llama_cpp.cjs +15 -275
- package/dist/chat_models/llama_cpp.d.ts +1 -71
- package/dist/chat_models/llama_cpp.js +1 -273
- package/dist/chat_models/minimax.cjs +15 -578
- package/dist/chat_models/minimax.d.ts +1 -369
- package/dist/chat_models/minimax.js +1 -576
- package/dist/chat_models/ollama.cjs +15 -394
- package/dist/chat_models/ollama.d.ts +1 -127
- package/dist/chat_models/ollama.js +1 -392
- package/dist/chat_models/openai.cjs +4 -698
- package/dist/chat_models/openai.d.ts +4 -137
- package/dist/chat_models/openai.js +2 -695
- package/dist/chat_models/portkey.cjs +15 -167
- package/dist/chat_models/portkey.d.ts +1 -17
- package/dist/chat_models/portkey.js +1 -165
- package/dist/chat_models/yandex.cjs +15 -132
- package/dist/chat_models/yandex.d.ts +1 -30
- package/dist/chat_models/yandex.js +1 -130
- package/dist/document_loaders/fs/openai_whisper_audio.cjs +2 -2
- package/dist/document_loaders/fs/openai_whisper_audio.d.ts +1 -1
- package/dist/document_loaders/fs/openai_whisper_audio.js +1 -1
- package/dist/document_loaders/fs/pdf.cjs +1 -1
- package/dist/document_loaders/fs/pdf.js +1 -1
- package/dist/document_loaders/web/pdf.cjs +1 -1
- package/dist/document_loaders/web/pdf.js +1 -1
- package/dist/document_transformers/html_to_text.cjs +15 -47
- package/dist/document_transformers/html_to_text.d.ts +1 -30
- package/dist/document_transformers/html_to_text.js +1 -45
- package/dist/document_transformers/mozilla_readability.cjs +15 -53
- package/dist/document_transformers/mozilla_readability.d.ts +1 -31
- package/dist/document_transformers/mozilla_readability.js +1 -51
- package/dist/embeddings/bedrock.cjs +15 -109
- package/dist/embeddings/bedrock.d.ts +1 -71
- package/dist/embeddings/bedrock.js +1 -107
- package/dist/embeddings/cloudflare_workersai.cjs +15 -67
- package/dist/embeddings/cloudflare_workersai.d.ts +1 -28
- package/dist/embeddings/cloudflare_workersai.js +1 -65
- package/dist/embeddings/cohere.cjs +15 -124
- package/dist/embeddings/cohere.d.ts +1 -66
- package/dist/embeddings/cohere.js +1 -122
- package/dist/embeddings/googlepalm.cjs +15 -88
- package/dist/embeddings/googlepalm.d.ts +1 -61
- package/dist/embeddings/googlepalm.js +1 -86
- package/dist/embeddings/googlevertexai.cjs +15 -81
- package/dist/embeddings/googlevertexai.d.ts +1 -54
- package/dist/embeddings/googlevertexai.js +1 -79
- package/dist/embeddings/gradient_ai.cjs +15 -101
- package/dist/embeddings/gradient_ai.d.ts +1 -48
- package/dist/embeddings/gradient_ai.js +1 -99
- package/dist/embeddings/hf.cjs +15 -75
- package/dist/embeddings/hf.d.ts +1 -41
- package/dist/embeddings/hf.js +1 -73
- package/dist/embeddings/hf_transformers.cjs +15 -87
- package/dist/embeddings/hf_transformers.d.ts +1 -47
- package/dist/embeddings/hf_transformers.js +1 -85
- package/dist/embeddings/llama_cpp.cjs +15 -81
- package/dist/embeddings/llama_cpp.d.ts +1 -42
- package/dist/embeddings/llama_cpp.js +1 -79
- package/dist/embeddings/minimax.cjs +15 -165
- package/dist/embeddings/minimax.d.ts +1 -119
- package/dist/embeddings/minimax.js +1 -163
- package/dist/embeddings/ollama.cjs +15 -118
- package/dist/embeddings/ollama.d.ts +1 -34
- package/dist/embeddings/ollama.js +1 -116
- package/dist/embeddings/openai.cjs +2 -240
- package/dist/embeddings/openai.d.ts +1 -82
- package/dist/embeddings/openai.js +1 -239
- package/dist/embeddings/tensorflow.cjs +3 -96
- package/dist/embeddings/tensorflow.d.ts +1 -59
- package/dist/embeddings/tensorflow.js +1 -83
- package/dist/embeddings/voyage.cjs +15 -118
- package/dist/embeddings/voyage.d.ts +1 -66
- package/dist/embeddings/voyage.js +1 -116
- package/dist/experimental/chat_models/ollama_functions.d.ts +1 -1
- package/dist/experimental/masking/index.cjs +9 -0
- package/dist/experimental/masking/index.d.ts +4 -0
- package/dist/experimental/masking/index.js +3 -0
- package/dist/experimental/masking/parser.cjs +134 -0
- package/dist/experimental/masking/parser.d.ts +44 -0
- package/dist/experimental/masking/parser.js +130 -0
- package/dist/experimental/masking/regex_masking_transformer.cjs +145 -0
- package/dist/experimental/masking/regex_masking_transformer.d.ts +48 -0
- package/dist/experimental/masking/regex_masking_transformer.js +141 -0
- package/dist/experimental/masking/transformer.cjs +9 -0
- package/dist/experimental/masking/transformer.d.ts +7 -0
- package/dist/experimental/masking/transformer.js +5 -0
- package/dist/experimental/masking/types.cjs +2 -0
- package/dist/experimental/masking/types.d.ts +25 -0
- package/dist/experimental/masking/types.js +1 -0
- package/dist/experimental/openai_assistant/index.cjs +3 -3
- package/dist/experimental/openai_assistant/index.d.ts +1 -1
- package/dist/experimental/openai_assistant/index.js +1 -1
- package/dist/experimental/openai_assistant/schema.d.ts +1 -1
- package/dist/experimental/openai_files/index.cjs +2 -2
- package/dist/experimental/openai_files/index.d.ts +1 -1
- package/dist/experimental/openai_files/index.js +1 -1
- package/dist/graphs/neo4j_graph.cjs +3 -254
- package/dist/graphs/neo4j_graph.d.ts +1 -63
- package/dist/graphs/neo4j_graph.js +1 -241
- package/dist/llms/ai21.cjs +15 -200
- package/dist/llms/ai21.d.ts +1 -100
- package/dist/llms/ai21.js +1 -198
- package/dist/llms/aleph_alpha.cjs +15 -374
- package/dist/llms/aleph_alpha.d.ts +1 -161
- package/dist/llms/aleph_alpha.js +1 -372
- package/dist/llms/bedrock/web.cjs +15 -310
- package/dist/llms/bedrock/web.d.ts +1 -66
- package/dist/llms/bedrock/web.js +1 -308
- package/dist/llms/cloudflare_workersai.cjs +15 -168
- package/dist/llms/cloudflare_workersai.d.ts +1 -55
- package/dist/llms/cloudflare_workersai.js +1 -166
- package/dist/llms/cohere.cjs +15 -110
- package/dist/llms/cohere.d.ts +1 -54
- package/dist/llms/cohere.js +1 -108
- package/dist/llms/fireworks.cjs +15 -90
- package/dist/llms/fireworks.d.ts +1 -33
- package/dist/llms/fireworks.js +1 -88
- package/dist/llms/googlepalm.cjs +15 -134
- package/dist/llms/googlepalm.d.ts +1 -92
- package/dist/llms/googlepalm.js +1 -132
- package/dist/llms/googlevertexai/index.cjs +15 -45
- package/dist/llms/googlevertexai/index.d.ts +1 -38
- package/dist/llms/googlevertexai/index.js +1 -43
- package/dist/llms/googlevertexai/web.cjs +15 -42
- package/dist/llms/googlevertexai/web.d.ts +1 -36
- package/dist/llms/googlevertexai/web.js +1 -40
- package/dist/llms/gradient_ai.cjs +15 -110
- package/dist/llms/gradient_ai.d.ts +1 -55
- package/dist/llms/gradient_ai.js +1 -108
- package/dist/llms/hf.cjs +15 -136
- package/dist/llms/hf.d.ts +1 -68
- package/dist/llms/hf.js +1 -134
- package/dist/llms/llama_cpp.cjs +15 -111
- package/dist/llms/llama_cpp.d.ts +1 -41
- package/dist/llms/llama_cpp.js +1 -109
- package/dist/llms/ollama.cjs +15 -353
- package/dist/llms/ollama.d.ts +1 -106
- package/dist/llms/ollama.js +1 -351
- package/dist/llms/openai-chat.cjs +3 -445
- package/dist/llms/openai-chat.d.ts +4 -123
- package/dist/llms/openai-chat.js +2 -443
- package/dist/llms/openai.cjs +6 -530
- package/dist/llms/openai.d.ts +4 -123
- package/dist/llms/openai.js +2 -525
- package/dist/llms/portkey.cjs +14 -168
- package/dist/llms/portkey.d.ts +1 -57
- package/dist/llms/portkey.js +1 -162
- package/dist/llms/raycast.cjs +15 -94
- package/dist/llms/raycast.d.ts +1 -50
- package/dist/llms/raycast.js +1 -92
- package/dist/llms/replicate.cjs +15 -132
- package/dist/llms/replicate.d.ts +1 -51
- package/dist/llms/replicate.js +1 -130
- package/dist/llms/sagemaker_endpoint.cjs +15 -203
- package/dist/llms/sagemaker_endpoint.d.ts +1 -121
- package/dist/llms/sagemaker_endpoint.js +1 -200
- package/dist/llms/watsonx_ai.cjs +15 -152
- package/dist/llms/watsonx_ai.d.ts +1 -72
- package/dist/llms/watsonx_ai.js +1 -150
- package/dist/llms/writer.cjs +15 -165
- package/dist/llms/writer.d.ts +1 -60
- package/dist/llms/writer.js +1 -163
- package/dist/llms/yandex.cjs +15 -98
- package/dist/llms/yandex.d.ts +1 -40
- package/dist/llms/yandex.js +1 -96
- package/dist/load/import_map.cjs +2 -1
- package/dist/load/import_map.d.ts +1 -0
- package/dist/load/import_map.js +1 -0
- package/dist/load/index.cjs +3 -1
- package/dist/load/index.d.ts +1 -1
- package/dist/load/index.js +3 -1
- package/dist/retrievers/amazon_kendra.cjs +15 -273
- package/dist/retrievers/amazon_kendra.d.ts +1 -142
- package/dist/retrievers/amazon_kendra.js +1 -271
- package/dist/retrievers/chaindesk.cjs +15 -88
- package/dist/retrievers/chaindesk.d.ts +1 -31
- package/dist/retrievers/chaindesk.js +1 -86
- package/dist/retrievers/databerry.cjs +15 -82
- package/dist/retrievers/databerry.d.ts +1 -34
- package/dist/retrievers/databerry.js +1 -80
- package/dist/retrievers/metal.cjs +15 -51
- package/dist/retrievers/metal.d.ts +1 -36
- package/dist/retrievers/metal.js +1 -49
- package/dist/retrievers/supabase.cjs +15 -167
- package/dist/retrievers/supabase.d.ts +1 -82
- package/dist/retrievers/supabase.js +1 -165
- package/dist/retrievers/tavily_search_api.cjs +15 -142
- package/dist/retrievers/tavily_search_api.d.ts +1 -38
- package/dist/retrievers/tavily_search_api.js +1 -140
- package/dist/retrievers/zep.cjs +15 -150
- package/dist/retrievers/zep.d.ts +1 -76
- package/dist/retrievers/zep.js +1 -148
- package/dist/schema/document.cjs +2 -16
- package/dist/schema/document.d.ts +1 -11
- package/dist/schema/document.js +1 -16
- package/dist/schema/index.cjs +2 -7
- package/dist/schema/index.d.ts +2 -10
- package/dist/schema/index.js +1 -6
- package/dist/storage/convex.cjs +15 -143
- package/dist/storage/convex.d.ts +1 -106
- package/dist/storage/convex.js +1 -141
- package/dist/storage/ioredis.cjs +15 -158
- package/dist/storage/ioredis.d.ts +1 -71
- package/dist/storage/ioredis.js +1 -156
- package/dist/storage/upstash_redis.cjs +15 -172
- package/dist/storage/upstash_redis.d.ts +1 -78
- package/dist/storage/upstash_redis.js +1 -170
- package/dist/storage/vercel_kv.cjs +15 -161
- package/dist/storage/vercel_kv.d.ts +1 -62
- package/dist/storage/vercel_kv.js +1 -159
- package/dist/stores/doc/in_memory.cjs +15 -105
- package/dist/stores/doc/in_memory.d.ts +1 -46
- package/dist/stores/doc/in_memory.js +1 -102
- package/dist/stores/message/cassandra.cjs +15 -158
- package/dist/stores/message/cassandra.d.ts +1 -69
- package/dist/stores/message/cassandra.js +1 -156
- package/dist/stores/message/cloudflare_d1.cjs +15 -150
- package/dist/stores/message/cloudflare_d1.d.ts +1 -67
- package/dist/stores/message/cloudflare_d1.js +1 -148
- package/dist/stores/message/convex.cjs +15 -118
- package/dist/stores/message/convex.d.ts +1 -81
- package/dist/stores/message/convex.js +1 -116
- package/dist/stores/message/dynamodb.cjs +15 -159
- package/dist/stores/message/dynamodb.d.ts +1 -51
- package/dist/stores/message/dynamodb.js +1 -157
- package/dist/stores/message/firestore.cjs +15 -185
- package/dist/stores/message/firestore.d.ts +1 -68
- package/dist/stores/message/firestore.js +1 -183
- package/dist/stores/message/ioredis.cjs +15 -98
- package/dist/stores/message/ioredis.d.ts +1 -64
- package/dist/stores/message/ioredis.js +1 -96
- package/dist/stores/message/momento.cjs +15 -160
- package/dist/stores/message/momento.d.ts +1 -97
- package/dist/stores/message/momento.js +1 -158
- package/dist/stores/message/mongodb.cjs +15 -57
- package/dist/stores/message/mongodb.d.ts +1 -26
- package/dist/stores/message/mongodb.js +1 -55
- package/dist/stores/message/planetscale.cjs +15 -170
- package/dist/stores/message/planetscale.d.ts +1 -75
- package/dist/stores/message/planetscale.js +1 -168
- package/dist/stores/message/redis.cjs +15 -114
- package/dist/stores/message/redis.d.ts +1 -69
- package/dist/stores/message/redis.js +1 -112
- package/dist/stores/message/upstash_redis.cjs +15 -85
- package/dist/stores/message/upstash_redis.d.ts +1 -43
- package/dist/stores/message/upstash_redis.js +1 -83
- package/dist/stores/message/utils.cjs +3 -23
- package/dist/stores/message/utils.d.ts +1 -17
- package/dist/stores/message/utils.js +1 -21
- package/dist/stores/message/xata.cjs +15 -216
- package/dist/stores/message/xata.d.ts +1 -76
- package/dist/stores/message/xata.js +1 -214
- package/dist/tools/IFTTTWebhook.cjs +15 -87
- package/dist/tools/IFTTTWebhook.d.ts +1 -50
- package/dist/tools/IFTTTWebhook.js +1 -85
- package/dist/tools/aiplugin.cjs +15 -73
- package/dist/tools/aiplugin.d.ts +1 -34
- package/dist/tools/aiplugin.js +1 -71
- package/dist/tools/aws_sfn.cjs +15 -201
- package/dist/tools/aws_sfn.d.ts +1 -57
- package/dist/tools/aws_sfn.js +1 -197
- package/dist/tools/bingserpapi.cjs +15 -76
- package/dist/tools/bingserpapi.d.ts +1 -23
- package/dist/tools/bingserpapi.js +1 -75
- package/dist/tools/brave_search.cjs +15 -64
- package/dist/tools/brave_search.d.ts +1 -23
- package/dist/tools/brave_search.js +1 -62
- package/dist/tools/connery.cjs +15 -277
- package/dist/tools/connery.d.ts +1 -145
- package/dist/tools/connery.js +1 -274
- package/dist/tools/convert_to_openai.d.ts +1 -1
- package/dist/tools/dadjokeapi.cjs +15 -46
- package/dist/tools/dadjokeapi.d.ts +1 -15
- package/dist/tools/dadjokeapi.js +1 -45
- package/dist/tools/dataforseo_api_search.cjs +15 -280
- package/dist/tools/dataforseo_api_search.d.ts +1 -170
- package/dist/tools/dataforseo_api_search.js +1 -278
- package/dist/tools/gmail/index.cjs +15 -11
- package/dist/tools/gmail/index.d.ts +1 -11
- package/dist/tools/gmail/index.js +1 -5
- package/dist/tools/google_custom_search.cjs +15 -70
- package/dist/tools/google_custom_search.d.ts +1 -25
- package/dist/tools/google_custom_search.js +1 -68
- package/dist/tools/google_places.cjs +15 -79
- package/dist/tools/google_places.d.ts +1 -21
- package/dist/tools/google_places.js +1 -77
- package/dist/tools/searchapi.cjs +15 -164
- package/dist/tools/searchapi.d.ts +1 -91
- package/dist/tools/searchapi.js +1 -162
- package/dist/tools/searxng_search.cjs +15 -156
- package/dist/tools/searxng_search.d.ts +1 -114
- package/dist/tools/searxng_search.js +1 -154
- package/dist/tools/serpapi.cjs +15 -199
- package/dist/tools/serpapi.d.ts +1 -302
- package/dist/tools/serpapi.js +1 -197
- package/dist/tools/serper.cjs +15 -94
- package/dist/tools/serper.d.ts +1 -32
- package/dist/tools/serper.js +1 -92
- package/dist/tools/wikipedia_query_run.cjs +15 -133
- package/dist/tools/wikipedia_query_run.d.ts +1 -54
- package/dist/tools/wikipedia_query_run.js +1 -131
- package/dist/tools/wolframalpha.cjs +15 -47
- package/dist/tools/wolframalpha.d.ts +1 -21
- package/dist/tools/wolframalpha.js +1 -45
- package/dist/types/openai-types.d.ts +1 -1
- package/dist/util/convex.d.ts +1 -1
- package/dist/util/event-source-parse.cjs +15 -224
- package/dist/util/event-source-parse.d.ts +1 -39
- package/dist/util/event-source-parse.js +1 -219
- package/dist/util/math.cjs +15 -123
- package/dist/util/math.d.ts +1 -40
- package/dist/util/math.js +1 -116
- package/dist/util/openapi.d.ts +2 -2
- package/dist/vectorstores/analyticdb.cjs +3 -333
- package/dist/vectorstores/analyticdb.d.ts +1 -110
- package/dist/vectorstores/analyticdb.js +1 -317
- package/dist/vectorstores/base.cjs +15 -165
- package/dist/vectorstores/base.d.ts +1 -104
- package/dist/vectorstores/base.js +1 -161
- package/dist/vectorstores/cassandra.cjs +15 -478
- package/dist/vectorstores/cassandra.d.ts +1 -162
- package/dist/vectorstores/cassandra.js +1 -476
- package/dist/vectorstores/chroma.cjs +3 -312
- package/dist/vectorstores/chroma.d.ts +1 -133
- package/dist/vectorstores/chroma.js +1 -299
- package/dist/vectorstores/clickhouse.cjs +3 -272
- package/dist/vectorstores/clickhouse.d.ts +1 -126
- package/dist/vectorstores/clickhouse.js +1 -259
- package/dist/vectorstores/closevector/node.cjs +15 -107
- package/dist/vectorstores/closevector/node.d.ts +1 -83
- package/dist/vectorstores/closevector/node.js +1 -105
- package/dist/vectorstores/closevector/web.cjs +15 -107
- package/dist/vectorstores/closevector/web.d.ts +1 -80
- package/dist/vectorstores/closevector/web.js +1 -105
- package/dist/vectorstores/cloudflare_vectorize.cjs +3 -186
- package/dist/vectorstores/cloudflare_vectorize.d.ts +1 -90
- package/dist/vectorstores/cloudflare_vectorize.js +1 -173
- package/dist/vectorstores/convex.cjs +15 -175
- package/dist/vectorstores/convex.d.ts +1 -134
- package/dist/vectorstores/convex.js +1 -173
- package/dist/vectorstores/elasticsearch.cjs +3 -287
- package/dist/vectorstores/elasticsearch.d.ts +1 -143
- package/dist/vectorstores/elasticsearch.js +1 -274
- package/dist/vectorstores/faiss.cjs +3 -378
- package/dist/vectorstores/faiss.d.ts +1 -127
- package/dist/vectorstores/faiss.js +1 -365
- package/dist/vectorstores/googlevertexai.cjs +3 -538
- package/dist/vectorstores/googlevertexai.d.ts +1 -181
- package/dist/vectorstores/googlevertexai.js +1 -521
- package/dist/vectorstores/hnswlib.cjs +15 -273
- package/dist/vectorstores/hnswlib.d.ts +1 -122
- package/dist/vectorstores/hnswlib.js +1 -271
- package/dist/vectorstores/lancedb.cjs +15 -126
- package/dist/vectorstores/lancedb.d.ts +1 -61
- package/dist/vectorstores/lancedb.js +1 -124
- package/dist/vectorstores/memory.cjs +15 -143
- package/dist/vectorstores/memory.d.ts +1 -92
- package/dist/vectorstores/memory.js +1 -141
- package/dist/vectorstores/milvus.cjs +3 -592
- package/dist/vectorstores/milvus.d.ts +1 -139
- package/dist/vectorstores/milvus.js +1 -579
- package/dist/vectorstores/momento_vector_index.cjs +3 -305
- package/dist/vectorstores/momento_vector_index.d.ts +1 -143
- package/dist/vectorstores/momento_vector_index.js +1 -292
- package/dist/vectorstores/mongodb_atlas.cjs +15 -218
- package/dist/vectorstores/mongodb_atlas.d.ts +1 -118
- package/dist/vectorstores/mongodb_atlas.js +1 -216
- package/dist/vectorstores/myscale.cjs +3 -263
- package/dist/vectorstores/myscale.d.ts +1 -129
- package/dist/vectorstores/myscale.js +1 -250
- package/dist/vectorstores/neo4j_vector.cjs +3 -578
- package/dist/vectorstores/neo4j_vector.d.ts +1 -75
- package/dist/vectorstores/neo4j_vector.js +1 -562
- package/dist/vectorstores/opensearch.cjs +3 -274
- package/dist/vectorstores/opensearch.d.ts +1 -119
- package/dist/vectorstores/opensearch.js +1 -261
- package/dist/vectorstores/pgvector.cjs +14 -404
- package/dist/vectorstores/pgvector.d.ts +1 -160
- package/dist/vectorstores/pgvector.js +1 -400
- package/dist/vectorstores/pinecone.cjs +3 -280
- package/dist/vectorstores/pinecone.d.ts +1 -120
- package/dist/vectorstores/pinecone.js +1 -264
- package/dist/vectorstores/prisma.cjs +15 -305
- package/dist/vectorstores/prisma.d.ts +1 -180
- package/dist/vectorstores/prisma.js +1 -304
- package/dist/vectorstores/qdrant.cjs +15 -195
- package/dist/vectorstores/qdrant.d.ts +1 -95
- package/dist/vectorstores/qdrant.js +1 -193
- package/dist/vectorstores/redis.cjs +15 -333
- package/dist/vectorstores/redis.d.ts +1 -186
- package/dist/vectorstores/redis.js +1 -331
- package/dist/vectorstores/rockset.cjs +15 -351
- package/dist/vectorstores/rockset.d.ts +1 -202
- package/dist/vectorstores/rockset.js +1 -347
- package/dist/vectorstores/singlestore.cjs +15 -220
- package/dist/vectorstores/singlestore.d.ts +1 -88
- package/dist/vectorstores/singlestore.js +1 -218
- package/dist/vectorstores/supabase.cjs +15 -217
- package/dist/vectorstores/supabase.d.ts +1 -118
- package/dist/vectorstores/supabase.js +1 -215
- package/dist/vectorstores/tigris.cjs +3 -143
- package/dist/vectorstores/tigris.d.ts +1 -74
- package/dist/vectorstores/tigris.js +1 -130
- package/dist/vectorstores/typeorm.cjs +15 -259
- package/dist/vectorstores/typeorm.d.ts +1 -109
- package/dist/vectorstores/typeorm.js +1 -256
- package/dist/vectorstores/typesense.cjs +15 -223
- package/dist/vectorstores/typesense.d.ts +1 -131
- package/dist/vectorstores/typesense.js +1 -221
- package/dist/vectorstores/usearch.cjs +3 -203
- package/dist/vectorstores/usearch.d.ts +1 -85
- package/dist/vectorstores/usearch.js +1 -187
- package/dist/vectorstores/vectara.cjs +3 -409
- package/dist/vectorstores/vectara.d.ts +1 -148
- package/dist/vectorstores/vectara.js +1 -396
- package/dist/vectorstores/vercel_postgres.cjs +15 -320
- package/dist/vectorstores/vercel_postgres.d.ts +1 -145
- package/dist/vectorstores/vercel_postgres.js +1 -318
- package/dist/vectorstores/voy.cjs +15 -156
- package/dist/vectorstores/voy.d.ts +1 -73
- package/dist/vectorstores/voy.js +1 -154
- package/dist/vectorstores/weaviate.cjs +3 -347
- package/dist/vectorstores/weaviate.d.ts +1 -140
- package/dist/vectorstores/weaviate.js +1 -333
- package/dist/vectorstores/xata.cjs +15 -108
- package/dist/vectorstores/xata.d.ts +1 -70
- package/dist/vectorstores/xata.js +1 -106
- package/dist/vectorstores/zep.cjs +15 -313
- package/dist/vectorstores/zep.d.ts +1 -146
- package/dist/vectorstores/zep.js +1 -311
- package/experimental/masking.cjs +1 -0
- package/experimental/masking.d.ts +1 -0
- package/experimental/masking.js +1 -0
- package/package.json +13 -27
- package/dist/chat_models/googlevertexai/common.cjs +0 -274
- package/dist/chat_models/googlevertexai/common.d.ts +0 -123
- package/dist/chat_models/googlevertexai/common.js +0 -269
- package/dist/chat_models/iflytek_xinghuo/common.cjs +0 -340
- package/dist/chat_models/iflytek_xinghuo/common.d.ts +0 -165
- package/dist/chat_models/iflytek_xinghuo/common.js +0 -336
- package/dist/llms/googlevertexai/common.cjs +0 -168
- package/dist/llms/googlevertexai/common.d.ts +0 -82
- package/dist/llms/googlevertexai/common.js +0 -164
- package/dist/tools/gmail/base.cjs +0 -69
- package/dist/tools/gmail/base.d.ts +0 -19
- package/dist/tools/gmail/base.js +0 -65
- package/dist/tools/gmail/create_draft.cjs +0 -62
- package/dist/tools/gmail/create_draft.d.ts +0 -35
- package/dist/tools/gmail/create_draft.js +0 -58
- package/dist/tools/gmail/descriptions.cjs +0 -118
- package/dist/tools/gmail/descriptions.d.ts +0 -5
- package/dist/tools/gmail/descriptions.js +0 -115
- package/dist/tools/gmail/get_message.cjs +0 -83
- package/dist/tools/gmail/get_message.d.ts +0 -18
- package/dist/tools/gmail/get_message.js +0 -79
- package/dist/tools/gmail/get_thread.cjs +0 -89
- package/dist/tools/gmail/get_thread.d.ts +0 -18
- package/dist/tools/gmail/get_thread.js +0 -85
- package/dist/tools/gmail/search.cjs +0 -118
- package/dist/tools/gmail/search.d.ts +0 -29
- package/dist/tools/gmail/search.js +0 -114
- package/dist/tools/gmail/send_message.cjs +0 -74
- package/dist/tools/gmail/send_message.d.ts +0 -35
- package/dist/tools/gmail/send_message.js +0 -70
- package/dist/util/openai-format-fndef.cjs +0 -81
- package/dist/util/openai-format-fndef.d.ts +0 -44
- package/dist/util/openai-format-fndef.js +0 -77
- package/dist/util/openai.cjs +0 -21
- package/dist/util/openai.d.ts +0 -1
- package/dist/util/openai.js +0 -17
- package/dist/vectorstores/closevector/common.cjs +0 -128
- package/dist/vectorstores/closevector/common.d.ts +0 -82
- package/dist/vectorstores/closevector/common.js +0 -124
|
@@ -1,162 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { AsyncCaller, AsyncCallerParams } from "../util/async_caller.js";
|
|
3
|
-
import { Embeddings } from "../embeddings/base.js";
|
|
4
|
-
import { VectorStore } from "./base.js";
|
|
5
|
-
import { Document } from "../document.js";
|
|
6
|
-
export interface Column {
|
|
7
|
-
type: string;
|
|
8
|
-
name: string;
|
|
9
|
-
partition?: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface Index {
|
|
12
|
-
name: string;
|
|
13
|
-
value: string;
|
|
14
|
-
}
|
|
15
|
-
export interface Filter {
|
|
16
|
-
name: string;
|
|
17
|
-
value: unknown;
|
|
18
|
-
operator?: string;
|
|
19
|
-
}
|
|
20
|
-
export type WhereClause = Filter[] | Filter | Record<string, unknown>;
|
|
21
|
-
export type SupportedVectorTypes = "cosine" | "dot_product" | "euclidean";
|
|
22
|
-
export interface CassandraLibArgs extends DseClientOptions, AsyncCallerParams {
|
|
23
|
-
table: string;
|
|
24
|
-
keyspace: string;
|
|
25
|
-
vectorType?: SupportedVectorTypes;
|
|
26
|
-
dimensions: number;
|
|
27
|
-
primaryKey: Column | Column[];
|
|
28
|
-
metadataColumns: Column[];
|
|
29
|
-
withClause?: string;
|
|
30
|
-
indices?: Index[];
|
|
31
|
-
batchSize?: number;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Class for interacting with the Cassandra database. It extends the
|
|
35
|
-
* VectorStore class and provides methods for adding vectors and
|
|
36
|
-
* documents, searching for similar vectors, and creating instances from
|
|
37
|
-
* texts or documents.
|
|
38
|
-
*/
|
|
39
|
-
export declare class CassandraStore extends VectorStore {
|
|
40
|
-
FilterType: WhereClause;
|
|
41
|
-
private client;
|
|
42
|
-
private readonly vectorType;
|
|
43
|
-
private readonly dimensions;
|
|
44
|
-
private readonly keyspace;
|
|
45
|
-
private primaryKey;
|
|
46
|
-
private metadataColumns;
|
|
47
|
-
private withClause;
|
|
48
|
-
private selectColumns;
|
|
49
|
-
private readonly table;
|
|
50
|
-
private indices;
|
|
51
|
-
private isInitialized;
|
|
52
|
-
asyncCaller: AsyncCaller;
|
|
53
|
-
private readonly batchSize;
|
|
54
|
-
_vectorstoreType(): string;
|
|
55
|
-
constructor(embeddings: Embeddings, args: CassandraLibArgs);
|
|
56
|
-
/**
|
|
57
|
-
* Method to save vectors to the Cassandra database.
|
|
58
|
-
* @param vectors Vectors to save.
|
|
59
|
-
* @param documents The documents associated with the vectors.
|
|
60
|
-
* @returns Promise that resolves when the vectors have been added.
|
|
61
|
-
*/
|
|
62
|
-
addVectors(vectors: number[][], documents: Document[]): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* Method to add documents to the Cassandra database.
|
|
65
|
-
* @param documents The documents to add.
|
|
66
|
-
* @returns Promise that resolves when the documents have been added.
|
|
67
|
-
*/
|
|
68
|
-
addDocuments(documents: Document[]): Promise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* Method to search for vectors that are similar to a given query vector.
|
|
71
|
-
* @param query The query vector.
|
|
72
|
-
* @param k The number of similar vectors to return.
|
|
73
|
-
* @param filter
|
|
74
|
-
* @returns Promise that resolves with an array of tuples, each containing a Document and a score.
|
|
75
|
-
*/
|
|
76
|
-
similaritySearchVectorWithScore(query: number[], k: number, filter?: WhereClause): Promise<[Document, number][]>;
|
|
77
|
-
/**
|
|
78
|
-
* Static method to create an instance of CassandraStore from texts.
|
|
79
|
-
* @param texts The texts to use.
|
|
80
|
-
* @param metadatas The metadata associated with the texts.
|
|
81
|
-
* @param embeddings The embeddings to use.
|
|
82
|
-
* @param args The arguments for the CassandraStore.
|
|
83
|
-
* @returns Promise that resolves with a new instance of CassandraStore.
|
|
84
|
-
*/
|
|
85
|
-
static fromTexts(texts: string[], metadatas: object | object[], embeddings: Embeddings, args: CassandraLibArgs): Promise<CassandraStore>;
|
|
86
|
-
/**
|
|
87
|
-
* Static method to create an instance of CassandraStore from documents.
|
|
88
|
-
* @param docs The documents to use.
|
|
89
|
-
* @param embeddings The embeddings to use.
|
|
90
|
-
* @param args The arguments for the CassandraStore.
|
|
91
|
-
* @returns Promise that resolves with a new instance of CassandraStore.
|
|
92
|
-
*/
|
|
93
|
-
static fromDocuments(docs: Document[], embeddings: Embeddings, args: CassandraLibArgs): Promise<CassandraStore>;
|
|
94
|
-
/**
|
|
95
|
-
* Static method to create an instance of CassandraStore from an existing
|
|
96
|
-
* index.
|
|
97
|
-
* @param embeddings The embeddings to use.
|
|
98
|
-
* @param args The arguments for the CassandraStore.
|
|
99
|
-
* @returns Promise that resolves with a new instance of CassandraStore.
|
|
100
|
-
*/
|
|
101
|
-
static fromExistingIndex(embeddings: Embeddings, args: CassandraLibArgs): Promise<CassandraStore>;
|
|
102
|
-
/**
|
|
103
|
-
* Method to initialize the Cassandra database.
|
|
104
|
-
* @returns Promise that resolves when the database has been initialized.
|
|
105
|
-
*/
|
|
106
|
-
private initialize;
|
|
107
|
-
/**
|
|
108
|
-
* Method to build the PRIMARY KEY clause for CREATE TABLE.
|
|
109
|
-
* @param columns: list of Column to include in the key
|
|
110
|
-
* @returns The clause, including PRIMARY KEY
|
|
111
|
-
*/
|
|
112
|
-
private buildPrimaryKey;
|
|
113
|
-
/**
|
|
114
|
-
* Type guard to check if an object is a Filter.
|
|
115
|
-
* @param obj: the object to check
|
|
116
|
-
* @returns boolean indicating if the object is a Filter
|
|
117
|
-
*/
|
|
118
|
-
private isFilter;
|
|
119
|
-
/**
|
|
120
|
-
* Helper to convert Record<string,unknown> to a Filter[]
|
|
121
|
-
* @param record: a key-value Record collection
|
|
122
|
-
* @returns Record as a Filter[]
|
|
123
|
-
*/
|
|
124
|
-
private convertToFilters;
|
|
125
|
-
/**
|
|
126
|
-
* Input santisation method for filters, as FilterType is not required to be
|
|
127
|
-
* Filter[], but we want to use Filter[] internally.
|
|
128
|
-
* @param record: the proposed filter
|
|
129
|
-
* @returns A Filter[], which may be empty
|
|
130
|
-
*/
|
|
131
|
-
private asFilters;
|
|
132
|
-
/**
|
|
133
|
-
* Method to build the WHERE clause of a CQL query, using bind variable ?
|
|
134
|
-
* @param filters list of filters to include in the WHERE clause
|
|
135
|
-
* @returns The WHERE clause
|
|
136
|
-
*/
|
|
137
|
-
private buildWhereClause;
|
|
138
|
-
/**
|
|
139
|
-
* Method to build an CQL query for searching for similar vectors in the
|
|
140
|
-
* Cassandra database.
|
|
141
|
-
* @param query The query vector.
|
|
142
|
-
* @param k The number of similar vectors to return.
|
|
143
|
-
* @param filters
|
|
144
|
-
* @returns The CQL query string.
|
|
145
|
-
*/
|
|
146
|
-
private buildSearchQuery;
|
|
147
|
-
/**
|
|
148
|
-
* Method for inserting vectors and documents into the Cassandra database in a batch.
|
|
149
|
-
* @param batchVectors The list of vectors to insert.
|
|
150
|
-
* @param batchDocuments The list of documents to insert.
|
|
151
|
-
* @returns Promise that resolves when the batch has been inserted.
|
|
152
|
-
*/
|
|
153
|
-
private executeInsert;
|
|
154
|
-
/**
|
|
155
|
-
* Method for inserting vectors and documents into the Cassandra database in
|
|
156
|
-
* parallel, keeping within maxConcurrency number of active insert statements.
|
|
157
|
-
* @param vectors The vectors to insert.
|
|
158
|
-
* @param documents The documents to insert.
|
|
159
|
-
* @returns Promise that resolves when the documents have been added.
|
|
160
|
-
*/
|
|
161
|
-
private insertAll;
|
|
162
|
-
}
|
|
1
|
+
export * from "@langchain/community/vectorstores/cassandra";
|
|
@@ -1,476 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { Client as CassandraClient } from "cassandra-driver";
|
|
3
|
-
import { AsyncCaller } from "../util/async_caller.js";
|
|
4
|
-
import { VectorStore } from "./base.js";
|
|
5
|
-
import { Document } from "../document.js";
|
|
6
|
-
/**
|
|
7
|
-
* Class for interacting with the Cassandra database. It extends the
|
|
8
|
-
* VectorStore class and provides methods for adding vectors and
|
|
9
|
-
* documents, searching for similar vectors, and creating instances from
|
|
10
|
-
* texts or documents.
|
|
11
|
-
*/
|
|
12
|
-
export class CassandraStore extends VectorStore {
|
|
13
|
-
_vectorstoreType() {
|
|
14
|
-
return "cassandra";
|
|
15
|
-
}
|
|
16
|
-
constructor(embeddings, args) {
|
|
17
|
-
super(embeddings, args);
|
|
18
|
-
Object.defineProperty(this, "client", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
configurable: true,
|
|
21
|
-
writable: true,
|
|
22
|
-
value: void 0
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(this, "vectorType", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
configurable: true,
|
|
27
|
-
writable: true,
|
|
28
|
-
value: void 0
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(this, "dimensions", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
configurable: true,
|
|
33
|
-
writable: true,
|
|
34
|
-
value: void 0
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(this, "keyspace", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
configurable: true,
|
|
39
|
-
writable: true,
|
|
40
|
-
value: void 0
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(this, "primaryKey", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
configurable: true,
|
|
45
|
-
writable: true,
|
|
46
|
-
value: void 0
|
|
47
|
-
});
|
|
48
|
-
Object.defineProperty(this, "metadataColumns", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
configurable: true,
|
|
51
|
-
writable: true,
|
|
52
|
-
value: void 0
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(this, "withClause", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
configurable: true,
|
|
57
|
-
writable: true,
|
|
58
|
-
value: void 0
|
|
59
|
-
});
|
|
60
|
-
Object.defineProperty(this, "selectColumns", {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
configurable: true,
|
|
63
|
-
writable: true,
|
|
64
|
-
value: void 0
|
|
65
|
-
});
|
|
66
|
-
Object.defineProperty(this, "table", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
configurable: true,
|
|
69
|
-
writable: true,
|
|
70
|
-
value: void 0
|
|
71
|
-
});
|
|
72
|
-
Object.defineProperty(this, "indices", {
|
|
73
|
-
enumerable: true,
|
|
74
|
-
configurable: true,
|
|
75
|
-
writable: true,
|
|
76
|
-
value: void 0
|
|
77
|
-
});
|
|
78
|
-
Object.defineProperty(this, "isInitialized", {
|
|
79
|
-
enumerable: true,
|
|
80
|
-
configurable: true,
|
|
81
|
-
writable: true,
|
|
82
|
-
value: false
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(this, "asyncCaller", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
configurable: true,
|
|
87
|
-
writable: true,
|
|
88
|
-
value: void 0
|
|
89
|
-
});
|
|
90
|
-
Object.defineProperty(this, "batchSize", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
configurable: true,
|
|
93
|
-
writable: true,
|
|
94
|
-
value: void 0
|
|
95
|
-
});
|
|
96
|
-
const { indices = [], maxConcurrency = 25, withClause = "", batchSize = 1, vectorType = "cosine", dimensions, keyspace, table, primaryKey, metadataColumns, } = args;
|
|
97
|
-
const argsWithDefaults = {
|
|
98
|
-
...args,
|
|
99
|
-
indices,
|
|
100
|
-
maxConcurrency,
|
|
101
|
-
withClause,
|
|
102
|
-
batchSize,
|
|
103
|
-
vectorType,
|
|
104
|
-
};
|
|
105
|
-
this.asyncCaller = new AsyncCaller(argsWithDefaults);
|
|
106
|
-
this.client = new CassandraClient(argsWithDefaults);
|
|
107
|
-
// Assign properties
|
|
108
|
-
this.vectorType = vectorType;
|
|
109
|
-
this.dimensions = dimensions;
|
|
110
|
-
this.keyspace = keyspace;
|
|
111
|
-
this.table = table;
|
|
112
|
-
this.primaryKey = Array.isArray(primaryKey) ? primaryKey : [primaryKey];
|
|
113
|
-
this.metadataColumns = metadataColumns;
|
|
114
|
-
this.withClause = withClause.trim().replace(/^with\s*/i, "");
|
|
115
|
-
this.indices = indices;
|
|
116
|
-
this.batchSize = batchSize >= 1 ? batchSize : 1;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Method to save vectors to the Cassandra database.
|
|
120
|
-
* @param vectors Vectors to save.
|
|
121
|
-
* @param documents The documents associated with the vectors.
|
|
122
|
-
* @returns Promise that resolves when the vectors have been added.
|
|
123
|
-
*/
|
|
124
|
-
async addVectors(vectors, documents) {
|
|
125
|
-
if (vectors.length === 0) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (!this.isInitialized) {
|
|
129
|
-
await this.initialize();
|
|
130
|
-
}
|
|
131
|
-
await this.insertAll(vectors, documents);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Method to add documents to the Cassandra database.
|
|
135
|
-
* @param documents The documents to add.
|
|
136
|
-
* @returns Promise that resolves when the documents have been added.
|
|
137
|
-
*/
|
|
138
|
-
async addDocuments(documents) {
|
|
139
|
-
return this.addVectors(await this.embeddings.embedDocuments(documents.map((d) => d.pageContent)), documents);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Method to search for vectors that are similar to a given query vector.
|
|
143
|
-
* @param query The query vector.
|
|
144
|
-
* @param k The number of similar vectors to return.
|
|
145
|
-
* @param filter
|
|
146
|
-
* @returns Promise that resolves with an array of tuples, each containing a Document and a score.
|
|
147
|
-
*/
|
|
148
|
-
async similaritySearchVectorWithScore(query, k, filter) {
|
|
149
|
-
if (!this.isInitialized) {
|
|
150
|
-
await this.initialize();
|
|
151
|
-
}
|
|
152
|
-
// Ensure we have an array of Filter from the public interface
|
|
153
|
-
const filters = this.asFilters(filter);
|
|
154
|
-
const queryStr = this.buildSearchQuery(filters);
|
|
155
|
-
// Search query will be of format:
|
|
156
|
-
// SELECT ..., text, similarity_x(?) AS similarity_score
|
|
157
|
-
// FROM ...
|
|
158
|
-
// <WHERE ...>
|
|
159
|
-
// ORDER BY vector ANN OF ?
|
|
160
|
-
// LIMIT ?
|
|
161
|
-
// If any filter values are specified, they will be in the WHERE clause as
|
|
162
|
-
// filter.name filter.operator ?
|
|
163
|
-
// queryParams is a list of bind variables sent with the prepared statement
|
|
164
|
-
const queryParams = [];
|
|
165
|
-
const vectorAsFloat32Array = new Float32Array(query);
|
|
166
|
-
queryParams.push(vectorAsFloat32Array);
|
|
167
|
-
if (filters) {
|
|
168
|
-
const values = filters.map(({ value }) => value);
|
|
169
|
-
queryParams.push(...values);
|
|
170
|
-
}
|
|
171
|
-
queryParams.push(vectorAsFloat32Array);
|
|
172
|
-
queryParams.push(k);
|
|
173
|
-
const queryResultSet = await this.client.execute(queryStr, queryParams, {
|
|
174
|
-
prepare: true,
|
|
175
|
-
});
|
|
176
|
-
return queryResultSet?.rows.map((row) => {
|
|
177
|
-
const textContent = row.text;
|
|
178
|
-
const sanitizedRow = { ...row };
|
|
179
|
-
delete sanitizedRow.text;
|
|
180
|
-
delete sanitizedRow.similarity_score;
|
|
181
|
-
// A null value in Cassandra evaluates to a deleted column
|
|
182
|
-
// as this is treated as a tombstone record for the cell.
|
|
183
|
-
Object.keys(sanitizedRow).forEach((key) => {
|
|
184
|
-
if (sanitizedRow[key] === null) {
|
|
185
|
-
delete sanitizedRow[key];
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
return [
|
|
189
|
-
new Document({ pageContent: textContent, metadata: sanitizedRow }),
|
|
190
|
-
row.similarity_score,
|
|
191
|
-
];
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Static method to create an instance of CassandraStore from texts.
|
|
196
|
-
* @param texts The texts to use.
|
|
197
|
-
* @param metadatas The metadata associated with the texts.
|
|
198
|
-
* @param embeddings The embeddings to use.
|
|
199
|
-
* @param args The arguments for the CassandraStore.
|
|
200
|
-
* @returns Promise that resolves with a new instance of CassandraStore.
|
|
201
|
-
*/
|
|
202
|
-
static async fromTexts(texts, metadatas, embeddings, args) {
|
|
203
|
-
const docs = [];
|
|
204
|
-
for (let index = 0; index < texts.length; index += 1) {
|
|
205
|
-
const metadata = Array.isArray(metadatas) ? metadatas[index] : metadatas;
|
|
206
|
-
const doc = new Document({
|
|
207
|
-
pageContent: texts[index],
|
|
208
|
-
metadata,
|
|
209
|
-
});
|
|
210
|
-
docs.push(doc);
|
|
211
|
-
}
|
|
212
|
-
return CassandraStore.fromDocuments(docs, embeddings, args);
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Static method to create an instance of CassandraStore from documents.
|
|
216
|
-
* @param docs The documents to use.
|
|
217
|
-
* @param embeddings The embeddings to use.
|
|
218
|
-
* @param args The arguments for the CassandraStore.
|
|
219
|
-
* @returns Promise that resolves with a new instance of CassandraStore.
|
|
220
|
-
*/
|
|
221
|
-
static async fromDocuments(docs, embeddings, args) {
|
|
222
|
-
const instance = new this(embeddings, args);
|
|
223
|
-
await instance.addDocuments(docs);
|
|
224
|
-
return instance;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Static method to create an instance of CassandraStore from an existing
|
|
228
|
-
* index.
|
|
229
|
-
* @param embeddings The embeddings to use.
|
|
230
|
-
* @param args The arguments for the CassandraStore.
|
|
231
|
-
* @returns Promise that resolves with a new instance of CassandraStore.
|
|
232
|
-
*/
|
|
233
|
-
static async fromExistingIndex(embeddings, args) {
|
|
234
|
-
const instance = new this(embeddings, args);
|
|
235
|
-
await instance.initialize();
|
|
236
|
-
return instance;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Method to initialize the Cassandra database.
|
|
240
|
-
* @returns Promise that resolves when the database has been initialized.
|
|
241
|
-
*/
|
|
242
|
-
async initialize() {
|
|
243
|
-
let cql = "";
|
|
244
|
-
cql = `CREATE TABLE IF NOT EXISTS ${this.keyspace}.${this.table} (
|
|
245
|
-
${this.primaryKey.map((col) => `${col.name} ${col.type}`).join(", ")}
|
|
246
|
-
, text TEXT
|
|
247
|
-
${this.metadataColumns.length > 0
|
|
248
|
-
? ", " +
|
|
249
|
-
this.metadataColumns
|
|
250
|
-
.map((col) => `${col.name} ${col.type}`)
|
|
251
|
-
.join(", ")
|
|
252
|
-
: ""}
|
|
253
|
-
, vector VECTOR<FLOAT, ${this.dimensions}>
|
|
254
|
-
, ${this.buildPrimaryKey(this.primaryKey)}
|
|
255
|
-
) ${this.withClause ? `WITH ${this.withClause}` : ""};`;
|
|
256
|
-
await this.client.execute(cql);
|
|
257
|
-
this.selectColumns = `${this.primaryKey
|
|
258
|
-
.map((col) => `${col.name}`)
|
|
259
|
-
.join(", ")}
|
|
260
|
-
${this.metadataColumns.length > 0
|
|
261
|
-
? ", " +
|
|
262
|
-
this.metadataColumns
|
|
263
|
-
.map((col) => `${col.name}`)
|
|
264
|
-
.join(", ")
|
|
265
|
-
: ""}`;
|
|
266
|
-
cql = `CREATE CUSTOM INDEX IF NOT EXISTS idx_vector_${this.table}
|
|
267
|
-
ON ${this.keyspace}.${this.table}(vector) USING 'StorageAttachedIndex' WITH OPTIONS = {'similarity_function': '${this.vectorType.toUpperCase()}'};`;
|
|
268
|
-
await this.client.execute(cql);
|
|
269
|
-
for await (const { name, value } of this.indices) {
|
|
270
|
-
cql = `CREATE CUSTOM INDEX IF NOT EXISTS idx_${this.table}_${name}
|
|
271
|
-
ON ${this.keyspace}.${this.table} ${value} USING 'StorageAttachedIndex';`;
|
|
272
|
-
await this.client.execute(cql);
|
|
273
|
-
}
|
|
274
|
-
this.isInitialized = true;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Method to build the PRIMARY KEY clause for CREATE TABLE.
|
|
278
|
-
* @param columns: list of Column to include in the key
|
|
279
|
-
* @returns The clause, including PRIMARY KEY
|
|
280
|
-
*/
|
|
281
|
-
buildPrimaryKey(columns) {
|
|
282
|
-
// Partition columns may be specified with optional attribute col.partition
|
|
283
|
-
const partitionColumns = columns
|
|
284
|
-
.filter((col) => col.partition)
|
|
285
|
-
.map((col) => col.name)
|
|
286
|
-
.join(", ");
|
|
287
|
-
// All columns not part of the partition key are clustering columns
|
|
288
|
-
const clusteringColumns = columns
|
|
289
|
-
.filter((col) => !col.partition)
|
|
290
|
-
.map((col) => col.name)
|
|
291
|
-
.join(", ");
|
|
292
|
-
let primaryKey = "";
|
|
293
|
-
// If partition columns are specified, they are included in a () wrapper
|
|
294
|
-
// If not, the clustering columns are used, and the first clustering column
|
|
295
|
-
// is the partition key per normal Cassandra behaviour.
|
|
296
|
-
if (partitionColumns) {
|
|
297
|
-
primaryKey = `PRIMARY KEY ((${partitionColumns}), ${clusteringColumns})`;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
primaryKey = `PRIMARY KEY (${clusteringColumns})`;
|
|
301
|
-
}
|
|
302
|
-
return primaryKey;
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Type guard to check if an object is a Filter.
|
|
306
|
-
* @param obj: the object to check
|
|
307
|
-
* @returns boolean indicating if the object is a Filter
|
|
308
|
-
*/
|
|
309
|
-
isFilter(obj) {
|
|
310
|
-
return (typeof obj === "object" && obj !== null && "name" in obj && "value" in obj);
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Helper to convert Record<string,unknown> to a Filter[]
|
|
314
|
-
* @param record: a key-value Record collection
|
|
315
|
-
* @returns Record as a Filter[]
|
|
316
|
-
*/
|
|
317
|
-
convertToFilters(record) {
|
|
318
|
-
return Object.entries(record).map(([name, value]) => ({
|
|
319
|
-
name,
|
|
320
|
-
value,
|
|
321
|
-
operator: "=",
|
|
322
|
-
}));
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Input santisation method for filters, as FilterType is not required to be
|
|
326
|
-
* Filter[], but we want to use Filter[] internally.
|
|
327
|
-
* @param record: the proposed filter
|
|
328
|
-
* @returns A Filter[], which may be empty
|
|
329
|
-
*/
|
|
330
|
-
asFilters(record) {
|
|
331
|
-
if (!record) {
|
|
332
|
-
return [];
|
|
333
|
-
}
|
|
334
|
-
// If record is already an array
|
|
335
|
-
if (Array.isArray(record)) {
|
|
336
|
-
return record.flatMap((item) => {
|
|
337
|
-
// Check if item is a Filter before passing it to convertToFilters
|
|
338
|
-
if (this.isFilter(item)) {
|
|
339
|
-
return [item];
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
// Here item is treated as Record<string, unknown>
|
|
343
|
-
return this.convertToFilters(item);
|
|
344
|
-
}
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
// If record is a single Filter object, return it in an array
|
|
348
|
-
if (this.isFilter(record)) {
|
|
349
|
-
return [record];
|
|
350
|
-
}
|
|
351
|
-
// If record is a Record<string, unknown>, convert it to an array of Filter
|
|
352
|
-
return this.convertToFilters(record);
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Method to build the WHERE clause of a CQL query, using bind variable ?
|
|
356
|
-
* @param filters list of filters to include in the WHERE clause
|
|
357
|
-
* @returns The WHERE clause
|
|
358
|
-
*/
|
|
359
|
-
buildWhereClause(filters) {
|
|
360
|
-
if (!filters || filters.length === 0) {
|
|
361
|
-
return "";
|
|
362
|
-
}
|
|
363
|
-
const whereConditions = filters.map(({ name, operator = "=" }) => `${name} ${operator} ?`);
|
|
364
|
-
return `WHERE ${whereConditions.join(" AND ")}`;
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Method to build an CQL query for searching for similar vectors in the
|
|
368
|
-
* Cassandra database.
|
|
369
|
-
* @param query The query vector.
|
|
370
|
-
* @param k The number of similar vectors to return.
|
|
371
|
-
* @param filters
|
|
372
|
-
* @returns The CQL query string.
|
|
373
|
-
*/
|
|
374
|
-
buildSearchQuery(filters) {
|
|
375
|
-
const whereClause = filters ? this.buildWhereClause(filters) : "";
|
|
376
|
-
const cqlQuery = `SELECT ${this.selectColumns}, text, similarity_${this.vectorType}(vector, ?) AS similarity_score
|
|
377
|
-
FROM ${this.keyspace}.${this.table} ${whereClause} ORDER BY vector ANN OF ? LIMIT ?`;
|
|
378
|
-
return cqlQuery;
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Method for inserting vectors and documents into the Cassandra database in a batch.
|
|
382
|
-
* @param batchVectors The list of vectors to insert.
|
|
383
|
-
* @param batchDocuments The list of documents to insert.
|
|
384
|
-
* @returns Promise that resolves when the batch has been inserted.
|
|
385
|
-
*/
|
|
386
|
-
async executeInsert(batchVectors, batchDocuments) {
|
|
387
|
-
// Input validation: Check if the lengths of batchVectors and batchDocuments are the same
|
|
388
|
-
if (batchVectors.length !== batchDocuments.length) {
|
|
389
|
-
throw new Error(`The lengths of vectors (${batchVectors.length}) and documents (${batchDocuments.length}) must be the same.`);
|
|
390
|
-
}
|
|
391
|
-
// Initialize an array to hold query objects
|
|
392
|
-
const queries = [];
|
|
393
|
-
// Loop through each vector and document in the batch
|
|
394
|
-
for (let i = 0; i < batchVectors.length; i += 1) {
|
|
395
|
-
// Convert the list of numbers to a Float32Array, the driver's expected format of a vector
|
|
396
|
-
const preparedVector = new Float32Array(batchVectors[i]);
|
|
397
|
-
// Retrieve the corresponding document
|
|
398
|
-
const document = batchDocuments[i];
|
|
399
|
-
// Extract metadata column names and values from the document
|
|
400
|
-
const metadataColNames = Object.keys(document.metadata);
|
|
401
|
-
const metadataVals = Object.values(document.metadata);
|
|
402
|
-
// Prepare the metadata columns string for the query, if metadata exists
|
|
403
|
-
const metadataInsert = metadataColNames.length > 0 ? ", " + metadataColNames.join(", ") : "";
|
|
404
|
-
// Construct the query string and parameters
|
|
405
|
-
const query = {
|
|
406
|
-
query: `INSERT INTO ${this.keyspace}.${this.table} (vector, text${metadataInsert})
|
|
407
|
-
VALUES (?, ?${", ?".repeat(metadataColNames.length)})`,
|
|
408
|
-
params: [preparedVector, document.pageContent, ...metadataVals],
|
|
409
|
-
};
|
|
410
|
-
// Add the query to the list
|
|
411
|
-
queries.push(query);
|
|
412
|
-
}
|
|
413
|
-
// Execute the queries: use a batch if multiple, otherwise execute a single query
|
|
414
|
-
if (queries.length === 1) {
|
|
415
|
-
await this.client.execute(queries[0].query, queries[0].params, {
|
|
416
|
-
prepare: true,
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
await this.client.batch(queries, { prepare: true, logged: false });
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Method for inserting vectors and documents into the Cassandra database in
|
|
425
|
-
* parallel, keeping within maxConcurrency number of active insert statements.
|
|
426
|
-
* @param vectors The vectors to insert.
|
|
427
|
-
* @param documents The documents to insert.
|
|
428
|
-
* @returns Promise that resolves when the documents have been added.
|
|
429
|
-
*/
|
|
430
|
-
async insertAll(vectors, documents) {
|
|
431
|
-
// Input validation: Check if the lengths of vectors and documents are the same
|
|
432
|
-
if (vectors.length !== documents.length) {
|
|
433
|
-
throw new Error(`The lengths of vectors (${vectors.length}) and documents (${documents.length}) must be the same.`);
|
|
434
|
-
}
|
|
435
|
-
// Early exit: If there are no vectors or documents to insert, return immediately
|
|
436
|
-
if (vectors.length === 0) {
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
// Ensure the store is initialized before proceeding
|
|
440
|
-
if (!this.isInitialized) {
|
|
441
|
-
await this.initialize();
|
|
442
|
-
}
|
|
443
|
-
// Initialize an array to hold promises for each batch insert
|
|
444
|
-
const insertPromises = [];
|
|
445
|
-
// Buffers to hold the current batch of vectors and documents
|
|
446
|
-
let currentBatchVectors = [];
|
|
447
|
-
let currentBatchDocuments = [];
|
|
448
|
-
// Loop through each vector/document pair to insert; we use
|
|
449
|
-
// <= vectors.length to ensure the last batch is inserted
|
|
450
|
-
for (let i = 0; i <= vectors.length; i += 1) {
|
|
451
|
-
// Check if we're still within the array boundaries
|
|
452
|
-
if (i < vectors.length) {
|
|
453
|
-
// Add the current vector and document to the batch
|
|
454
|
-
currentBatchVectors.push(vectors[i]);
|
|
455
|
-
currentBatchDocuments.push(documents[i]);
|
|
456
|
-
}
|
|
457
|
-
// Check if we've reached the batch size or end of the array
|
|
458
|
-
if (currentBatchVectors.length >= this.batchSize ||
|
|
459
|
-
i === vectors.length) {
|
|
460
|
-
// Only proceed if there are items in the current batch
|
|
461
|
-
if (currentBatchVectors.length > 0) {
|
|
462
|
-
// Create copies of the current batch arrays to use in the async insert operation
|
|
463
|
-
const batchVectors = [...currentBatchVectors];
|
|
464
|
-
const batchDocuments = [...currentBatchDocuments];
|
|
465
|
-
// Execute the insert using the AsyncCaller - it will handle concurrency and queueing.
|
|
466
|
-
insertPromises.push(this.asyncCaller.call(() => this.executeInsert(batchVectors, batchDocuments)));
|
|
467
|
-
// Clear the current buffers for the next iteration
|
|
468
|
-
currentBatchVectors = [];
|
|
469
|
-
currentBatchDocuments = [];
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
// Wait for all insert operations to complete.
|
|
474
|
-
await Promise.all(insertPromises);
|
|
475
|
-
}
|
|
476
|
-
}
|
|
1
|
+
export * from "@langchain/community/vectorstores/cassandra";
|