forked from Archives/langchain
Add Milvus and Zilliz Retrievals (#4416)
Adds the basic retrievers for Milvus and Zilliz. Hybrid search support will be added in the future. Signed-off-by: Filip Haltmayer <filip.haltmayer@zilliz.com>
This commit is contained in:
parent
2e43954bc3
commit
c632f7fc4e
43
langchain/retrievers/milvus.py
Normal file
43
langchain/retrievers/milvus.py
Normal file
@ -0,0 +1,43 @@
|
||||
"""Milvus Retriever"""
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from langchain.embeddings.base import Embeddings
|
||||
from langchain.schema import BaseRetriever, Document
|
||||
from langchain.vectorstores.milvus import Milvus
|
||||
|
||||
# TODO: Update to MilvusClient + Hybrid Search when available
|
||||
|
||||
|
||||
class MilvusRetreiver(BaseRetriever):
|
||||
def __init__(
|
||||
self,
|
||||
embedding_function: Embeddings,
|
||||
collection_name: str = "LangChainCollection",
|
||||
connection_args: Optional[Dict[str, Any]] = None,
|
||||
consistency_level: str = "Session",
|
||||
search_params: Optional[dict] = None,
|
||||
):
|
||||
self.store = Milvus(
|
||||
embedding_function,
|
||||
collection_name,
|
||||
connection_args,
|
||||
consistency_level,
|
||||
)
|
||||
self.retriever = self.store.as_retriever(search_kwargs={"param": search_params})
|
||||
|
||||
def add_texts(
|
||||
self, texts: List[str], metadatas: Optional[List[dict]] = None
|
||||
) -> None:
|
||||
"""Add text to the Milvus store
|
||||
|
||||
Args:
|
||||
texts (List[str]): The text
|
||||
metadatas (List[dict]): Metadata dicts, must line up with existing store
|
||||
"""
|
||||
self.store.add_texts(texts, metadatas)
|
||||
|
||||
def get_relevant_documents(self, query: str) -> List[Document]:
|
||||
return self.retriever.get_relevant_documents(query)
|
||||
|
||||
async def aget_relevant_documents(self, query: str) -> List[Document]:
|
||||
raise NotImplementedError
|
43
langchain/retrievers/zilliz.py
Normal file
43
langchain/retrievers/zilliz.py
Normal file
@ -0,0 +1,43 @@
|
||||
"""Zilliz Retriever"""
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from langchain.embeddings.base import Embeddings
|
||||
from langchain.schema import BaseRetriever, Document
|
||||
from langchain.vectorstores.zilliz import Zilliz
|
||||
|
||||
# TODO: Update to ZillizClient + Hybrid Search when available
|
||||
|
||||
|
||||
class ZillizRetreiver(BaseRetriever):
|
||||
def __init__(
|
||||
self,
|
||||
embedding_function: Embeddings,
|
||||
collection_name: str = "LangChainCollection",
|
||||
connection_args: Optional[Dict[str, Any]] = None,
|
||||
consistency_level: str = "Session",
|
||||
search_params: Optional[dict] = None,
|
||||
):
|
||||
self.store = Zilliz(
|
||||
embedding_function,
|
||||
collection_name,
|
||||
connection_args,
|
||||
consistency_level,
|
||||
)
|
||||
self.retriever = self.store.as_retriever(search_kwargs={"param": search_params})
|
||||
|
||||
def add_texts(
|
||||
self, texts: List[str], metadatas: Optional[List[dict]] = None
|
||||
) -> None:
|
||||
"""Add text to the Zilliz store
|
||||
|
||||
Args:
|
||||
texts (List[str]): The text
|
||||
metadatas (List[dict]): Metadata dicts, must line up with existing store
|
||||
"""
|
||||
self.store.add_texts(texts, metadatas)
|
||||
|
||||
def get_relevant_documents(self, query: str) -> List[Document]:
|
||||
return self.retriever.get_relevant_documents(query)
|
||||
|
||||
async def aget_relevant_documents(self, query: str) -> List[Document]:
|
||||
raise NotImplementedError
|
Loading…
Reference in New Issue
Block a user