Module marqo_haystack.retriever
Expand source code
from typing import Any, Dict, List, Optional
from haystack.preview import Document, component
from marqo_haystack import MarqoDocumentStore
@component
class MarqoRetriever:
"""
A component for retrieving documents from an MarqoDocumentStore.
"""
def __init__(self, document_store: MarqoDocumentStore, filters: Optional[Dict[str, Any]] = None, top_k: int = 10):
"""Create an retriever component. Usually you pass some basic configuration
parameters to the constructor.
Args:
document_store (MarqoDocumentStore): An instance of a MarqoDocumentStore
filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None.
top_k (int, optional):
"""
self.filters = filters
self.top_k = top_k
self.document_store = document_store
@component.output_types(documents=List[List[Document]])
def run(self, queries: List[str], filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None):
"""Run the retriever on the given list of queries.
Args:
queries (List[str]): An input list of queries
filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None.
top_k (Optional[int], optional): The maximum number of documents to retrieve. Defaults to None.
"""
if not top_k:
top_k = self.top_k
if not filters:
filters = self.filters
return {"documents": self.document_store.search(queries, top_k, filters=filters)}
@component
class MarqoSingleRetriever(MarqoRetriever):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@component.output_types(documents=List[Document])
def run(self, query: str, filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None):
"""Run the retriever on a single query.
Args:
query (str): An input query
filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None.
top_k (Optional[int], optional): The maximum number of documents to retrieve. Defaults to None.
"""
return {"documents": super().run([query], filters, top_k)["documents"][0]}
Classes
class MarqoRetriever (document_store: MarqoDocumentStore, filters: Optional[Dict[str, Any]] = None, top_k: int = 10)-
A component for retrieving documents from an MarqoDocumentStore.
Create an retriever component. Usually you pass some basic configuration parameters to the constructor.
Args
document_store:MarqoDocumentStore- An instance of a MarqoDocumentStore
filters:Optional[Dict[str, Any]], optional- A dictionary with filters to narrow down the search space. Defaults to None.
top_k (int, optional):
Expand source code
@component class MarqoRetriever: """ A component for retrieving documents from an MarqoDocumentStore. """ def __init__(self, document_store: MarqoDocumentStore, filters: Optional[Dict[str, Any]] = None, top_k: int = 10): """Create an retriever component. Usually you pass some basic configuration parameters to the constructor. Args: document_store (MarqoDocumentStore): An instance of a MarqoDocumentStore filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None. top_k (int, optional): """ self.filters = filters self.top_k = top_k self.document_store = document_store @component.output_types(documents=List[List[Document]]) def run(self, queries: List[str], filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None): """Run the retriever on the given list of queries. Args: queries (List[str]): An input list of queries filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None. top_k (Optional[int], optional): The maximum number of documents to retrieve. Defaults to None. """ if not top_k: top_k = self.top_k if not filters: filters = self.filters return {"documents": self.document_store.search(queries, top_k, filters=filters)}Subclasses
Methods
def run(self, queries: List[str], filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None)-
Run the retriever on the given list of queries.
Args
queries:List[str]- An input list of queries
filters:Optional[Dict[str, Any]], optional- A dictionary with filters to narrow down the search space. Defaults to None.
top_k:Optional[int], optional- The maximum number of documents to retrieve. Defaults to None.
Expand source code
@component.output_types(documents=List[List[Document]]) def run(self, queries: List[str], filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None): """Run the retriever on the given list of queries. Args: queries (List[str]): An input list of queries filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None. top_k (Optional[int], optional): The maximum number of documents to retrieve. Defaults to None. """ if not top_k: top_k = self.top_k if not filters: filters = self.filters return {"documents": self.document_store.search(queries, top_k, filters=filters)}
class MarqoSingleRetriever (*args, **kwargs)-
A component for retrieving documents from an MarqoDocumentStore.
Create an retriever component. Usually you pass some basic configuration parameters to the constructor.
Args
document_store:MarqoDocumentStore- An instance of a MarqoDocumentStore
filters:Optional[Dict[str, Any]], optional- A dictionary with filters to narrow down the search space. Defaults to None.
top_k (int, optional):
Expand source code
@component class MarqoSingleRetriever(MarqoRetriever): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @component.output_types(documents=List[Document]) def run(self, query: str, filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None): """Run the retriever on a single query. Args: query (str): An input query filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None. top_k (Optional[int], optional): The maximum number of documents to retrieve. Defaults to None. """ return {"documents": super().run([query], filters, top_k)["documents"][0]}Ancestors
Methods
def run(self, query: str, filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None)-
Run the retriever on a single query.
Args
query:str- An input query
filters:Optional[Dict[str, Any]], optional- A dictionary with filters to narrow down the search space. Defaults to None.
top_k:Optional[int], optional- The maximum number of documents to retrieve. Defaults to None.
Expand source code
@component.output_types(documents=List[Document]) def run(self, query: str, filters: Optional[Dict[str, Any]] = None, top_k: Optional[int] = None): """Run the retriever on a single query. Args: query (str): An input query filters (Optional[Dict[str, Any]], optional): A dictionary with filters to narrow down the search space. Defaults to None. top_k (Optional[int], optional): The maximum number of documents to retrieve. Defaults to None. """ return {"documents": super().run([query], filters, top_k)["documents"][0]}