Skip to content

Metal

MetalReader #

Bases: BaseReader

金属阅读器。

Parameters:

Name Type Description Default
api_key str

金属API密钥。

required
client_id str

金属客户端ID。

required
index_id str

金属指数ID。

required
Source code in llama_index/readers/metal/base.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
class MetalReader(BaseReader):
    """金属阅读器。

    Args:
        api_key (str): 金属API密钥。
        client_id (str): 金属客户端ID。
        index_id (str): 金属指数ID。"""

    def __init__(self, api_key: str, client_id: str, index_id: str):
        import_err_msg = (
            "`metal_sdk` package not found, please run `pip install metal_sdk`"
        )
        try:
            import metal_sdk  # noqa
        except ImportError:
            raise ImportError(import_err_msg)
        from metal_sdk.metal import Metal

        """Initialize with parameters."""
        self._api_key = api_key
        self._client_id = client_id
        self._index_id = index_id
        self.metal_client = Metal(api_key, client_id, index_id)

    def load_data(
        self,
        limit: int,
        query_embedding: Optional[List[float]] = None,
        filters: Optional[Dict[str, Any]] = None,
        separate_documents: bool = True,
        **query_kwargs: Any
    ) -> List[Document]:
        """从Metal加载数据。

Args:
    query_embedding(可选[List[float]]):用于搜索的查询嵌入。
    limit(int):要返回的结果数量。
    filters(可选[Dict[str, Any]]):要应用于搜索的过滤器。
    separate_documents(可选[bool]):是否返回每个检索到的条目的单独文档。默认为True。
    **query_kwargs:要传递给搜索的关键字参数。

Returns:
    List[Document]:文档列表。
"""
        payload = {
            "embedding": query_embedding,
            "filters": filters,
        }
        response = self.metal_client.search(payload, limit=limit, **query_kwargs)

        documents = []
        for item in response["data"]:
            text = item["text"] or (item["metadata"] and item["metadata"]["text"])
            documents.append(Document(text=text))

        if not separate_documents:
            text_list = [doc.get_content() for doc in documents]
            text = "\n\n".join(text_list)
            documents = [Document(text=text)]

        return documents

load_data #

load_data(
    limit: int,
    query_embedding: Optional[List[float]] = None,
    filters: Optional[Dict[str, Any]] = None,
    separate_documents: bool = True,
    **query_kwargs: Any
) -> List[Document]

从Metal加载数据。

Returns:

Type Description
List[Document]

List[Document]:文档列表。

Source code in llama_index/readers/metal/base.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    def load_data(
        self,
        limit: int,
        query_embedding: Optional[List[float]] = None,
        filters: Optional[Dict[str, Any]] = None,
        separate_documents: bool = True,
        **query_kwargs: Any
    ) -> List[Document]:
        """从Metal加载数据。

Args:
    query_embedding(可选[List[float]]):用于搜索的查询嵌入。
    limit(int):要返回的结果数量。
    filters(可选[Dict[str, Any]]):要应用于搜索的过滤器。
    separate_documents(可选[bool]):是否返回每个检索到的条目的单独文档。默认为True。
    **query_kwargs:要传递给搜索的关键字参数。

Returns:
    List[Document]:文档列表。
"""
        payload = {
            "embedding": query_embedding,
            "filters": filters,
        }
        response = self.metal_client.search(payload, limit=limit, **query_kwargs)

        documents = []
        for item in response["data"]:
            text = item["text"] or (item["metadata"] and item["metadata"]["text"])
            documents.append(Document(text=text))

        if not separate_documents:
            text_list = [doc.get_content() for doc in documents]
            text = "\n\n".join(text_list)
            documents = [Document(text=text)]

        return documents