mirror of
https://github.com/hwchase17/langchain
synced 2024-11-18 09:25:54 +00:00
342df7cf83
Thank you for contributing to LangChain! - [x] **PR title**: community: Add Zep Cloud components + docs + examples - [x] **PR message**: We have recently released our new zep-cloud sdks that are compatible with Zep Cloud (not Zep Open Source). We have also maintained our Cloud version of langchain components (ChatMessageHistory, VectorStore) as part of our sdks. This PRs goal is to port these components to langchain community repo, and close the gap with the existing Zep Open Source components already present in community repo (added ZepCloudMemory,ZepCloudVectorStore,ZepCloudRetriever). Also added a ZepCloudChatMessageHistory components together with an expression language example ported from our repo. We have left the original open source components intact on purpose as to not introduce any breaking changes. - **Issue:** - - **Dependencies:** Added optional dependency of our new cloud sdk `zep-cloud` - **Twitter handle:** @paulpaliychuk51 - [x] **Add tests and docs** - [x] **Lint and test**: Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/ Additional guidelines: - Make sure optional dependencies are imported within a function. - Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests. - Most PRs should not touch more than one package. - Changes should be backwards compatible. - If you are adding something to community, do not re-import it in langchain. If no one reviews your PR within a few days, please @-mention one of baskaryan, efriis, eyurtsev, hwchase17.
248 lines
9.3 KiB
Python
248 lines
9.3 KiB
Python
"""**Retriever** class returns Documents given a text **query**.
|
|
|
|
It is more general than a vector store. A retriever does not need to be able to
|
|
store documents, only to return (or retrieve) it. Vector stores can be used as
|
|
the backbone of a retriever, but there are other types of retrievers as well.
|
|
|
|
**Class hierarchy:**
|
|
|
|
.. code-block::
|
|
|
|
BaseRetriever --> <name>Retriever # Examples: ArxivRetriever, MergerRetriever
|
|
|
|
**Main helpers:**
|
|
|
|
.. code-block::
|
|
|
|
Document, Serializable, Callbacks,
|
|
CallbackManagerForRetrieverRun, AsyncCallbackManagerForRetrieverRun
|
|
"""
|
|
|
|
import importlib
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
if TYPE_CHECKING:
|
|
from langchain_community.retrievers.arcee import (
|
|
ArceeRetriever,
|
|
)
|
|
from langchain_community.retrievers.arxiv import (
|
|
ArxivRetriever,
|
|
)
|
|
from langchain_community.retrievers.asknews import (
|
|
AskNewsRetriever,
|
|
)
|
|
from langchain_community.retrievers.azure_ai_search import (
|
|
AzureAISearchRetriever,
|
|
AzureCognitiveSearchRetriever,
|
|
)
|
|
from langchain_community.retrievers.bedrock import (
|
|
AmazonKnowledgeBasesRetriever,
|
|
)
|
|
from langchain_community.retrievers.bm25 import (
|
|
BM25Retriever,
|
|
)
|
|
from langchain_community.retrievers.breebs import (
|
|
BreebsRetriever,
|
|
)
|
|
from langchain_community.retrievers.chaindesk import (
|
|
ChaindeskRetriever,
|
|
)
|
|
from langchain_community.retrievers.chatgpt_plugin_retriever import (
|
|
ChatGPTPluginRetriever,
|
|
)
|
|
from langchain_community.retrievers.cohere_rag_retriever import (
|
|
CohereRagRetriever,
|
|
)
|
|
from langchain_community.retrievers.docarray import (
|
|
DocArrayRetriever,
|
|
)
|
|
from langchain_community.retrievers.dria_index import (
|
|
DriaRetriever,
|
|
)
|
|
from langchain_community.retrievers.elastic_search_bm25 import (
|
|
ElasticSearchBM25Retriever,
|
|
)
|
|
from langchain_community.retrievers.embedchain import (
|
|
EmbedchainRetriever,
|
|
)
|
|
from langchain_community.retrievers.google_cloud_documentai_warehouse import (
|
|
GoogleDocumentAIWarehouseRetriever,
|
|
)
|
|
from langchain_community.retrievers.google_vertex_ai_search import (
|
|
GoogleCloudEnterpriseSearchRetriever,
|
|
GoogleVertexAIMultiTurnSearchRetriever,
|
|
GoogleVertexAISearchRetriever,
|
|
)
|
|
from langchain_community.retrievers.kay import (
|
|
KayAiRetriever,
|
|
)
|
|
from langchain_community.retrievers.kendra import (
|
|
AmazonKendraRetriever,
|
|
)
|
|
from langchain_community.retrievers.knn import (
|
|
KNNRetriever,
|
|
)
|
|
from langchain_community.retrievers.llama_index import (
|
|
LlamaIndexGraphRetriever,
|
|
LlamaIndexRetriever,
|
|
)
|
|
from langchain_community.retrievers.metal import (
|
|
MetalRetriever,
|
|
)
|
|
from langchain_community.retrievers.milvus import (
|
|
MilvusRetriever,
|
|
)
|
|
from langchain_community.retrievers.outline import (
|
|
OutlineRetriever,
|
|
)
|
|
from langchain_community.retrievers.pinecone_hybrid_search import (
|
|
PineconeHybridSearchRetriever,
|
|
)
|
|
from langchain_community.retrievers.pubmed import (
|
|
PubMedRetriever,
|
|
)
|
|
from langchain_community.retrievers.qdrant_sparse_vector_retriever import (
|
|
QdrantSparseVectorRetriever,
|
|
)
|
|
from langchain_community.retrievers.rememberizer import (
|
|
RememberizerRetriever,
|
|
)
|
|
from langchain_community.retrievers.remote_retriever import (
|
|
RemoteLangChainRetriever,
|
|
)
|
|
from langchain_community.retrievers.svm import (
|
|
SVMRetriever,
|
|
)
|
|
from langchain_community.retrievers.tavily_search_api import (
|
|
TavilySearchAPIRetriever,
|
|
)
|
|
from langchain_community.retrievers.tfidf import (
|
|
TFIDFRetriever,
|
|
)
|
|
from langchain_community.retrievers.thirdai_neuraldb import NeuralDBRetriever
|
|
from langchain_community.retrievers.vespa_retriever import (
|
|
VespaRetriever,
|
|
)
|
|
from langchain_community.retrievers.weaviate_hybrid_search import (
|
|
WeaviateHybridSearchRetriever,
|
|
)
|
|
from langchain_community.retrievers.web_research import WebResearchRetriever
|
|
from langchain_community.retrievers.wikipedia import (
|
|
WikipediaRetriever,
|
|
)
|
|
from langchain_community.retrievers.you import (
|
|
YouRetriever,
|
|
)
|
|
from langchain_community.retrievers.zep import (
|
|
ZepRetriever,
|
|
)
|
|
from langchain_community.retrievers.zep_cloud import (
|
|
ZepCloudRetriever,
|
|
)
|
|
from langchain_community.retrievers.zilliz import (
|
|
ZillizRetriever,
|
|
)
|
|
|
|
|
|
_module_lookup = {
|
|
"AmazonKendraRetriever": "langchain_community.retrievers.kendra",
|
|
"AmazonKnowledgeBasesRetriever": "langchain_community.retrievers.bedrock",
|
|
"ArceeRetriever": "langchain_community.retrievers.arcee",
|
|
"ArxivRetriever": "langchain_community.retrievers.arxiv",
|
|
"AskNewsRetriever": "langchain_community.retrievers.asknews",
|
|
"AzureAISearchRetriever": "langchain_community.retrievers.azure_ai_search",
|
|
"AzureCognitiveSearchRetriever": "langchain_community.retrievers.azure_ai_search",
|
|
"BM25Retriever": "langchain_community.retrievers.bm25",
|
|
"BreebsRetriever": "langchain_community.retrievers.breebs",
|
|
"ChaindeskRetriever": "langchain_community.retrievers.chaindesk",
|
|
"ChatGPTPluginRetriever": "langchain_community.retrievers.chatgpt_plugin_retriever",
|
|
"CohereRagRetriever": "langchain_community.retrievers.cohere_rag_retriever",
|
|
"DocArrayRetriever": "langchain_community.retrievers.docarray",
|
|
"DriaRetriever": "langchain_community.retrievers.dria_index",
|
|
"ElasticSearchBM25Retriever": "langchain_community.retrievers.elastic_search_bm25",
|
|
"EmbedchainRetriever": "langchain_community.retrievers.embedchain",
|
|
"GoogleCloudEnterpriseSearchRetriever": "langchain_community.retrievers.google_vertex_ai_search", # noqa: E501
|
|
"GoogleDocumentAIWarehouseRetriever": "langchain_community.retrievers.google_cloud_documentai_warehouse", # noqa: E501
|
|
"GoogleVertexAIMultiTurnSearchRetriever": "langchain_community.retrievers.google_vertex_ai_search", # noqa: E501
|
|
"GoogleVertexAISearchRetriever": "langchain_community.retrievers.google_vertex_ai_search", # noqa: E501
|
|
"KNNRetriever": "langchain_community.retrievers.knn",
|
|
"KayAiRetriever": "langchain_community.retrievers.kay",
|
|
"LlamaIndexGraphRetriever": "langchain_community.retrievers.llama_index",
|
|
"LlamaIndexRetriever": "langchain_community.retrievers.llama_index",
|
|
"MetalRetriever": "langchain_community.retrievers.metal",
|
|
"MilvusRetriever": "langchain_community.retrievers.milvus",
|
|
"OutlineRetriever": "langchain_community.retrievers.outline",
|
|
"PineconeHybridSearchRetriever": "langchain_community.retrievers.pinecone_hybrid_search", # noqa: E501
|
|
"PubMedRetriever": "langchain_community.retrievers.pubmed",
|
|
"QdrantSparseVectorRetriever": "langchain_community.retrievers.qdrant_sparse_vector_retriever", # noqa: E501
|
|
"RememberizerRetriever": "langchain_community.retrievers.rememberizer",
|
|
"RemoteLangChainRetriever": "langchain_community.retrievers.remote_retriever",
|
|
"SVMRetriever": "langchain_community.retrievers.svm",
|
|
"TFIDFRetriever": "langchain_community.retrievers.tfidf",
|
|
"TavilySearchAPIRetriever": "langchain_community.retrievers.tavily_search_api",
|
|
"VespaRetriever": "langchain_community.retrievers.vespa_retriever",
|
|
"WeaviateHybridSearchRetriever": "langchain_community.retrievers.weaviate_hybrid_search", # noqa: E501
|
|
"WebResearchRetriever": "langchain_community.retrievers.web_research",
|
|
"WikipediaRetriever": "langchain_community.retrievers.wikipedia",
|
|
"YouRetriever": "langchain_community.retrievers.you",
|
|
"ZepRetriever": "langchain_community.retrievers.zep",
|
|
"ZepCloudRetriever": "langchain_community.retrievers.zep_cloud",
|
|
"ZillizRetriever": "langchain_community.retrievers.zilliz",
|
|
"NeuralDBRetriever": "langchain_community.retrievers.thirdai_neuraldb",
|
|
}
|
|
|
|
|
|
def __getattr__(name: str) -> Any:
|
|
if name in _module_lookup:
|
|
module = importlib.import_module(_module_lookup[name])
|
|
return getattr(module, name)
|
|
raise AttributeError(f"module {__name__} has no attribute {name}")
|
|
|
|
|
|
__all__ = [
|
|
"AmazonKendraRetriever",
|
|
"AmazonKnowledgeBasesRetriever",
|
|
"ArceeRetriever",
|
|
"ArxivRetriever",
|
|
"AskNewsRetriever",
|
|
"AzureAISearchRetriever",
|
|
"AzureCognitiveSearchRetriever",
|
|
"BM25Retriever",
|
|
"BreebsRetriever",
|
|
"ChaindeskRetriever",
|
|
"ChatGPTPluginRetriever",
|
|
"CohereRagRetriever",
|
|
"DocArrayRetriever",
|
|
"DriaRetriever",
|
|
"ElasticSearchBM25Retriever",
|
|
"EmbedchainRetriever",
|
|
"GoogleCloudEnterpriseSearchRetriever",
|
|
"GoogleDocumentAIWarehouseRetriever",
|
|
"GoogleVertexAIMultiTurnSearchRetriever",
|
|
"GoogleVertexAISearchRetriever",
|
|
"KayAiRetriever",
|
|
"KNNRetriever",
|
|
"LlamaIndexGraphRetriever",
|
|
"LlamaIndexRetriever",
|
|
"MetalRetriever",
|
|
"MilvusRetriever",
|
|
"NeuralDBRetriever",
|
|
"OutlineRetriever",
|
|
"PineconeHybridSearchRetriever",
|
|
"PubMedRetriever",
|
|
"QdrantSparseVectorRetriever",
|
|
"RememberizerRetriever",
|
|
"RemoteLangChainRetriever",
|
|
"SVMRetriever",
|
|
"TavilySearchAPIRetriever",
|
|
"TFIDFRetriever",
|
|
"VespaRetriever",
|
|
"WeaviateHybridSearchRetriever",
|
|
"WebResearchRetriever",
|
|
"WikipediaRetriever",
|
|
"YouRetriever",
|
|
"ZepRetriever",
|
|
"ZepCloudRetriever",
|
|
"ZillizRetriever",
|
|
]
|