llama-index
58 строк · 1.7 Кб
1"""Pathway reader."""
2
3from typing import List, Optional, Union4
5from llama_index.legacy.readers.base import BaseReader6from llama_index.legacy.schema import Document7
8
9class PathwayReader(BaseReader):10"""Pathway reader.11
12Retrieve documents from Pathway data indexing pipeline.
13
14Args:
15host (str): The URI where Pathway is currently hosted.
16port (str | int): The port number on which Pathway is listening.
17
18See Also:
19llamaindex.retriever.pathway.PathwayRetriever and,
20llamaindex.retriever.pathway.PathwayVectorServer
21"""
22
23def __init__(self, host: str, port: Union[str, int]):24"""Initializing the Pathway reader client."""25import_err_msg = "`pathway` package not found, please run `pip install pathway`"26try:27from pathway.xpacks.llm.vector_store import VectorStoreClient28except ImportError:29raise ImportError(import_err_msg)30self.client = VectorStoreClient(host, port)31
32def load_data(33self,34query_text: str,35k: Optional[int] = 4,36metadata_filter: Optional[str] = None,37) -> List[Document]:38"""Load data from Pathway.39
40Args:
41query_text (str): The text to get the closest neighbors of.
42k (int): Number of results to return.
43metadata_filter (str): Filter to be applied.
44
45Returns:
46List[Document]: A list of documents.
47"""
48results = self.client(query_text, k, metadata_filter)49documents = []50for return_elem in results:51document = Document(52text=return_elem["text"],53extra_info=return_elem["metadata"],54)55
56documents.append(document)57
58return documents59