langchain 0.0.203 → 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_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/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/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 -303
- 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/package.json +4 -26
- 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
|
@@ -10,583 +10,8 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
15
|
};
|
|
28
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports
|
|
30
|
-
const neo4j_driver_1 = __importDefault(require("neo4j-driver"));
|
|
31
|
-
const uuid = __importStar(require("uuid"));
|
|
32
|
-
const document_js_1 = require("../document.cjs");
|
|
33
|
-
const base_js_1 = require("./base.cjs");
|
|
34
|
-
const DEFAULT_SEARCH_TYPE = "vector";
|
|
35
|
-
const DEFAULT_DISTANCE_STRATEGY = "cosine";
|
|
36
|
-
/**
|
|
37
|
-
* @security *Security note*: Make sure that the database connection uses credentials
|
|
38
|
-
* that are narrowly-scoped to only include necessary permissions.
|
|
39
|
-
* Failure to do so may result in data corruption or loss, since the calling
|
|
40
|
-
* code may attempt commands that would result in deletion, mutation
|
|
41
|
-
* of data if appropriately prompted or reading sensitive data if such
|
|
42
|
-
* data is present in the database.
|
|
43
|
-
* The best way to guard against such negative outcomes is to (as appropriate)
|
|
44
|
-
* limit the permissions granted to the credentials used with this tool.
|
|
45
|
-
* For example, creating read only users for the database is a good way to
|
|
46
|
-
* ensure that the calling code cannot mutate or delete data.
|
|
47
|
-
*
|
|
48
|
-
* @link See https://js.langchain.com/docs/security for more information.
|
|
49
|
-
*/
|
|
50
|
-
class Neo4jVectorStore extends base_js_1.VectorStore {
|
|
51
|
-
_vectorstoreType() {
|
|
52
|
-
return "neo4jvector";
|
|
53
|
-
}
|
|
54
|
-
constructor(embeddings, config) {
|
|
55
|
-
super(embeddings, config);
|
|
56
|
-
Object.defineProperty(this, "driver", {
|
|
57
|
-
enumerable: true,
|
|
58
|
-
configurable: true,
|
|
59
|
-
writable: true,
|
|
60
|
-
value: void 0
|
|
61
|
-
});
|
|
62
|
-
Object.defineProperty(this, "database", {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
configurable: true,
|
|
65
|
-
writable: true,
|
|
66
|
-
value: void 0
|
|
67
|
-
});
|
|
68
|
-
Object.defineProperty(this, "preDeleteCollection", {
|
|
69
|
-
enumerable: true,
|
|
70
|
-
configurable: true,
|
|
71
|
-
writable: true,
|
|
72
|
-
value: void 0
|
|
73
|
-
});
|
|
74
|
-
Object.defineProperty(this, "nodeLabel", {
|
|
75
|
-
enumerable: true,
|
|
76
|
-
configurable: true,
|
|
77
|
-
writable: true,
|
|
78
|
-
value: void 0
|
|
79
|
-
});
|
|
80
|
-
Object.defineProperty(this, "embeddingNodeProperty", {
|
|
81
|
-
enumerable: true,
|
|
82
|
-
configurable: true,
|
|
83
|
-
writable: true,
|
|
84
|
-
value: void 0
|
|
85
|
-
});
|
|
86
|
-
Object.defineProperty(this, "embeddingDimension", {
|
|
87
|
-
enumerable: true,
|
|
88
|
-
configurable: true,
|
|
89
|
-
writable: true,
|
|
90
|
-
value: void 0
|
|
91
|
-
});
|
|
92
|
-
Object.defineProperty(this, "textNodeProperty", {
|
|
93
|
-
enumerable: true,
|
|
94
|
-
configurable: true,
|
|
95
|
-
writable: true,
|
|
96
|
-
value: void 0
|
|
97
|
-
});
|
|
98
|
-
Object.defineProperty(this, "keywordIndexName", {
|
|
99
|
-
enumerable: true,
|
|
100
|
-
configurable: true,
|
|
101
|
-
writable: true,
|
|
102
|
-
value: void 0
|
|
103
|
-
});
|
|
104
|
-
Object.defineProperty(this, "indexName", {
|
|
105
|
-
enumerable: true,
|
|
106
|
-
configurable: true,
|
|
107
|
-
writable: true,
|
|
108
|
-
value: void 0
|
|
109
|
-
});
|
|
110
|
-
Object.defineProperty(this, "retrievalQuery", {
|
|
111
|
-
enumerable: true,
|
|
112
|
-
configurable: true,
|
|
113
|
-
writable: true,
|
|
114
|
-
value: void 0
|
|
115
|
-
});
|
|
116
|
-
Object.defineProperty(this, "searchType", {
|
|
117
|
-
enumerable: true,
|
|
118
|
-
configurable: true,
|
|
119
|
-
writable: true,
|
|
120
|
-
value: void 0
|
|
121
|
-
});
|
|
122
|
-
Object.defineProperty(this, "distanceStrategy", {
|
|
123
|
-
enumerable: true,
|
|
124
|
-
configurable: true,
|
|
125
|
-
writable: true,
|
|
126
|
-
value: DEFAULT_DISTANCE_STRATEGY
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
static async initialize(embeddings, config) {
|
|
130
|
-
const store = new Neo4jVectorStore(embeddings, config);
|
|
131
|
-
await store._initializeDriver(config);
|
|
132
|
-
await store._verifyConnectivity();
|
|
133
|
-
const { preDeleteCollection = false, nodeLabel = "Chunk", textNodeProperty = "text", embeddingNodeProperty = "embedding", keywordIndexName = "keyword", indexName = "vector", retrievalQuery = "", searchType = DEFAULT_SEARCH_TYPE, } = config;
|
|
134
|
-
store.embeddingDimension = (await embeddings.embedQuery("foo")).length;
|
|
135
|
-
store.preDeleteCollection = preDeleteCollection;
|
|
136
|
-
store.nodeLabel = nodeLabel;
|
|
137
|
-
store.textNodeProperty = textNodeProperty;
|
|
138
|
-
store.embeddingNodeProperty = embeddingNodeProperty;
|
|
139
|
-
store.keywordIndexName = keywordIndexName;
|
|
140
|
-
store.indexName = indexName;
|
|
141
|
-
store.retrievalQuery = retrievalQuery;
|
|
142
|
-
store.searchType = searchType;
|
|
143
|
-
if (store.preDeleteCollection) {
|
|
144
|
-
await store._dropIndex();
|
|
145
|
-
}
|
|
146
|
-
return store;
|
|
147
|
-
}
|
|
148
|
-
async _initializeDriver({ url, username, password, database = "neo4j", }) {
|
|
149
|
-
try {
|
|
150
|
-
this.driver = neo4j_driver_1.default.driver(url, neo4j_driver_1.default.auth.basic(username, password));
|
|
151
|
-
this.database = database;
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
throw new Error("Could not create a Neo4j driver instance. Please check the connection details.");
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
async _verifyConnectivity() {
|
|
158
|
-
await this.driver.verifyAuthentication();
|
|
159
|
-
}
|
|
160
|
-
async close() {
|
|
161
|
-
await this.driver.close();
|
|
162
|
-
}
|
|
163
|
-
async _dropIndex() {
|
|
164
|
-
try {
|
|
165
|
-
await this.query(`
|
|
166
|
-
MATCH (n:\`${this.nodeLabel}\`)
|
|
167
|
-
CALL {
|
|
168
|
-
WITH n
|
|
169
|
-
DETACH DELETE n
|
|
170
|
-
}
|
|
171
|
-
IN TRANSACTIONS OF 10000 ROWS;
|
|
172
|
-
`);
|
|
173
|
-
await this.query(`DROP INDEX ${this.indexName}`);
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
console.error("An error occurred while dropping the index:", error);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
180
|
-
async query(query, params = {}) {
|
|
181
|
-
const session = this.driver.session({ database: this.database });
|
|
182
|
-
const result = await session.run(query, params);
|
|
183
|
-
return toObjects(result.records);
|
|
184
|
-
}
|
|
185
|
-
static async fromTexts(texts,
|
|
186
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
187
|
-
metadatas, embeddings, config) {
|
|
188
|
-
const docs = [];
|
|
189
|
-
for (let i = 0; i < texts.length; i += 1) {
|
|
190
|
-
const metadata = Array.isArray(metadatas) ? metadatas[i] : metadatas;
|
|
191
|
-
const newDoc = new document_js_1.Document({
|
|
192
|
-
pageContent: texts[i],
|
|
193
|
-
metadata,
|
|
194
|
-
});
|
|
195
|
-
docs.push(newDoc);
|
|
196
|
-
}
|
|
197
|
-
return Neo4jVectorStore.fromDocuments(docs, embeddings, config);
|
|
198
|
-
}
|
|
199
|
-
static async fromDocuments(docs, embeddings, config) {
|
|
200
|
-
const { searchType = DEFAULT_SEARCH_TYPE, createIdIndex = true, textNodeProperties = [], } = config;
|
|
201
|
-
const store = await this.initialize(embeddings, config);
|
|
202
|
-
const embeddingDimension = await store.retrieveExistingIndex();
|
|
203
|
-
if (!embeddingDimension) {
|
|
204
|
-
await store.createNewIndex();
|
|
205
|
-
}
|
|
206
|
-
else if (store.embeddingDimension !== embeddingDimension) {
|
|
207
|
-
throw new Error(`Index with name "${store.indexName}" already exists. The provided embedding function and vector index dimensions do not match.
|
|
208
|
-
Embedding function dimension: ${store.embeddingDimension}
|
|
209
|
-
Vector index dimension: ${embeddingDimension}`);
|
|
210
|
-
}
|
|
211
|
-
if (searchType === "hybrid") {
|
|
212
|
-
const ftsNodeLabel = await store.retrieveExistingFtsIndex();
|
|
213
|
-
if (!ftsNodeLabel) {
|
|
214
|
-
await store.createNewKeywordIndex(textNodeProperties);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
if (ftsNodeLabel !== store.nodeLabel) {
|
|
218
|
-
throw Error("Vector and keyword index don't index the same node label");
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
if (createIdIndex) {
|
|
223
|
-
await store.query(`CREATE CONSTRAINT IF NOT EXISTS FOR (n:${store.nodeLabel}) REQUIRE n.id IS UNIQUE;`);
|
|
224
|
-
}
|
|
225
|
-
await store.addDocuments(docs);
|
|
226
|
-
return store;
|
|
227
|
-
}
|
|
228
|
-
static async fromExistingIndex(embeddings, config) {
|
|
229
|
-
const { searchType = DEFAULT_SEARCH_TYPE, keywordIndexName = "keyword" } = config;
|
|
230
|
-
if (searchType === "hybrid" && !keywordIndexName) {
|
|
231
|
-
throw Error("keyword_index name has to be specified when using hybrid search option");
|
|
232
|
-
}
|
|
233
|
-
const store = await this.initialize(embeddings, config);
|
|
234
|
-
const embeddingDimension = await store.retrieveExistingIndex();
|
|
235
|
-
if (!embeddingDimension) {
|
|
236
|
-
throw Error("The specified vector index name does not exist. Make sure to check if you spelled it correctly");
|
|
237
|
-
}
|
|
238
|
-
if (store.embeddingDimension !== embeddingDimension) {
|
|
239
|
-
throw new Error(`The provided embedding function and vector index dimensions do not match.
|
|
240
|
-
Embedding function dimension: ${store.embeddingDimension}
|
|
241
|
-
Vector index dimension: ${embeddingDimension}`);
|
|
242
|
-
}
|
|
243
|
-
if (searchType === "hybrid") {
|
|
244
|
-
const ftsNodeLabel = await store.retrieveExistingFtsIndex();
|
|
245
|
-
if (!ftsNodeLabel) {
|
|
246
|
-
throw Error("The specified keyword index name does not exist. Make sure to check if you spelled it correctly");
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
if (ftsNodeLabel !== store.nodeLabel) {
|
|
250
|
-
throw Error("Vector and keyword index don't index the same node label");
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
return store;
|
|
255
|
-
}
|
|
256
|
-
static async fromExistingGraph(embeddings, config) {
|
|
257
|
-
const { textNodeProperties = [], embeddingNodeProperty, searchType = DEFAULT_SEARCH_TYPE, retrievalQuery = "", nodeLabel, } = config;
|
|
258
|
-
let _retrievalQuery = retrievalQuery;
|
|
259
|
-
if (textNodeProperties.length === 0) {
|
|
260
|
-
throw Error("Parameter `text_node_properties` must not be an empty array");
|
|
261
|
-
}
|
|
262
|
-
if (!retrievalQuery) {
|
|
263
|
-
_retrievalQuery = `
|
|
264
|
-
RETURN reduce(str='', k IN ${JSON.stringify(textNodeProperties)} |
|
|
265
|
-
str + '\\n' + k + ': ' + coalesce(node[k], '')) AS text,
|
|
266
|
-
node {.*, \`${embeddingNodeProperty}\`: Null, id: Null, ${textNodeProperties
|
|
267
|
-
.map((prop) => `\`${prop}\`: Null`)
|
|
268
|
-
.join(", ")} } AS metadata, score
|
|
269
|
-
`;
|
|
270
|
-
}
|
|
271
|
-
const store = await this.initialize(embeddings, {
|
|
272
|
-
...config,
|
|
273
|
-
retrievalQuery: _retrievalQuery,
|
|
274
|
-
});
|
|
275
|
-
const embeddingDimension = await store.retrieveExistingIndex();
|
|
276
|
-
if (!embeddingDimension) {
|
|
277
|
-
await store.createNewIndex();
|
|
278
|
-
}
|
|
279
|
-
else if (store.embeddingDimension !== embeddingDimension) {
|
|
280
|
-
throw new Error(`Index with name ${store.indexName} already exists. The provided embedding function and vector index dimensions do not match.\nEmbedding function dimension: ${store.embeddingDimension}\nVector index dimension: ${embeddingDimension}`);
|
|
281
|
-
}
|
|
282
|
-
if (searchType === "hybrid") {
|
|
283
|
-
const ftsNodeLabel = await store.retrieveExistingFtsIndex(textNodeProperties);
|
|
284
|
-
if (!ftsNodeLabel) {
|
|
285
|
-
await store.createNewKeywordIndex(textNodeProperties);
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
if (ftsNodeLabel !== store.nodeLabel) {
|
|
289
|
-
throw Error("Vector and keyword index don't index the same node label");
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
// eslint-disable-next-line no-constant-condition
|
|
294
|
-
while (true) {
|
|
295
|
-
const fetchQuery = `
|
|
296
|
-
MATCH (n:\`${nodeLabel}\`)
|
|
297
|
-
WHERE n.${embeddingNodeProperty} IS null
|
|
298
|
-
AND any(k in $props WHERE n[k] IS NOT null)
|
|
299
|
-
RETURN elementId(n) AS id, reduce(str='', k IN $props |
|
|
300
|
-
str + '\\n' + k + ':' + coalesce(n[k], '')) AS text
|
|
301
|
-
LIMIT 1000
|
|
302
|
-
`;
|
|
303
|
-
const data = await store.query(fetchQuery, { props: textNodeProperties });
|
|
304
|
-
if (!data) {
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
const textEmbeddings = await embeddings.embedDocuments(data.map((el) => el.text));
|
|
308
|
-
const params = {
|
|
309
|
-
data: data.map((el, index) => ({
|
|
310
|
-
id: el.id,
|
|
311
|
-
embedding: textEmbeddings[index],
|
|
312
|
-
})),
|
|
313
|
-
};
|
|
314
|
-
await store.query(`
|
|
315
|
-
UNWIND $data AS row
|
|
316
|
-
MATCH (n:\`${nodeLabel}\`)
|
|
317
|
-
WHERE elementId(n) = row.id
|
|
318
|
-
CALL db.create.setVectorProperty(n, '${embeddingNodeProperty}', row.embedding)
|
|
319
|
-
YIELD node RETURN count(*)
|
|
320
|
-
`, params);
|
|
321
|
-
if (data.length < 1000) {
|
|
322
|
-
break;
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
return store;
|
|
326
|
-
}
|
|
327
|
-
async createNewIndex() {
|
|
328
|
-
const indexQuery = `
|
|
329
|
-
CALL db.index.vector.createNodeIndex(
|
|
330
|
-
$index_name,
|
|
331
|
-
$node_label,
|
|
332
|
-
$embedding_node_property,
|
|
333
|
-
toInteger($embedding_dimension),
|
|
334
|
-
$similarity_metric
|
|
335
|
-
)
|
|
336
|
-
`;
|
|
337
|
-
const parameters = {
|
|
338
|
-
index_name: this.indexName,
|
|
339
|
-
node_label: this.nodeLabel,
|
|
340
|
-
embedding_node_property: this.embeddingNodeProperty,
|
|
341
|
-
embedding_dimension: this.embeddingDimension,
|
|
342
|
-
similarity_metric: this.distanceStrategy,
|
|
343
|
-
};
|
|
344
|
-
await this.query(indexQuery, parameters);
|
|
345
|
-
}
|
|
346
|
-
async retrieveExistingIndex() {
|
|
347
|
-
let indexInformation = await this.query(`
|
|
348
|
-
SHOW INDEXES YIELD name, type, labelsOrTypes, properties, options
|
|
349
|
-
WHERE type = 'VECTOR' AND (name = $index_name
|
|
350
|
-
OR (labelsOrTypes[0] = $node_label AND
|
|
351
|
-
properties[0] = $embedding_node_property))
|
|
352
|
-
RETURN name, labelsOrTypes, properties, options
|
|
353
|
-
`, {
|
|
354
|
-
index_name: this.indexName,
|
|
355
|
-
node_label: this.nodeLabel,
|
|
356
|
-
embedding_node_property: this.embeddingNodeProperty,
|
|
357
|
-
});
|
|
358
|
-
if (indexInformation) {
|
|
359
|
-
indexInformation = this.sortByIndexName(indexInformation, this.indexName);
|
|
360
|
-
try {
|
|
361
|
-
const [index] = indexInformation;
|
|
362
|
-
const [labelOrType] = index.labelsOrTypes;
|
|
363
|
-
const [property] = index.properties;
|
|
364
|
-
this.indexName = index.name;
|
|
365
|
-
this.nodeLabel = labelOrType;
|
|
366
|
-
this.embeddingNodeProperty = property;
|
|
367
|
-
const embeddingDimension = index.options.indexConfig["vector.dimensions"];
|
|
368
|
-
return Number(embeddingDimension);
|
|
369
|
-
}
|
|
370
|
-
catch (error) {
|
|
371
|
-
return null;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
return null;
|
|
375
|
-
}
|
|
376
|
-
async retrieveExistingFtsIndex(textNodeProperties = []) {
|
|
377
|
-
const indexInformation = await this.query(`
|
|
378
|
-
SHOW INDEXES YIELD name, type, labelsOrTypes, properties, options
|
|
379
|
-
WHERE type = 'FULLTEXT' AND (name = $keyword_index_name
|
|
380
|
-
OR (labelsOrTypes = [$node_label] AND
|
|
381
|
-
properties = $text_node_property))
|
|
382
|
-
RETURN name, labelsOrTypes, properties, options
|
|
383
|
-
`, {
|
|
384
|
-
keyword_index_name: this.keywordIndexName,
|
|
385
|
-
node_label: this.nodeLabel,
|
|
386
|
-
text_node_property: textNodeProperties.length > 0
|
|
387
|
-
? textNodeProperties
|
|
388
|
-
: [this.textNodeProperty],
|
|
389
|
-
});
|
|
390
|
-
if (indexInformation) {
|
|
391
|
-
// Sort the index information by index name
|
|
392
|
-
const sortedIndexInformation = this.sortByIndexName(indexInformation, this.indexName);
|
|
393
|
-
try {
|
|
394
|
-
const [index] = sortedIndexInformation;
|
|
395
|
-
const [labelOrType] = index.labelsOrTypes;
|
|
396
|
-
const [property] = index.properties;
|
|
397
|
-
this.keywordIndexName = index.name;
|
|
398
|
-
this.textNodeProperty = property;
|
|
399
|
-
this.nodeLabel = labelOrType;
|
|
400
|
-
return labelOrType;
|
|
401
|
-
}
|
|
402
|
-
catch (error) {
|
|
403
|
-
return null;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
return null;
|
|
407
|
-
}
|
|
408
|
-
async createNewKeywordIndex(textNodeProperties = []) {
|
|
409
|
-
const nodeProps = textNodeProperties.length > 0
|
|
410
|
-
? textNodeProperties
|
|
411
|
-
: [this.textNodeProperty];
|
|
412
|
-
// Construct the Cypher query to create a new full text index
|
|
413
|
-
const ftsIndexQuery = `
|
|
414
|
-
CREATE FULLTEXT INDEX ${this.keywordIndexName}
|
|
415
|
-
FOR (n:\`${this.nodeLabel}\`) ON EACH
|
|
416
|
-
[${nodeProps.map((prop) => `n.\`${prop}\``).join(", ")}]
|
|
417
|
-
`;
|
|
418
|
-
await this.query(ftsIndexQuery);
|
|
419
|
-
}
|
|
420
|
-
sortByIndexName(
|
|
421
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
422
|
-
values, indexName
|
|
423
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
424
|
-
) {
|
|
425
|
-
return values.sort((a, b) => (a.index_name === indexName ? -1 : 0) -
|
|
426
|
-
(b.index_name === indexName ? -1 : 0));
|
|
427
|
-
}
|
|
428
|
-
async addVectors(vectors, documents,
|
|
429
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
430
|
-
metadatas, ids) {
|
|
431
|
-
let _ids = ids;
|
|
432
|
-
let _metadatas = metadatas;
|
|
433
|
-
if (!_ids) {
|
|
434
|
-
_ids = documents.map(() => uuid.v1());
|
|
435
|
-
}
|
|
436
|
-
if (!metadatas) {
|
|
437
|
-
_metadatas = documents.map(() => ({}));
|
|
438
|
-
}
|
|
439
|
-
const importQuery = `
|
|
440
|
-
UNWIND $data AS row
|
|
441
|
-
CALL {
|
|
442
|
-
WITH row
|
|
443
|
-
MERGE (c:\`${this.nodeLabel}\` {id: row.id})
|
|
444
|
-
WITH c, row
|
|
445
|
-
CALL db.create.setVectorProperty(c, '${this.embeddingNodeProperty}', row.embedding)
|
|
446
|
-
YIELD node
|
|
447
|
-
SET c.\`${this.textNodeProperty}\` = row.text
|
|
448
|
-
SET c += row.metadata
|
|
449
|
-
} IN TRANSACTIONS OF 1000 ROWS
|
|
450
|
-
`;
|
|
451
|
-
const parameters = {
|
|
452
|
-
data: documents.map(({ pageContent, metadata }, index) => ({
|
|
453
|
-
text: pageContent,
|
|
454
|
-
metadata: _metadatas ? _metadatas[index] : metadata,
|
|
455
|
-
embedding: vectors[index],
|
|
456
|
-
id: _ids ? _ids[index] : null,
|
|
457
|
-
})),
|
|
458
|
-
};
|
|
459
|
-
await this.query(importQuery, parameters);
|
|
460
|
-
return _ids;
|
|
461
|
-
}
|
|
462
|
-
async addDocuments(documents) {
|
|
463
|
-
const texts = documents.map(({ pageContent }) => pageContent);
|
|
464
|
-
return this.addVectors(await this.embeddings.embedDocuments(texts), documents);
|
|
465
|
-
}
|
|
466
|
-
async similaritySearch(query, k = 4) {
|
|
467
|
-
const embedding = await this.embeddings.embedQuery(query);
|
|
468
|
-
const results = await this.similaritySearchVectorWithScore(embedding, k, query);
|
|
469
|
-
return results.map((result) => result[0]);
|
|
470
|
-
}
|
|
471
|
-
async similaritySearchVectorWithScore(vector, k, query) {
|
|
472
|
-
const defaultRetrieval = `
|
|
473
|
-
RETURN node.${this.textNodeProperty} AS text, score,
|
|
474
|
-
node {.*, ${this.textNodeProperty}: Null,
|
|
475
|
-
${this.embeddingNodeProperty}: Null, id: Null } AS metadata
|
|
476
|
-
`;
|
|
477
|
-
const retrievalQuery = this.retrievalQuery
|
|
478
|
-
? this.retrievalQuery
|
|
479
|
-
: defaultRetrieval;
|
|
480
|
-
const readQuery = `${getSearchIndexQuery(this.searchType)} ${retrievalQuery}`;
|
|
481
|
-
const parameters = {
|
|
482
|
-
index: this.indexName,
|
|
483
|
-
k: Number(k),
|
|
484
|
-
embedding: vector,
|
|
485
|
-
keyword_index: this.keywordIndexName,
|
|
486
|
-
query,
|
|
487
|
-
};
|
|
488
|
-
const results = await this.query(readQuery, parameters);
|
|
489
|
-
if (results) {
|
|
490
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
491
|
-
const docs = results.map((result) => [
|
|
492
|
-
new document_js_1.Document({
|
|
493
|
-
pageContent: result.text,
|
|
494
|
-
metadata: Object.fromEntries(Object.entries(result.metadata).filter(([_, v]) => v !== null)),
|
|
495
|
-
}),
|
|
496
|
-
result.score,
|
|
497
|
-
]);
|
|
498
|
-
return docs;
|
|
499
|
-
}
|
|
500
|
-
return [];
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
exports.Neo4jVectorStore = Neo4jVectorStore;
|
|
504
|
-
function toObjects(records) {
|
|
505
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
506
|
-
const recordValues = records.map((record) => {
|
|
507
|
-
const rObj = record.toObject();
|
|
508
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
509
|
-
const out = {};
|
|
510
|
-
Object.keys(rObj).forEach((key) => {
|
|
511
|
-
out[key] = itemIntToString(rObj[key]);
|
|
512
|
-
});
|
|
513
|
-
return out;
|
|
514
|
-
});
|
|
515
|
-
return recordValues;
|
|
516
|
-
}
|
|
517
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
518
|
-
function itemIntToString(item) {
|
|
519
|
-
if (neo4j_driver_1.default.isInt(item))
|
|
520
|
-
return item.toString();
|
|
521
|
-
if (Array.isArray(item))
|
|
522
|
-
return item.map((ii) => itemIntToString(ii));
|
|
523
|
-
if (["number", "string", "boolean"].indexOf(typeof item) !== -1)
|
|
524
|
-
return item;
|
|
525
|
-
if (item === null)
|
|
526
|
-
return item;
|
|
527
|
-
if (typeof item === "object")
|
|
528
|
-
return objIntToString(item);
|
|
529
|
-
}
|
|
530
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
531
|
-
function objIntToString(obj) {
|
|
532
|
-
const entry = extractFromNeoObjects(obj);
|
|
533
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
534
|
-
let newObj = null;
|
|
535
|
-
if (Array.isArray(entry)) {
|
|
536
|
-
newObj = entry.map((item) => itemIntToString(item));
|
|
537
|
-
}
|
|
538
|
-
else if (entry !== null && typeof entry === "object") {
|
|
539
|
-
newObj = {};
|
|
540
|
-
Object.keys(entry).forEach((key) => {
|
|
541
|
-
newObj[key] = itemIntToString(entry[key]);
|
|
542
|
-
});
|
|
543
|
-
}
|
|
544
|
-
return newObj;
|
|
545
|
-
}
|
|
546
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
547
|
-
function extractFromNeoObjects(obj) {
|
|
548
|
-
if (
|
|
549
|
-
// eslint-disable-next-line
|
|
550
|
-
obj instanceof neo4j_driver_1.default.types.Node ||
|
|
551
|
-
// eslint-disable-next-line
|
|
552
|
-
obj instanceof neo4j_driver_1.default.types.Relationship) {
|
|
553
|
-
return obj.properties;
|
|
554
|
-
// eslint-disable-next-line
|
|
555
|
-
}
|
|
556
|
-
else if (obj instanceof neo4j_driver_1.default.types.Path) {
|
|
557
|
-
// eslint-disable-next-line
|
|
558
|
-
return [].concat.apply([], extractPathForRows(obj));
|
|
559
|
-
}
|
|
560
|
-
return obj;
|
|
561
|
-
}
|
|
562
|
-
function extractPathForRows(path) {
|
|
563
|
-
let { segments } = path;
|
|
564
|
-
// Zero length path. No relationship, end === start
|
|
565
|
-
if (!Array.isArray(path.segments) || path.segments.length < 1) {
|
|
566
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
567
|
-
segments = [{ ...path, end: null }];
|
|
568
|
-
}
|
|
569
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
570
|
-
return segments.map((segment) => [
|
|
571
|
-
objIntToString(segment.start),
|
|
572
|
-
objIntToString(segment.relationship),
|
|
573
|
-
objIntToString(segment.end),
|
|
574
|
-
].filter((part) => part !== null));
|
|
575
|
-
}
|
|
576
|
-
function getSearchIndexQuery(searchType) {
|
|
577
|
-
const typeToQueryMap = {
|
|
578
|
-
vector: "CALL db.index.vector.queryNodes($index, $k, $embedding) YIELD node, score",
|
|
579
|
-
hybrid: `
|
|
580
|
-
CALL {
|
|
581
|
-
CALL db.index.vector.queryNodes($index, $k, $embedding) YIELD node, score
|
|
582
|
-
RETURN node, score UNION
|
|
583
|
-
CALL db.index.fulltext.queryNodes($keyword_index, $query, {limit: $k}) YIELD node, score
|
|
584
|
-
WITH collect({node: node, score: score}) AS nodes, max(score) AS max
|
|
585
|
-
UNWIND nodes AS n
|
|
586
|
-
RETURN n.node AS node, (n.score / max) AS score
|
|
587
|
-
}
|
|
588
|
-
WITH node, max(score) AS score ORDER BY score DESC LIMIT toInteger($k)
|
|
589
|
-
`,
|
|
590
|
-
};
|
|
591
|
-
return typeToQueryMap[searchType];
|
|
592
|
-
}
|
|
17
|
+
__exportStar(require("@langchain/community/vectorstores/neo4j_vector"), exports);
|
|
@@ -1,75 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { Embeddings } from "../embeddings/base.js";
|
|
3
|
-
import { VectorStore } from "./base.js";
|
|
4
|
-
export type SearchType = "vector" | "hybrid";
|
|
5
|
-
export type DistanceStrategy = "euclidean" | "cosine";
|
|
6
|
-
interface Neo4jVectorStoreArgs {
|
|
7
|
-
url: string;
|
|
8
|
-
username: string;
|
|
9
|
-
password: string;
|
|
10
|
-
database?: string;
|
|
11
|
-
preDeleteCollection?: boolean;
|
|
12
|
-
textNodeProperty?: string;
|
|
13
|
-
textNodeProperties?: string[];
|
|
14
|
-
embeddingNodeProperty?: string;
|
|
15
|
-
keywordIndexName?: string;
|
|
16
|
-
indexName?: string;
|
|
17
|
-
searchType?: SearchType;
|
|
18
|
-
retrievalQuery?: string;
|
|
19
|
-
nodeLabel?: string;
|
|
20
|
-
createIdIndex?: boolean;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* @security *Security note*: Make sure that the database connection uses credentials
|
|
24
|
-
* that are narrowly-scoped to only include necessary permissions.
|
|
25
|
-
* Failure to do so may result in data corruption or loss, since the calling
|
|
26
|
-
* code may attempt commands that would result in deletion, mutation
|
|
27
|
-
* of data if appropriately prompted or reading sensitive data if such
|
|
28
|
-
* data is present in the database.
|
|
29
|
-
* The best way to guard against such negative outcomes is to (as appropriate)
|
|
30
|
-
* limit the permissions granted to the credentials used with this tool.
|
|
31
|
-
* For example, creating read only users for the database is a good way to
|
|
32
|
-
* ensure that the calling code cannot mutate or delete data.
|
|
33
|
-
*
|
|
34
|
-
* @link See https://js.langchain.com/docs/security for more information.
|
|
35
|
-
*/
|
|
36
|
-
export declare class Neo4jVectorStore extends VectorStore {
|
|
37
|
-
private driver;
|
|
38
|
-
private database;
|
|
39
|
-
private preDeleteCollection;
|
|
40
|
-
private nodeLabel;
|
|
41
|
-
private embeddingNodeProperty;
|
|
42
|
-
private embeddingDimension;
|
|
43
|
-
private textNodeProperty;
|
|
44
|
-
private keywordIndexName;
|
|
45
|
-
private indexName;
|
|
46
|
-
private retrievalQuery;
|
|
47
|
-
private searchType;
|
|
48
|
-
private distanceStrategy;
|
|
49
|
-
_vectorstoreType(): string;
|
|
50
|
-
constructor(embeddings: Embeddings, config: Neo4jVectorStoreArgs);
|
|
51
|
-
static initialize(embeddings: Embeddings, config: Neo4jVectorStoreArgs): Promise<Neo4jVectorStore>;
|
|
52
|
-
_initializeDriver({ url, username, password, database, }: Neo4jVectorStoreArgs): Promise<void>;
|
|
53
|
-
_verifyConnectivity(): Promise<void>;
|
|
54
|
-
close(): Promise<void>;
|
|
55
|
-
_dropIndex(): Promise<void>;
|
|
56
|
-
query(query: string, params?: any): Promise<any[]>;
|
|
57
|
-
static fromTexts(texts: string[], metadatas: any, embeddings: Embeddings, config: Neo4jVectorStoreArgs): Promise<Neo4jVectorStore>;
|
|
58
|
-
static fromDocuments(docs: Document[], embeddings: Embeddings, config: Neo4jVectorStoreArgs): Promise<Neo4jVectorStore>;
|
|
59
|
-
static fromExistingIndex(embeddings: Embeddings, config: Neo4jVectorStoreArgs): Promise<Neo4jVectorStore>;
|
|
60
|
-
static fromExistingGraph(embeddings: Embeddings, config: Neo4jVectorStoreArgs): Promise<Neo4jVectorStore>;
|
|
61
|
-
createNewIndex(): Promise<void>;
|
|
62
|
-
retrieveExistingIndex(): Promise<number | null>;
|
|
63
|
-
retrieveExistingFtsIndex(textNodeProperties?: string[]): Promise<string | null>;
|
|
64
|
-
createNewKeywordIndex(textNodeProperties?: string[]): Promise<void>;
|
|
65
|
-
sortByIndexName(values: Array<{
|
|
66
|
-
[key: string]: any;
|
|
67
|
-
}>, indexName: string): Array<{
|
|
68
|
-
[key: string]: any;
|
|
69
|
-
}>;
|
|
70
|
-
addVectors(vectors: number[][], documents: Document[], metadatas?: Record<string, any>[], ids?: string[]): Promise<string[]>;
|
|
71
|
-
addDocuments(documents: Document[]): Promise<string[]>;
|
|
72
|
-
similaritySearch(query: string, k?: number): Promise<Document[]>;
|
|
73
|
-
similaritySearchVectorWithScore(vector: number[], k: number, query: string): Promise<[Document, number][]>;
|
|
74
|
-
}
|
|
75
|
-
export {};
|
|
1
|
+
export * from "@langchain/community/vectorstores/neo4j_vector";
|