mirror of
https://github.com/hwchase17/langchain.git
synced 2025-05-30 03:28:40 +00:00
make vectorstores optional (#11393)
This commit is contained in:
parent
8aa545901a
commit
31d5bd84d7
@ -18,68 +18,497 @@ and retrieve the data that are 'most similar' to the embedded query.
|
||||
|
||||
Embeddings, Document
|
||||
""" # noqa: E501
|
||||
from typing import Any
|
||||
|
||||
from langchain.schema.vectorstore import VectorStore
|
||||
from langchain.vectorstores.alibabacloud_opensearch import (
|
||||
AlibabaCloudOpenSearch,
|
||||
AlibabaCloudOpenSearchSettings,
|
||||
)
|
||||
from langchain.vectorstores.analyticdb import AnalyticDB
|
||||
from langchain.vectorstores.annoy import Annoy
|
||||
from langchain.vectorstores.atlas import AtlasDB
|
||||
from langchain.vectorstores.awadb import AwaDB
|
||||
from langchain.vectorstores.azuresearch import AzureSearch
|
||||
from langchain.vectorstores.bageldb import Bagel
|
||||
from langchain.vectorstores.cassandra import Cassandra
|
||||
from langchain.vectorstores.chroma import Chroma
|
||||
from langchain.vectorstores.clarifai import Clarifai
|
||||
from langchain.vectorstores.clickhouse import Clickhouse, ClickhouseSettings
|
||||
from langchain.vectorstores.dashvector import DashVector
|
||||
from langchain.vectorstores.deeplake import DeepLake
|
||||
from langchain.vectorstores.dingo import Dingo
|
||||
from langchain.vectorstores.docarray import DocArrayHnswSearch, DocArrayInMemorySearch
|
||||
from langchain.vectorstores.elastic_vector_search import (
|
||||
ElasticKnnSearch,
|
||||
ElasticVectorSearch,
|
||||
)
|
||||
from langchain.vectorstores.elasticsearch import ElasticsearchStore
|
||||
from langchain.vectorstores.epsilla import Epsilla
|
||||
from langchain.vectorstores.faiss import FAISS
|
||||
from langchain.vectorstores.hologres import Hologres
|
||||
from langchain.vectorstores.lancedb import LanceDB
|
||||
from langchain.vectorstores.llm_rails import LLMRails
|
||||
from langchain.vectorstores.marqo import Marqo
|
||||
from langchain.vectorstores.matching_engine import MatchingEngine
|
||||
from langchain.vectorstores.meilisearch import Meilisearch
|
||||
from langchain.vectorstores.milvus import Milvus
|
||||
from langchain.vectorstores.mongodb_atlas import MongoDBAtlasVectorSearch
|
||||
from langchain.vectorstores.myscale import MyScale, MyScaleSettings
|
||||
from langchain.vectorstores.neo4j_vector import Neo4jVector
|
||||
from langchain.vectorstores.opensearch_vector_search import OpenSearchVectorSearch
|
||||
from langchain.vectorstores.pgembedding import PGEmbedding
|
||||
from langchain.vectorstores.pgvector import PGVector
|
||||
from langchain.vectorstores.pinecone import Pinecone
|
||||
from langchain.vectorstores.qdrant import Qdrant
|
||||
from langchain.vectorstores.redis import Redis
|
||||
from langchain.vectorstores.rocksetdb import Rockset
|
||||
from langchain.vectorstores.scann import ScaNN
|
||||
from langchain.vectorstores.singlestoredb import SingleStoreDB
|
||||
from langchain.vectorstores.sklearn import SKLearnVectorStore
|
||||
from langchain.vectorstores.sqlitevss import SQLiteVSS
|
||||
from langchain.vectorstores.starrocks import StarRocks
|
||||
from langchain.vectorstores.supabase import SupabaseVectorStore
|
||||
from langchain.vectorstores.tair import Tair
|
||||
from langchain.vectorstores.tencentvectordb import TencentVectorDB
|
||||
from langchain.vectorstores.tigris import Tigris
|
||||
from langchain.vectorstores.timescalevector import TimescaleVector
|
||||
from langchain.vectorstores.typesense import Typesense
|
||||
from langchain.vectorstores.usearch import USearch
|
||||
from langchain.vectorstores.vald import Vald
|
||||
from langchain.vectorstores.vearch import Vearch
|
||||
from langchain.vectorstores.vectara import Vectara
|
||||
from langchain.vectorstores.vespa import VespaStore
|
||||
from langchain.vectorstores.weaviate import Weaviate
|
||||
from langchain.vectorstores.zep import ZepVectorStore
|
||||
from langchain.vectorstores.zilliz import Zilliz
|
||||
|
||||
|
||||
def _import_alibaba_cloud_open_search() -> Any:
|
||||
from langchain.vectorstores.alibabacloud_opensearch import AlibabaCloudOpenSearch
|
||||
|
||||
return AlibabaCloudOpenSearch
|
||||
|
||||
|
||||
def _import_alibaba_cloud_open_search_settings() -> Any:
|
||||
from langchain.vectorstores.alibabacloud_opensearch import (
|
||||
AlibabaCloudOpenSearchSettings,
|
||||
)
|
||||
|
||||
return AlibabaCloudOpenSearchSettings
|
||||
|
||||
|
||||
def _import_elastic_knn_search() -> Any:
|
||||
from langchain.vectorstores.elastic_vector_search import ElasticKnnSearch
|
||||
|
||||
return ElasticKnnSearch
|
||||
|
||||
|
||||
def _import_elastic_vector_search() -> Any:
|
||||
from langchain.vectorstores.elastic_vector_search import ElasticVectorSearch
|
||||
|
||||
return ElasticVectorSearch
|
||||
|
||||
|
||||
def _import_analyticdb() -> Any:
|
||||
from langchain.vectorstores.analyticdb import AnalyticDB
|
||||
|
||||
return AnalyticDB
|
||||
|
||||
|
||||
def _import_annoy() -> Any:
|
||||
from langchain.vectorstores.annoy import Annoy
|
||||
|
||||
return Annoy
|
||||
|
||||
|
||||
def _import_atlas() -> Any:
|
||||
from langchain.vectorstores.atlas import AtlasDB
|
||||
|
||||
return AtlasDB
|
||||
|
||||
|
||||
def _import_awadb() -> Any:
|
||||
from langchain.vectorstores.awadb import AwaDB
|
||||
|
||||
return AwaDB
|
||||
|
||||
|
||||
def _import_azuresearch() -> Any:
|
||||
from langchain.vectorstores.azuresearch import AzureSearch
|
||||
|
||||
return AzureSearch
|
||||
|
||||
|
||||
def _import_bageldb() -> Any:
|
||||
from langchain.vectorstores.bageldb import Bagel
|
||||
|
||||
return Bagel
|
||||
|
||||
|
||||
def _import_cassandra() -> Any:
|
||||
from langchain.vectorstores.cassandra import Cassandra
|
||||
|
||||
return Cassandra
|
||||
|
||||
|
||||
def _import_chroma() -> Any:
|
||||
from langchain.vectorstores.chroma import Chroma
|
||||
|
||||
return Chroma
|
||||
|
||||
|
||||
def _import_clarifai() -> Any:
|
||||
from langchain.vectorstores.clarifai import Clarifai
|
||||
|
||||
return Clarifai
|
||||
|
||||
|
||||
def _import_clickhouse() -> Any:
|
||||
from langchain.vectorstores.clickhouse import Clickhouse
|
||||
|
||||
return Clickhouse
|
||||
|
||||
|
||||
def _import_clickhouse_settings() -> Any:
|
||||
from langchain.vectorstores.clickhouse import ClickhouseSettings
|
||||
|
||||
return ClickhouseSettings
|
||||
|
||||
|
||||
def _import_dashvector() -> Any:
|
||||
from langchain.vectorstores.dashvector import DashVector
|
||||
|
||||
return DashVector
|
||||
|
||||
|
||||
def _import_deeplake() -> Any:
|
||||
from langchain.vectorstores.deeplake import DeepLake
|
||||
|
||||
return DeepLake
|
||||
|
||||
|
||||
def _import_dingo() -> Any:
|
||||
from langchain.vectorstores.dingo import Dingo
|
||||
|
||||
return Dingo
|
||||
|
||||
|
||||
def _import_docarray_hnsw() -> Any:
|
||||
from langchain.vectorstores.docarray import DocArrayHnswSearch
|
||||
|
||||
return DocArrayHnswSearch
|
||||
|
||||
|
||||
def _import_docarray_inmemory() -> Any:
|
||||
from langchain.vectorstores.docarray import DocArrayInMemorySearch
|
||||
|
||||
return DocArrayInMemorySearch
|
||||
|
||||
|
||||
def _import_elasticsearch() -> Any:
|
||||
from langchain.vectorstores.elasticsearch import ElasticsearchStore
|
||||
|
||||
return ElasticsearchStore
|
||||
|
||||
|
||||
def _import_epsilla() -> Any:
|
||||
from langchain.vectorstores.epsilla import Epsilla
|
||||
|
||||
return Epsilla
|
||||
|
||||
|
||||
def _import_faiss() -> Any:
|
||||
from langchain.vectorstores.faiss import FAISS
|
||||
|
||||
return FAISS
|
||||
|
||||
|
||||
def _import_hologres() -> Any:
|
||||
from langchain.vectorstores.hologres import Hologres
|
||||
|
||||
return Hologres
|
||||
|
||||
|
||||
def _import_lancedb() -> Any:
|
||||
from langchain.vectorstores.lancedb import LanceDB
|
||||
|
||||
return LanceDB
|
||||
|
||||
|
||||
def _import_llm_rails() -> Any:
|
||||
from langchain.vectorstores.llm_rails import LLMRails
|
||||
|
||||
return LLMRails
|
||||
|
||||
|
||||
def _import_marqo() -> Any:
|
||||
from langchain.vectorstores.marqo import Marqo
|
||||
|
||||
return Marqo
|
||||
|
||||
|
||||
def _import_matching_engine() -> Any:
|
||||
from langchain.vectorstores.matching_engine import MatchingEngine
|
||||
|
||||
return MatchingEngine
|
||||
|
||||
|
||||
def _import_meilisearch() -> Any:
|
||||
from langchain.vectorstores.meilisearch import Meilisearch
|
||||
|
||||
return Meilisearch
|
||||
|
||||
|
||||
def _import_milvus() -> Any:
|
||||
from langchain.vectorstores.milvus import Milvus
|
||||
|
||||
return Milvus
|
||||
|
||||
|
||||
def _import_mongodb_atlas() -> Any:
|
||||
from langchain.vectorstores.mongodb_atlas import MongoDBAtlasVectorSearch
|
||||
|
||||
return MongoDBAtlasVectorSearch
|
||||
|
||||
|
||||
def _import_myscale() -> Any:
|
||||
from langchain.vectorstores.myscale import MyScale
|
||||
|
||||
return MyScale
|
||||
|
||||
|
||||
def _import_myscale_settings() -> Any:
|
||||
from langchain.vectorstores.myscale import MyScaleSettings
|
||||
|
||||
return MyScaleSettings
|
||||
|
||||
|
||||
def _import_neo4j_vector() -> Any:
|
||||
from langchain.vectorstores.neo4j_vector import Neo4jVector
|
||||
|
||||
return Neo4jVector
|
||||
|
||||
|
||||
def _import_opensearch_vector_search() -> Any:
|
||||
from langchain.vectorstores.opensearch_vector_search import OpenSearchVectorSearch
|
||||
|
||||
return OpenSearchVectorSearch
|
||||
|
||||
|
||||
def _import_pgembedding() -> Any:
|
||||
from langchain.vectorstores.pgembedding import PGEmbedding
|
||||
|
||||
return PGEmbedding
|
||||
|
||||
|
||||
def _import_pgvector() -> Any:
|
||||
from langchain.vectorstores.pgvector import PGVector
|
||||
|
||||
return PGVector
|
||||
|
||||
|
||||
def _import_pinecone() -> Any:
|
||||
from langchain.vectorstores.pinecone import Pinecone
|
||||
|
||||
return Pinecone
|
||||
|
||||
|
||||
def _import_qdrant() -> Any:
|
||||
from langchain.vectorstores.qdrant import Qdrant
|
||||
|
||||
return Qdrant
|
||||
|
||||
|
||||
def _import_redis() -> Any:
|
||||
from langchain.vectorstores.redis import Redis
|
||||
|
||||
return Redis
|
||||
|
||||
|
||||
def _import_rocksetdb() -> Any:
|
||||
from langchain.vectorstores.rocksetdb import Rockset
|
||||
|
||||
return Rockset
|
||||
|
||||
|
||||
def _import_vespa() -> Any:
|
||||
from langchain.vectorstores.vespa import VespaStore
|
||||
|
||||
return VespaStore
|
||||
|
||||
|
||||
def _import_scann() -> Any:
|
||||
from langchain.vectorstores.scann import ScaNN
|
||||
|
||||
return ScaNN
|
||||
|
||||
|
||||
def _import_singlestoredb() -> Any:
|
||||
from langchain.vectorstores.singlestoredb import SingleStoreDB
|
||||
|
||||
return SingleStoreDB
|
||||
|
||||
|
||||
def _import_sklearn() -> Any:
|
||||
from langchain.vectorstores.sklearn import SKLearnVectorStore
|
||||
|
||||
return SKLearnVectorStore
|
||||
|
||||
|
||||
def _import_sqlitevss() -> Any:
|
||||
from langchain.vectorstores.sqlitevss import SQLiteVSS
|
||||
|
||||
return SQLiteVSS
|
||||
|
||||
|
||||
def _import_starrocks() -> Any:
|
||||
from langchain.vectorstores.starrocks import StarRocks
|
||||
|
||||
return StarRocks
|
||||
|
||||
|
||||
def _import_supabase() -> Any:
|
||||
from langchain.vectorstores.supabase import SupabaseVectorStore
|
||||
|
||||
return SupabaseVectorStore
|
||||
|
||||
|
||||
def _import_tair() -> Any:
|
||||
from langchain.vectorstores.tair import Tair
|
||||
|
||||
return Tair
|
||||
|
||||
|
||||
def _import_tencentvectordb() -> Any:
|
||||
from langchain.vectorstores.tencentvectordb import TencentVectorDB
|
||||
|
||||
return TencentVectorDB
|
||||
|
||||
|
||||
def _import_tigris() -> Any:
|
||||
from langchain.vectorstores.tigris import Tigris
|
||||
|
||||
return Tigris
|
||||
|
||||
|
||||
def _import_timescalevector() -> Any:
|
||||
from langchain.vectorstores.timescalevector import TimescaleVector
|
||||
|
||||
return TimescaleVector
|
||||
|
||||
|
||||
def _import_typesense() -> Any:
|
||||
from langchain.vectorstores.typesense import Typesense
|
||||
|
||||
return Typesense
|
||||
|
||||
|
||||
def _import_usearch() -> Any:
|
||||
from langchain.vectorstores.usearch import USearch
|
||||
|
||||
return USearch
|
||||
|
||||
|
||||
def _import_vald() -> Any:
|
||||
from langchain.vectorstores.vald import Vald
|
||||
|
||||
return Vald
|
||||
|
||||
|
||||
def _import_vearch() -> Any:
|
||||
from langchain.vectorstores.vearch import Vearch
|
||||
|
||||
return Vearch
|
||||
|
||||
|
||||
def _import_vectara() -> Any:
|
||||
from langchain.vectorstores.vectara import Vectara
|
||||
|
||||
return Vectara
|
||||
|
||||
|
||||
def _import_weaviate() -> Any:
|
||||
from langchain.vectorstores.weaviate import Weaviate
|
||||
|
||||
return Weaviate
|
||||
|
||||
|
||||
def _import_zep() -> Any:
|
||||
from langchain.vectorstores.zep import ZepVectorStore
|
||||
|
||||
return ZepVectorStore
|
||||
|
||||
|
||||
def _import_zilliz() -> Any:
|
||||
from langchain.vectorstores.zilliz import Zilliz
|
||||
|
||||
return Zilliz
|
||||
|
||||
|
||||
def __getattr__(name: str) -> Any:
|
||||
if name == "AnalyticDB":
|
||||
return _import_analyticdb()
|
||||
elif name == "AlibabaCloudOpenSearch":
|
||||
return _import_alibaba_cloud_open_search()
|
||||
elif name == "AlibabaCloudOpenSearchSettings":
|
||||
return _import_alibaba_cloud_open_search_settings()
|
||||
elif name == "ElasticKnnSearch":
|
||||
return _import_elastic_knn_search()
|
||||
elif name == "ElasticVectorSearch":
|
||||
return _import_elastic_vector_search()
|
||||
elif name == "Annoy":
|
||||
return _import_annoy()
|
||||
elif name == "AtlasDB":
|
||||
return _import_atlas()
|
||||
elif name == "AwaDB":
|
||||
return _import_awadb()
|
||||
elif name == "AzureSearch":
|
||||
return _import_azuresearch()
|
||||
elif name == "Bagel":
|
||||
return _import_bageldb()
|
||||
elif name == "Cassandra":
|
||||
return _import_cassandra()
|
||||
elif name == "Chroma":
|
||||
return _import_chroma()
|
||||
elif name == "Clarifai":
|
||||
return _import_clarifai()
|
||||
elif name == "ClickhouseSettings":
|
||||
return _import_clickhouse_settings()
|
||||
elif name == "Clickhouse":
|
||||
return _import_clickhouse()
|
||||
elif name == "DashVector":
|
||||
return _import_dashvector()
|
||||
elif name == "DeepLake":
|
||||
return _import_deeplake()
|
||||
elif name == "Dingo":
|
||||
return _import_dingo()
|
||||
elif name == "DocArrayInMemorySearch":
|
||||
return _import_docarray_inmemory()
|
||||
elif name == "DocArrayHnswSearch":
|
||||
return _import_docarray_hnsw()
|
||||
elif name == "ElasticsearchStore":
|
||||
return _import_elasticsearch()
|
||||
elif name == "Epsilla":
|
||||
return _import_epsilla()
|
||||
elif name == "FAISS":
|
||||
return _import_faiss()
|
||||
elif name == "Hologres":
|
||||
return _import_hologres()
|
||||
elif name == "LanceDB":
|
||||
return _import_lancedb()
|
||||
elif name == "LLMRails":
|
||||
return _import_llm_rails()
|
||||
elif name == "Marqo":
|
||||
return _import_marqo()
|
||||
elif name == "MatchingEngine":
|
||||
return _import_matching_engine()
|
||||
elif name == "Meilisearch":
|
||||
return _import_meilisearch()
|
||||
elif name == "Milvus":
|
||||
return _import_milvus()
|
||||
elif name == "MongoDBAtlasVectorSearch":
|
||||
return _import_mongodb_atlas()
|
||||
elif name == "MyScaleSettings":
|
||||
return _import_myscale_settings()
|
||||
elif name == "MyScale":
|
||||
return _import_myscale()
|
||||
elif name == "Neo4jVector":
|
||||
return _import_neo4j_vector()
|
||||
elif name == "OpenSearchVectorSearch":
|
||||
return _import_opensearch_vector_search()
|
||||
elif name == "PGEmbedding":
|
||||
return _import_pgembedding()
|
||||
elif name == "PGVector":
|
||||
return _import_pgvector()
|
||||
elif name == "Pinecone":
|
||||
return _import_pinecone()
|
||||
elif name == "Qdrant":
|
||||
return _import_qdrant()
|
||||
elif name == "Redis":
|
||||
return _import_redis()
|
||||
elif name == "Rockset":
|
||||
return _import_rocksetdb()
|
||||
elif name == "ScaNN":
|
||||
return _import_scann()
|
||||
elif name == "SingleStoreDB":
|
||||
return _import_singlestoredb()
|
||||
elif name == "SKLearnVectorStore":
|
||||
return _import_sklearn()
|
||||
elif name == "SQLiteVSS":
|
||||
return _import_sqlitevss()
|
||||
elif name == "StarRocks":
|
||||
return _import_starrocks()
|
||||
elif name == "SupabaseVectorStore":
|
||||
return _import_supabase()
|
||||
elif name == "Tair":
|
||||
return _import_tair()
|
||||
elif name == "TencentVectorDB":
|
||||
return _import_tencentvectordb()
|
||||
elif name == "Tigris":
|
||||
return _import_tigris()
|
||||
elif name == "TimescaleVector":
|
||||
return _import_timescalevector()
|
||||
elif name == "Typesense":
|
||||
return _import_typesense()
|
||||
elif name == "USearch":
|
||||
return _import_usearch()
|
||||
elif name == "Vald":
|
||||
return _import_vald()
|
||||
elif name == "Vearch":
|
||||
return _import_vearch()
|
||||
elif name == "Vectara":
|
||||
return _import_vectara()
|
||||
elif name == "Weaviate":
|
||||
return _import_weaviate()
|
||||
elif name == "ZepVectorStore":
|
||||
return _import_zep()
|
||||
elif name == "Zilliz":
|
||||
return _import_zilliz()
|
||||
elif name == "VespaStore":
|
||||
return _import_vespa()
|
||||
else:
|
||||
raise AttributeError(f"Could not find: {name}")
|
||||
|
||||
|
||||
__all__ = [
|
||||
"AlibabaCloudOpenSearch",
|
||||
|
13
libs/langchain/tests/unit_tests/vectorstores/test_imports.py
Normal file
13
libs/langchain/tests/unit_tests/vectorstores/test_imports.py
Normal file
@ -0,0 +1,13 @@
|
||||
from langchain import vectorstores
|
||||
from langchain.schema.vectorstore import VectorStore
|
||||
|
||||
|
||||
def test_all_imports() -> None:
|
||||
"""Simple test to make sure all things can be imported."""
|
||||
for cls in vectorstores.__all__:
|
||||
if cls not in [
|
||||
"AlibabaCloudOpenSearchSettings",
|
||||
"ClickhouseSettings",
|
||||
"MyScaleSettings",
|
||||
]:
|
||||
assert issubclass(getattr(vectorstores, cls), VectorStore)
|
Loading…
Reference in New Issue
Block a user