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
|
@@ -1,274 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { Document } from "../document.js";
|
|
3
|
-
import { VectorStore } from "./base.js";
|
|
4
|
-
/**
|
|
5
|
-
* Class for interacting with an Elasticsearch database. It extends the
|
|
6
|
-
* VectorStore base class and provides methods for adding documents and
|
|
7
|
-
* vectors to the Elasticsearch database, performing similarity searches,
|
|
8
|
-
* deleting documents, and more.
|
|
9
|
-
*/
|
|
10
|
-
export class ElasticVectorSearch extends VectorStore {
|
|
11
|
-
_vectorstoreType() {
|
|
12
|
-
return "elasticsearch";
|
|
13
|
-
}
|
|
14
|
-
constructor(embeddings, args) {
|
|
15
|
-
super(embeddings, args);
|
|
16
|
-
Object.defineProperty(this, "client", {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
configurable: true,
|
|
19
|
-
writable: true,
|
|
20
|
-
value: void 0
|
|
21
|
-
});
|
|
22
|
-
Object.defineProperty(this, "indexName", {
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true,
|
|
25
|
-
writable: true,
|
|
26
|
-
value: void 0
|
|
27
|
-
});
|
|
28
|
-
Object.defineProperty(this, "engine", {
|
|
29
|
-
enumerable: true,
|
|
30
|
-
configurable: true,
|
|
31
|
-
writable: true,
|
|
32
|
-
value: void 0
|
|
33
|
-
});
|
|
34
|
-
Object.defineProperty(this, "similarity", {
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true,
|
|
38
|
-
value: void 0
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(this, "efConstruction", {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
configurable: true,
|
|
43
|
-
writable: true,
|
|
44
|
-
value: void 0
|
|
45
|
-
});
|
|
46
|
-
Object.defineProperty(this, "m", {
|
|
47
|
-
enumerable: true,
|
|
48
|
-
configurable: true,
|
|
49
|
-
writable: true,
|
|
50
|
-
value: void 0
|
|
51
|
-
});
|
|
52
|
-
Object.defineProperty(this, "candidates", {
|
|
53
|
-
enumerable: true,
|
|
54
|
-
configurable: true,
|
|
55
|
-
writable: true,
|
|
56
|
-
value: void 0
|
|
57
|
-
});
|
|
58
|
-
this.engine = args.vectorSearchOptions?.engine ?? "hnsw";
|
|
59
|
-
this.similarity = args.vectorSearchOptions?.similarity ?? "l2_norm";
|
|
60
|
-
this.m = args.vectorSearchOptions?.m ?? 16;
|
|
61
|
-
this.efConstruction = args.vectorSearchOptions?.efConstruction ?? 100;
|
|
62
|
-
this.candidates = args.vectorSearchOptions?.candidates ?? 200;
|
|
63
|
-
this.client = args.client.child({
|
|
64
|
-
headers: { "user-agent": "langchain-js-vs/0.0.1" },
|
|
65
|
-
});
|
|
66
|
-
this.indexName = args.indexName ?? "documents";
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Method to add documents to the Elasticsearch database. It first
|
|
70
|
-
* converts the documents to vectors using the embeddings, then adds the
|
|
71
|
-
* vectors to the database.
|
|
72
|
-
* @param documents The documents to add to the database.
|
|
73
|
-
* @param options Optional parameter that can contain the IDs for the documents.
|
|
74
|
-
* @returns A promise that resolves with the IDs of the added documents.
|
|
75
|
-
*/
|
|
76
|
-
async addDocuments(documents, options) {
|
|
77
|
-
const texts = documents.map(({ pageContent }) => pageContent);
|
|
78
|
-
return this.addVectors(await this.embeddings.embedDocuments(texts), documents, options);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Method to add vectors to the Elasticsearch database. It ensures the
|
|
82
|
-
* index exists, then adds the vectors and their corresponding documents
|
|
83
|
-
* to the database.
|
|
84
|
-
* @param vectors The vectors to add to the database.
|
|
85
|
-
* @param documents The documents corresponding to the vectors.
|
|
86
|
-
* @param options Optional parameter that can contain the IDs for the documents.
|
|
87
|
-
* @returns A promise that resolves with the IDs of the added documents.
|
|
88
|
-
*/
|
|
89
|
-
async addVectors(vectors, documents, options) {
|
|
90
|
-
await this.ensureIndexExists(vectors[0].length, this.engine, this.similarity, this.efConstruction, this.m);
|
|
91
|
-
const documentIds = options?.ids ?? Array.from({ length: vectors.length }, () => uuid.v4());
|
|
92
|
-
const operations = vectors.flatMap((embedding, idx) => [
|
|
93
|
-
{
|
|
94
|
-
index: {
|
|
95
|
-
_id: documentIds[idx],
|
|
96
|
-
_index: this.indexName,
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
embedding,
|
|
101
|
-
metadata: documents[idx].metadata,
|
|
102
|
-
text: documents[idx].pageContent,
|
|
103
|
-
},
|
|
104
|
-
]);
|
|
105
|
-
await this.client.bulk({ refresh: true, operations });
|
|
106
|
-
return documentIds;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Method to perform a similarity search in the Elasticsearch database
|
|
110
|
-
* using a vector. It returns the k most similar documents along with
|
|
111
|
-
* their similarity scores.
|
|
112
|
-
* @param query The query vector.
|
|
113
|
-
* @param k The number of most similar documents to return.
|
|
114
|
-
* @param filter Optional filter to apply to the search.
|
|
115
|
-
* @returns A promise that resolves with an array of tuples, where each tuple contains a Document and its similarity score.
|
|
116
|
-
*/
|
|
117
|
-
async similaritySearchVectorWithScore(query, k, filter) {
|
|
118
|
-
const result = await this.client.search({
|
|
119
|
-
index: this.indexName,
|
|
120
|
-
size: k,
|
|
121
|
-
knn: {
|
|
122
|
-
field: "embedding",
|
|
123
|
-
query_vector: query,
|
|
124
|
-
filter: this.buildMetadataTerms(filter),
|
|
125
|
-
k,
|
|
126
|
-
num_candidates: this.candidates,
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
-
return result.hits.hits.map((hit) => [
|
|
131
|
-
new Document({
|
|
132
|
-
pageContent: hit._source.text,
|
|
133
|
-
metadata: hit._source.metadata,
|
|
134
|
-
}),
|
|
135
|
-
hit._score,
|
|
136
|
-
]);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Method to delete documents from the Elasticsearch database.
|
|
140
|
-
* @param params Object containing the IDs of the documents to delete.
|
|
141
|
-
* @returns A promise that resolves when the deletion is complete.
|
|
142
|
-
*/
|
|
143
|
-
async delete(params) {
|
|
144
|
-
const operations = params.ids.map((id) => ({
|
|
145
|
-
delete: {
|
|
146
|
-
_id: id,
|
|
147
|
-
_index: this.indexName,
|
|
148
|
-
},
|
|
149
|
-
}));
|
|
150
|
-
await this.client.bulk({ refresh: true, operations });
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Static method to create an ElasticVectorSearch instance from texts. It
|
|
154
|
-
* creates Document instances from the texts and their corresponding
|
|
155
|
-
* metadata, then calls the fromDocuments method to create the
|
|
156
|
-
* ElasticVectorSearch instance.
|
|
157
|
-
* @param texts The texts to create the ElasticVectorSearch instance from.
|
|
158
|
-
* @param metadatas The metadata corresponding to the texts.
|
|
159
|
-
* @param embeddings The embeddings to use for the documents.
|
|
160
|
-
* @param args The arguments to create the Elasticsearch client.
|
|
161
|
-
* @returns A promise that resolves with the created ElasticVectorSearch instance.
|
|
162
|
-
*/
|
|
163
|
-
static fromTexts(texts, metadatas, embeddings, args) {
|
|
164
|
-
const documents = texts.map((text, idx) => {
|
|
165
|
-
const metadata = Array.isArray(metadatas) ? metadatas[idx] : metadatas;
|
|
166
|
-
return new Document({ pageContent: text, metadata });
|
|
167
|
-
});
|
|
168
|
-
return ElasticVectorSearch.fromDocuments(documents, embeddings, args);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Static method to create an ElasticVectorSearch instance from Document
|
|
172
|
-
* instances. It adds the documents to the Elasticsearch database, then
|
|
173
|
-
* returns the ElasticVectorSearch instance.
|
|
174
|
-
* @param docs The Document instances to create the ElasticVectorSearch instance from.
|
|
175
|
-
* @param embeddings The embeddings to use for the documents.
|
|
176
|
-
* @param dbConfig The configuration for the Elasticsearch database.
|
|
177
|
-
* @returns A promise that resolves with the created ElasticVectorSearch instance.
|
|
178
|
-
*/
|
|
179
|
-
static async fromDocuments(docs, embeddings, dbConfig) {
|
|
180
|
-
const store = new ElasticVectorSearch(embeddings, dbConfig);
|
|
181
|
-
await store.addDocuments(docs).then(() => store);
|
|
182
|
-
return store;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Static method to create an ElasticVectorSearch instance from an
|
|
186
|
-
* existing index in the Elasticsearch database. It checks if the index
|
|
187
|
-
* exists, then returns the ElasticVectorSearch instance if it does.
|
|
188
|
-
* @param embeddings The embeddings to use for the documents.
|
|
189
|
-
* @param dbConfig The configuration for the Elasticsearch database.
|
|
190
|
-
* @returns A promise that resolves with the created ElasticVectorSearch instance if the index exists, otherwise it throws an error.
|
|
191
|
-
*/
|
|
192
|
-
static async fromExistingIndex(embeddings, dbConfig) {
|
|
193
|
-
const store = new ElasticVectorSearch(embeddings, dbConfig);
|
|
194
|
-
const exists = await store.doesIndexExist();
|
|
195
|
-
if (exists) {
|
|
196
|
-
return store;
|
|
197
|
-
}
|
|
198
|
-
throw new Error(`The index ${store.indexName} does not exist.`);
|
|
199
|
-
}
|
|
200
|
-
async ensureIndexExists(dimension, engine = "hnsw", similarity = "l2_norm", efConstruction = 100, m = 16) {
|
|
201
|
-
const request = {
|
|
202
|
-
index: this.indexName,
|
|
203
|
-
mappings: {
|
|
204
|
-
dynamic_templates: [
|
|
205
|
-
{
|
|
206
|
-
// map all metadata properties to be keyword
|
|
207
|
-
"metadata.*": {
|
|
208
|
-
match_mapping_type: "*",
|
|
209
|
-
mapping: { type: "keyword" },
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
],
|
|
213
|
-
properties: {
|
|
214
|
-
text: { type: "text" },
|
|
215
|
-
metadata: { type: "object" },
|
|
216
|
-
embedding: {
|
|
217
|
-
type: "dense_vector",
|
|
218
|
-
dims: dimension,
|
|
219
|
-
index: true,
|
|
220
|
-
similarity,
|
|
221
|
-
index_options: {
|
|
222
|
-
type: engine,
|
|
223
|
-
m,
|
|
224
|
-
ef_construction: efConstruction,
|
|
225
|
-
},
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
};
|
|
230
|
-
const indexExists = await this.doesIndexExist();
|
|
231
|
-
if (indexExists)
|
|
232
|
-
return;
|
|
233
|
-
await this.client.indices.create(request);
|
|
234
|
-
}
|
|
235
|
-
buildMetadataTerms(filter
|
|
236
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
237
|
-
) {
|
|
238
|
-
if (filter == null)
|
|
239
|
-
return [];
|
|
240
|
-
const result = [];
|
|
241
|
-
const filters = Array.isArray(filter)
|
|
242
|
-
? filter
|
|
243
|
-
: Object.entries(filter).map(([key, value]) => ({
|
|
244
|
-
operator: "term",
|
|
245
|
-
field: key,
|
|
246
|
-
value,
|
|
247
|
-
}));
|
|
248
|
-
for (const condition of filters) {
|
|
249
|
-
result.push({
|
|
250
|
-
[condition.operator]: {
|
|
251
|
-
[`metadata.${condition.field}`]: condition.value,
|
|
252
|
-
},
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
return result;
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Method to check if an index exists in the Elasticsearch database.
|
|
259
|
-
* @returns A promise that resolves with a boolean indicating whether the index exists.
|
|
260
|
-
*/
|
|
261
|
-
async doesIndexExist() {
|
|
262
|
-
return await this.client.indices.exists({ index: this.indexName });
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Method to delete an index from the Elasticsearch database if it exists.
|
|
266
|
-
* @returns A promise that resolves when the deletion is complete.
|
|
267
|
-
*/
|
|
268
|
-
async deleteIfExists() {
|
|
269
|
-
const indexExists = await this.doesIndexExist();
|
|
270
|
-
if (!indexExists)
|
|
271
|
-
return;
|
|
272
|
-
await this.client.indices.delete({ index: this.indexName });
|
|
273
|
-
}
|
|
274
|
-
}
|
|
1
|
+
export * from "@langchain/community/vectorstores/elasticsearch";
|
|
@@ -10,383 +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;
|
|
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);
|
|
24
15
|
};
|
|
25
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports
|
|
27
|
-
const uuid = __importStar(require("uuid"));
|
|
28
|
-
const base_js_1 = require("./base.cjs");
|
|
29
|
-
const document_js_1 = require("../document.cjs");
|
|
30
|
-
const in_memory_js_1 = require("../stores/doc/in_memory.cjs");
|
|
31
|
-
/**
|
|
32
|
-
* A class that wraps the FAISS (Facebook AI Similarity Search) vector
|
|
33
|
-
* database for efficient similarity search and clustering of dense
|
|
34
|
-
* vectors.
|
|
35
|
-
*/
|
|
36
|
-
class FaissStore extends base_js_1.SaveableVectorStore {
|
|
37
|
-
_vectorstoreType() {
|
|
38
|
-
return "faiss";
|
|
39
|
-
}
|
|
40
|
-
getMapping() {
|
|
41
|
-
return this._mapping;
|
|
42
|
-
}
|
|
43
|
-
getDocstore() {
|
|
44
|
-
return this.docstore;
|
|
45
|
-
}
|
|
46
|
-
constructor(embeddings, args) {
|
|
47
|
-
super(embeddings, args);
|
|
48
|
-
Object.defineProperty(this, "_index", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
configurable: true,
|
|
51
|
-
writable: true,
|
|
52
|
-
value: void 0
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(this, "_mapping", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
configurable: true,
|
|
57
|
-
writable: true,
|
|
58
|
-
value: void 0
|
|
59
|
-
});
|
|
60
|
-
Object.defineProperty(this, "docstore", {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
configurable: true,
|
|
63
|
-
writable: true,
|
|
64
|
-
value: void 0
|
|
65
|
-
});
|
|
66
|
-
Object.defineProperty(this, "args", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
configurable: true,
|
|
69
|
-
writable: true,
|
|
70
|
-
value: void 0
|
|
71
|
-
});
|
|
72
|
-
this.args = args;
|
|
73
|
-
this._index = args.index;
|
|
74
|
-
this._mapping = args.mapping ?? {};
|
|
75
|
-
this.embeddings = embeddings;
|
|
76
|
-
this.docstore = args?.docstore ?? new in_memory_js_1.SynchronousInMemoryDocstore();
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Adds an array of Document objects to the store.
|
|
80
|
-
* @param documents An array of Document objects.
|
|
81
|
-
* @returns A Promise that resolves when the documents have been added.
|
|
82
|
-
*/
|
|
83
|
-
async addDocuments(documents, options) {
|
|
84
|
-
const texts = documents.map(({ pageContent }) => pageContent);
|
|
85
|
-
return this.addVectors(await this.embeddings.embedDocuments(texts), documents, options);
|
|
86
|
-
}
|
|
87
|
-
get index() {
|
|
88
|
-
if (!this._index) {
|
|
89
|
-
throw new Error("Vector store not initialised yet. Try calling `fromTexts`, `fromDocuments` or `fromIndex` first.");
|
|
90
|
-
}
|
|
91
|
-
return this._index;
|
|
92
|
-
}
|
|
93
|
-
set index(index) {
|
|
94
|
-
this._index = index;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Adds an array of vectors and their corresponding Document objects to
|
|
98
|
-
* the store.
|
|
99
|
-
* @param vectors An array of vectors.
|
|
100
|
-
* @param documents An array of Document objects corresponding to the vectors.
|
|
101
|
-
* @returns A Promise that resolves with an array of document IDs when the vectors and documents have been added.
|
|
102
|
-
*/
|
|
103
|
-
async addVectors(vectors, documents, options) {
|
|
104
|
-
if (vectors.length === 0) {
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
if (vectors.length !== documents.length) {
|
|
108
|
-
throw new Error(`Vectors and documents must have the same length`);
|
|
109
|
-
}
|
|
110
|
-
const dv = vectors[0].length;
|
|
111
|
-
if (!this._index) {
|
|
112
|
-
const { IndexFlatL2 } = await FaissStore.importFaiss();
|
|
113
|
-
this._index = new IndexFlatL2(dv);
|
|
114
|
-
}
|
|
115
|
-
const d = this.index.getDimension();
|
|
116
|
-
if (dv !== d) {
|
|
117
|
-
throw new Error(`Vectors must have the same length as the number of dimensions (${d})`);
|
|
118
|
-
}
|
|
119
|
-
const docstoreSize = this.index.ntotal();
|
|
120
|
-
const documentIds = options?.ids ?? documents.map(() => uuid.v4());
|
|
121
|
-
for (let i = 0; i < vectors.length; i += 1) {
|
|
122
|
-
const documentId = documentIds[i];
|
|
123
|
-
const id = docstoreSize + i;
|
|
124
|
-
this.index.add(vectors[i]);
|
|
125
|
-
this._mapping[id] = documentId;
|
|
126
|
-
this.docstore.add({ [documentId]: documents[i] });
|
|
127
|
-
}
|
|
128
|
-
return documentIds;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Performs a similarity search in the vector store using a query vector
|
|
132
|
-
* and returns the top k results along with their scores.
|
|
133
|
-
* @param query A query vector.
|
|
134
|
-
* @param k The number of top results to return.
|
|
135
|
-
* @returns A Promise that resolves with an array of tuples, each containing a Document and its corresponding score.
|
|
136
|
-
*/
|
|
137
|
-
async similaritySearchVectorWithScore(query, k) {
|
|
138
|
-
const d = this.index.getDimension();
|
|
139
|
-
if (query.length !== d) {
|
|
140
|
-
throw new Error(`Query vector must have the same length as the number of dimensions (${d})`);
|
|
141
|
-
}
|
|
142
|
-
if (k > this.index.ntotal()) {
|
|
143
|
-
const total = this.index.ntotal();
|
|
144
|
-
console.warn(`k (${k}) is greater than the number of elements in the index (${total}), setting k to ${total}`);
|
|
145
|
-
// eslint-disable-next-line no-param-reassign
|
|
146
|
-
k = total;
|
|
147
|
-
}
|
|
148
|
-
const result = this.index.search(query, k);
|
|
149
|
-
return result.labels.map((id, index) => {
|
|
150
|
-
const uuid = this._mapping[id];
|
|
151
|
-
return [this.docstore.search(uuid), result.distances[index]];
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Saves the current state of the FaissStore to a specified directory.
|
|
156
|
-
* @param directory The directory to save the state to.
|
|
157
|
-
* @returns A Promise that resolves when the state has been saved.
|
|
158
|
-
*/
|
|
159
|
-
async save(directory) {
|
|
160
|
-
const fs = await import("node:fs/promises");
|
|
161
|
-
const path = await import("node:path");
|
|
162
|
-
await fs.mkdir(directory, { recursive: true });
|
|
163
|
-
await Promise.all([
|
|
164
|
-
this.index.write(path.join(directory, "faiss.index")),
|
|
165
|
-
await fs.writeFile(path.join(directory, "docstore.json"), JSON.stringify([
|
|
166
|
-
Array.from(this.docstore._docs.entries()),
|
|
167
|
-
this._mapping,
|
|
168
|
-
])),
|
|
169
|
-
]);
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Method to delete documents.
|
|
173
|
-
* @param params Object containing the IDs of the documents to delete.
|
|
174
|
-
* @returns A promise that resolves when the deletion is complete.
|
|
175
|
-
*/
|
|
176
|
-
async delete(params) {
|
|
177
|
-
const documentIds = params.ids;
|
|
178
|
-
if (documentIds == null) {
|
|
179
|
-
throw new Error("No documentIds provided to delete.");
|
|
180
|
-
}
|
|
181
|
-
const mappings = new Map(Object.entries(this._mapping).map(([key, value]) => [
|
|
182
|
-
parseInt(key, 10),
|
|
183
|
-
value,
|
|
184
|
-
]));
|
|
185
|
-
const reversedMappings = new Map(Array.from(mappings, (entry) => [entry[1], entry[0]]));
|
|
186
|
-
const missingIds = new Set(documentIds.filter((id) => !reversedMappings.has(id)));
|
|
187
|
-
if (missingIds.size > 0) {
|
|
188
|
-
throw new Error(`Some specified documentIds do not exist in the current store. DocumentIds not found: ${Array.from(missingIds).join(", ")}`);
|
|
189
|
-
}
|
|
190
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
191
|
-
const indexIdToDelete = documentIds.map((id) => reversedMappings.get(id));
|
|
192
|
-
// remove from index
|
|
193
|
-
this.index.removeIds(indexIdToDelete);
|
|
194
|
-
// remove from docstore
|
|
195
|
-
documentIds.forEach((id) => {
|
|
196
|
-
this.docstore._docs.delete(id);
|
|
197
|
-
});
|
|
198
|
-
// remove from mappings
|
|
199
|
-
indexIdToDelete.forEach((id) => {
|
|
200
|
-
mappings.delete(id);
|
|
201
|
-
});
|
|
202
|
-
this._mapping = { ...Array.from(mappings.values()) };
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Merges the current FaissStore with another FaissStore.
|
|
206
|
-
* @param targetIndex The FaissStore to merge with.
|
|
207
|
-
* @returns A Promise that resolves with an array of document IDs when the merge is complete.
|
|
208
|
-
*/
|
|
209
|
-
async mergeFrom(targetIndex) {
|
|
210
|
-
const targetIndexDimensions = targetIndex.index.getDimension();
|
|
211
|
-
if (!this._index) {
|
|
212
|
-
const { IndexFlatL2 } = await FaissStore.importFaiss();
|
|
213
|
-
this._index = new IndexFlatL2(targetIndexDimensions);
|
|
214
|
-
}
|
|
215
|
-
const d = this.index.getDimension();
|
|
216
|
-
if (targetIndexDimensions !== d) {
|
|
217
|
-
throw new Error("Cannot merge indexes with different dimensions.");
|
|
218
|
-
}
|
|
219
|
-
const targetMapping = targetIndex.getMapping();
|
|
220
|
-
const targetDocstore = targetIndex.getDocstore();
|
|
221
|
-
const targetSize = targetIndex.index.ntotal();
|
|
222
|
-
const documentIds = [];
|
|
223
|
-
const currentDocstoreSize = this.index.ntotal();
|
|
224
|
-
for (let i = 0; i < targetSize; i += 1) {
|
|
225
|
-
const targetId = targetMapping[i];
|
|
226
|
-
documentIds.push(targetId);
|
|
227
|
-
const targetDocument = targetDocstore.search(targetId);
|
|
228
|
-
const id = currentDocstoreSize + i;
|
|
229
|
-
this._mapping[id] = targetId;
|
|
230
|
-
this.docstore.add({ [targetId]: targetDocument });
|
|
231
|
-
}
|
|
232
|
-
this.index.mergeFrom(targetIndex.index);
|
|
233
|
-
return documentIds;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Loads a FaissStore from a specified directory.
|
|
237
|
-
* @param directory The directory to load the FaissStore from.
|
|
238
|
-
* @param embeddings An Embeddings object.
|
|
239
|
-
* @returns A Promise that resolves with a new FaissStore instance.
|
|
240
|
-
*/
|
|
241
|
-
static async load(directory, embeddings) {
|
|
242
|
-
const fs = await import("node:fs/promises");
|
|
243
|
-
const path = await import("node:path");
|
|
244
|
-
const readStore = (directory) => fs
|
|
245
|
-
.readFile(path.join(directory, "docstore.json"), "utf8")
|
|
246
|
-
.then(JSON.parse);
|
|
247
|
-
const readIndex = async (directory) => {
|
|
248
|
-
const { IndexFlatL2 } = await this.importFaiss();
|
|
249
|
-
return IndexFlatL2.read(path.join(directory, "faiss.index"));
|
|
250
|
-
};
|
|
251
|
-
const [[docstoreFiles, mapping], index] = await Promise.all([
|
|
252
|
-
readStore(directory),
|
|
253
|
-
readIndex(directory),
|
|
254
|
-
]);
|
|
255
|
-
const docstore = new in_memory_js_1.SynchronousInMemoryDocstore(new Map(docstoreFiles));
|
|
256
|
-
return new this(embeddings, { docstore, index, mapping });
|
|
257
|
-
}
|
|
258
|
-
static async loadFromPython(directory, embeddings) {
|
|
259
|
-
const fs = await import("node:fs/promises");
|
|
260
|
-
const path = await import("node:path");
|
|
261
|
-
const { Parser, NameRegistry } = await this.importPickleparser();
|
|
262
|
-
class PyDocument extends Map {
|
|
263
|
-
toDocument() {
|
|
264
|
-
return new document_js_1.Document({
|
|
265
|
-
pageContent: this.get("page_content"),
|
|
266
|
-
metadata: this.get("metadata"),
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
class PyInMemoryDocstore {
|
|
271
|
-
constructor() {
|
|
272
|
-
Object.defineProperty(this, "_dict", {
|
|
273
|
-
enumerable: true,
|
|
274
|
-
configurable: true,
|
|
275
|
-
writable: true,
|
|
276
|
-
value: void 0
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
toInMemoryDocstore() {
|
|
280
|
-
const s = new in_memory_js_1.SynchronousInMemoryDocstore();
|
|
281
|
-
for (const [key, value] of Object.entries(this._dict)) {
|
|
282
|
-
s._docs.set(key, value.toDocument());
|
|
283
|
-
}
|
|
284
|
-
return s;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
const readStore = async (directory) => {
|
|
288
|
-
const pkl = await fs.readFile(path.join(directory, "index.pkl"), "binary");
|
|
289
|
-
const buffer = Buffer.from(pkl, "binary");
|
|
290
|
-
const registry = new NameRegistry()
|
|
291
|
-
.register("langchain.docstore.in_memory", "InMemoryDocstore", PyInMemoryDocstore)
|
|
292
|
-
.register("langchain.schema", "Document", PyDocument)
|
|
293
|
-
.register("langchain.docstore.document", "Document", PyDocument)
|
|
294
|
-
.register("langchain.schema.document", "Document", PyDocument)
|
|
295
|
-
.register("pathlib", "WindowsPath", (...args) => args.join("\\"))
|
|
296
|
-
.register("pathlib", "PosixPath", (...args) => args.join("/"));
|
|
297
|
-
const pickleparser = new Parser({
|
|
298
|
-
nameResolver: registry,
|
|
299
|
-
});
|
|
300
|
-
const [rawStore, mapping] = pickleparser.parse(buffer);
|
|
301
|
-
const store = rawStore.toInMemoryDocstore();
|
|
302
|
-
return { store, mapping };
|
|
303
|
-
};
|
|
304
|
-
const readIndex = async (directory) => {
|
|
305
|
-
const { IndexFlatL2 } = await this.importFaiss();
|
|
306
|
-
return IndexFlatL2.read(path.join(directory, "index.faiss"));
|
|
307
|
-
};
|
|
308
|
-
const [store, index] = await Promise.all([
|
|
309
|
-
readStore(directory),
|
|
310
|
-
readIndex(directory),
|
|
311
|
-
]);
|
|
312
|
-
return new this(embeddings, {
|
|
313
|
-
docstore: store.store,
|
|
314
|
-
index,
|
|
315
|
-
mapping: store.mapping,
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Creates a new FaissStore from an array of texts, their corresponding
|
|
320
|
-
* metadata, and an Embeddings object.
|
|
321
|
-
* @param texts An array of texts.
|
|
322
|
-
* @param metadatas An array of metadata corresponding to the texts, or a single metadata object to be used for all texts.
|
|
323
|
-
* @param embeddings An Embeddings object.
|
|
324
|
-
* @param dbConfig An optional configuration object for the document store.
|
|
325
|
-
* @returns A Promise that resolves with a new FaissStore instance.
|
|
326
|
-
*/
|
|
327
|
-
static async fromTexts(texts, metadatas, embeddings, dbConfig) {
|
|
328
|
-
const docs = [];
|
|
329
|
-
for (let i = 0; i < texts.length; i += 1) {
|
|
330
|
-
const metadata = Array.isArray(metadatas) ? metadatas[i] : metadatas;
|
|
331
|
-
const newDoc = new document_js_1.Document({
|
|
332
|
-
pageContent: texts[i],
|
|
333
|
-
metadata,
|
|
334
|
-
});
|
|
335
|
-
docs.push(newDoc);
|
|
336
|
-
}
|
|
337
|
-
return this.fromDocuments(docs, embeddings, dbConfig);
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Creates a new FaissStore from an array of Document objects and an
|
|
341
|
-
* Embeddings object.
|
|
342
|
-
* @param docs An array of Document objects.
|
|
343
|
-
* @param embeddings An Embeddings object.
|
|
344
|
-
* @param dbConfig An optional configuration object for the document store.
|
|
345
|
-
* @returns A Promise that resolves with a new FaissStore instance.
|
|
346
|
-
*/
|
|
347
|
-
static async fromDocuments(docs, embeddings, dbConfig) {
|
|
348
|
-
const args = {
|
|
349
|
-
docstore: dbConfig?.docstore,
|
|
350
|
-
};
|
|
351
|
-
const instance = new this(embeddings, args);
|
|
352
|
-
await instance.addDocuments(docs);
|
|
353
|
-
return instance;
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Creates a new FaissStore from an existing FaissStore and an Embeddings
|
|
357
|
-
* object.
|
|
358
|
-
* @param targetIndex An existing FaissStore.
|
|
359
|
-
* @param embeddings An Embeddings object.
|
|
360
|
-
* @param dbConfig An optional configuration object for the document store.
|
|
361
|
-
* @returns A Promise that resolves with a new FaissStore instance.
|
|
362
|
-
*/
|
|
363
|
-
static async fromIndex(targetIndex, embeddings, dbConfig) {
|
|
364
|
-
const args = {
|
|
365
|
-
docstore: dbConfig?.docstore,
|
|
366
|
-
};
|
|
367
|
-
const instance = new this(embeddings, args);
|
|
368
|
-
await instance.mergeFrom(targetIndex);
|
|
369
|
-
return instance;
|
|
370
|
-
}
|
|
371
|
-
static async importFaiss() {
|
|
372
|
-
try {
|
|
373
|
-
const { default: { IndexFlatL2 }, } = await import("faiss-node");
|
|
374
|
-
return { IndexFlatL2 };
|
|
375
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
376
|
-
}
|
|
377
|
-
catch (err) {
|
|
378
|
-
throw new Error(`Could not import faiss-node. Please install faiss-node as a dependency with, e.g. \`npm install -S faiss-node\`.\n\nError: ${err?.message}`);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
static async importPickleparser() {
|
|
382
|
-
try {
|
|
383
|
-
const { default: { Parser, NameRegistry }, } = await import("pickleparser");
|
|
384
|
-
return { Parser, NameRegistry };
|
|
385
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
386
|
-
}
|
|
387
|
-
catch (err) {
|
|
388
|
-
throw new Error(`Could not import pickleparser. Please install pickleparser as a dependency with, e.g. \`npm install -S pickleparser\`.\n\nError: ${err?.message}`);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
exports.FaissStore = FaissStore;
|
|
17
|
+
__exportStar(require("@langchain/community/vectorstores/faiss"), exports);
|