Skip to content

Singlestore

SingleStoreReader #

Bases: BaseReader

SingleStore reader.

Parameters:

Name Type Description Default
scheme str

Database Scheme.

required
host str

Database Host.

required
port str

Database Port.

required
user str

Database User.

required
password str

Database Password.

required
dbname str

Database Name.

required
table_name str

Table Name.

required
content_field str

Content Field.

'text'
vector_field str

Vector Field.

'embedding'
Source code in llama-index-integrations/readers/llama-index-readers-singlestore/llama_index/readers/singlestore/base.py
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
class SingleStoreReader(BaseReader):
    """SingleStore reader.

    Args:
        scheme (str): Database Scheme.
        host (str): Database Host.
        port (str): Database Port.
        user (str): Database User.
        password (str): Database Password.
        dbname (str): Database Name.
        table_name (str): Table Name.
        content_field (str): Content Field.
        vector_field (str): Vector Field.
    """

    def __init__(
        self,
        scheme: str,
        host: str,
        port: str,
        user: str,
        password: str,
        dbname: str,
        table_name: str,
        content_field: str = "text",
        vector_field: str = "embedding",
    ):
        """Initialize with parameters."""
        self.scheme = scheme
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.dbname = dbname
        self.table_name = table_name
        self.content_field = content_field
        self.vector_field = vector_field

        try:
            import pymysql

            pymysql.install_as_MySQLdb()
        except ImportError:
            pass

        self.DatabaseReader = DatabaseReader
        self.reader = self.DatabaseReader(
            scheme=self.scheme,
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            dbname=self.dbname,
        )

    def load_data(self, search_embedding: str, top_k: int = 5) -> List[Document]:
        """Load data from SingleStore.

        Args:
            search_embedding (str): The embedding to search.
            top_k (int): Number of results to return.

        Returns:
            List[Document]: A list of documents.
        """
        query = f"""
        SELECT {self.content_field}, DOT_PRODUCT_F64({self.vector_field}, JSON_ARRAY_PACK_F64(\'{search_embedding}\')) AS score
        FROM {self.table_name}
        ORDER BY score
        DESC LIMIT {top_k}
        """

        return self.reader.load_data(query=query)

load_data #

load_data(search_embedding: str, top_k: int = 5) -> List[Document]

Load data from SingleStore.

Parameters:

Name Type Description Default
search_embedding str

The embedding to search.

required
top_k int

Number of results to return.

5

Returns:

Type Description
List[Document]

List[Document]: A list of documents.

Source code in llama-index-integrations/readers/llama-index-readers-singlestore/llama_index/readers/singlestore/base.py
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
def load_data(self, search_embedding: str, top_k: int = 5) -> List[Document]:
    """Load data from SingleStore.

    Args:
        search_embedding (str): The embedding to search.
        top_k (int): Number of results to return.

    Returns:
        List[Document]: A list of documents.
    """
    query = f"""
    SELECT {self.content_field}, DOT_PRODUCT_F64({self.vector_field}, JSON_ARRAY_PACK_F64(\'{search_embedding}\')) AS score
    FROM {self.table_name}
    ORDER BY score
    DESC LIMIT {top_k}
    """

    return self.reader.load_data(query=query)