SingleStoreDB#

class langchain_community.vectorstores.singlestoredb.SingleStoreDB(embedding: Embeddings, *, distance_strategy: DistanceStrategy = DistanceStrategy.DOT_PRODUCT, table_name: str = 'embeddings', content_field: str = 'content', metadata_field: str = 'metadata', vector_field: str = 'vector', id_field: str = 'id', use_vector_index: bool = False, vector_index_name: str = '', vector_index_options: dict | None = None, vector_size: int = 1536, use_full_text_search: bool = False, pool_size: int = 5, max_overflow: int = 10, timeout: float = 30, **kwargs: Any)[来源]#

SingleStore DB 向量存储。

使用此类的先决条件是安装singlestoredb Python包。

可以通过提供嵌入函数和数据库连接、连接池的相关参数,以及可选的表和字段名称来创建SingleStoreDB向量存储。

使用必要的组件进行初始化。

Parameters:
  • embedding (Embeddings) – 一个文本嵌入模型。

  • distance_strategy (DistanceStrategy, optional) –

    确定用于计算嵌入空间中向量之间距离的策略。 默认为 DOT_PRODUCT。 可用选项有: - DOT_PRODUCT: 计算两个向量的标量积。

    这是默认行为

    • EUCLIDEAN_DISTANCE: 计算两个向量之间的欧几里得距离。

      此度量考虑了向量空间中的几何距离,可能更适合依赖于空间关系的嵌入。此度量与 WEIGHTED_SUM 搜索策略不兼容。

  • table_name (str, optional) – 指定使用的表的名称。 默认为“embeddings”。

  • content_field (str, optional) – 指定存储内容的字段。 默认为“content”。

  • metadata_field (str, optional) – 指定存储元数据的字段。 默认为“metadata”。

  • vector_field (str, optional) – 指定存储向量的字段。 默认为“vector”。

  • id_field (str, optional) – 指定存储ID的字段。 默认为“id”。

  • use_vector_index (bool, optional) – 切换使用向量索引。 仅适用于 SingleStoreDB 8.5 或更高版本。默认为 False。 如果设置为 True,则需要将 vector_size 参数设置为适当的值。

  • vector_index_name (str, optional) – 指定向量索引的名称。 默认为空。如果 use_vector_index 设置为 False,则此参数将被忽略。

  • vector_index_options (dict, optional) –

    指定向量索引的选项。默认为 {}。 如果 use_vector_index 设置为 False,则此选项将被忽略。选项包括: index_type (str, optional): 指定索引的类型。

    默认为 IVF_PQFS。

    有关更多选项,请参阅 SingleStoreDB 文档: https://docs.singlestore.com/cloud/reference/sql-reference/vector-functions/vector-indexing/

  • vector_size (int, optional) – 指定向量的大小。 默认为1536。如果use_vector_index设置为True,则必须设置。 应设置为与存储在vector_field中的向量大小相同的值。

  • use_full_text_search (bool, optional) – 切换是否在文档内容上使用全文索引。默认为 False。如果设置为 True,表将在内容字段上创建全文索引,并且 simularity_search 方法将允许使用 TEXT_ONLY、FILTER_BY_TEXT、FILTER_BY_VECTOR 和 WIGHTED_SUM 搜索策略。如果设置为 False,simularity_search 方法将仅允许 VECTOR_ONLY 搜索策略。

  • pool (以下参数与连接相关)

  • pool_size (int, optional) – 决定池中活动连接的数量。默认为5。

  • max_overflow (int, optional) – 确定允许超出pool_size的最大连接数。默认为10。

  • timeout (float, optional) – 指定建立连接的最大等待时间(以秒为单位)。默认为30。

  • connection (数据库)

  • host (str, optional) – 指定数据库连接的主机名、IP地址或URL。默认方案是“mysql”。

  • user (str, optional) – 数据库用户名。

  • password (str, optional) – 数据库密码。

  • port (int, optional) – 数据库端口。非HTTP连接默认为3306,HTTP连接默认为80,HTTPS连接默认为443。

  • database (str, optional) – 数据库名称。

  • the (额外的可选参数提供了进一步的定制)

  • 连接

  • pure_python (bool, optional) – 切换连接器模式。如果为True,则在纯Python模式下运行。

  • local_infile (bool, optional) – 允许本地文件上传。

  • charset (str, optional) – 指定字符串值的字符集。

  • ssl_key (str, optional) – 指定包含SSL密钥的文件的路径。

  • ssl_cert (str, optional) – 指定包含SSL证书的文件路径。

  • ssl_ca (str, optional) – 指定包含SSL证书颁发机构的文件路径。

  • ssl_cipher (str, optional) – 设置SSL加密套件列表。

  • ssl_disabled (bool, optional) – 禁用SSL使用。

  • ssl_verify_cert (bool, optional) – 验证服务器的证书。 如果指定了 ssl_ca,则自动启用。

  • ssl_verify_identity (bool, optional) – 验证服务器的身份。

  • conv (dict[int, Callable], optional) – 数据转换函数的字典。

  • credential_type (str, optional) – 指定要使用的认证类型:auth.PASSWORD、auth.JWT 或 auth.BROWSER_SSO。

  • autocommit (bool, optional) – 启用自动提交。

  • results_type (str, optional) – 决定查询结果的结构: 元组、命名元组、字典。

  • results_format (str, optional) – 已弃用。此选项已重命名为 results_type。

  • kwargs (Any)

示例

基本用法:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

vectorstore = SingleStoreDB(
    OpenAIEmbeddings(),
    host="https://user:password@127.0.0.1:3306/database"
)

高级用法:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

vectorstore = SingleStoreDB(
    OpenAIEmbeddings(),
    distance_strategy=DistanceStrategy.EUCLIDEAN_DISTANCE,
    host="127.0.0.1",
    port=3306,
    user="user",
    password="password",
    database="db",
    table_name="my_custom_table",
    pool_size=10,
    timeout=60,
)

使用环境变量:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

os.environ['SINGLESTOREDB_URL'] = 'me:p455w0rd@s2-host.com/my_db'
vectorstore = SingleStoreDB(OpenAIEmbeddings())

使用向量索引:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

os.environ['SINGLESTOREDB_URL'] = 'me:p455w0rd@s2-host.com/my_db'
vectorstore = SingleStoreDB(
    OpenAIEmbeddings(),
    use_vector_index=True,
)

使用全文索引:

属性

embeddings

如果可用,访问查询嵌入对象。

方法

__init__(embedding, *[, distance_strategy, ...])

使用必要的组件进行初始化。

aadd_documents(documents, **kwargs)

异步运行更多文档通过嵌入并添加到向量存储中。

aadd_texts(texts[, metadatas, ids])

异步运行更多文本通过嵌入并添加到向量存储中。

add_documents(documents, **kwargs)

在向量存储中添加或更新文档。

add_images(uris[, metadatas, embeddings, ...])

通过嵌入运行图像并将其添加到向量存储中。

add_texts(texts[, metadatas, embeddings, ...])

向向量存储中添加更多文本。

adelete([ids])

异步删除通过向量ID或其他条件。

afrom_documents(documents, embedding, **kwargs)

异步返回从文档和嵌入初始化的VectorStore。

afrom_texts(texts, embedding[, metadatas, ids])

异步返回从文本和嵌入初始化的VectorStore。

aget_by_ids(ids, /)

通过ID异步获取文档。

amax_marginal_relevance_search(query[, k, ...])

异步返回使用最大边际相关性选择的文档。

amax_marginal_relevance_search_by_vector(...)

异步返回使用最大边际相关性选择的文档。

as_retriever(**kwargs)

返回从此VectorStore初始化的VectorStoreRetriever。

asearch(query, search_type, **kwargs)

异步返回与查询最相似的文档,使用指定的搜索类型。

asimilarity_search(query[, k])

异步返回与查询最相似的文档。

asimilarity_search_by_vector(embedding[, k])

异步返回与嵌入向量最相似的文档。

asimilarity_search_with_relevance_scores(query)

异步返回文档和相关度分数,范围在[0, 1]之间。

asimilarity_search_with_score(*args, **kwargs)

异步运行带距离的相似性搜索。

delete([ids])

从向量存储中删除文档。

drop()

删除表并从向量存储中删除所有数据。

from_documents(documents, embedding, **kwargs)

返回从文档和嵌入初始化的VectorStore。

from_texts(texts, embedding[, metadatas, ...])

Create a SingleStoreDB vectorstore from raw documents. This is a user-friendly interface that: 1. Embeds documents. 2. Creates a new table for the embeddings in SingleStoreDB. 3. Adds the documents to the newly created table. This is intended to be a quick way to get started. :param texts: List of texts to add to the vectorstore. :type texts: List[str] :param embedding: A text embedding model. :type embedding: Embeddings :param metadatas: Optional list of metadatas. Defaults to None. :type metadatas: Optional[List[dict]], optional :param distance_strategy: Determines the strategy employed for calculating the distance between vectors in the embedding space. Defaults to DOT_PRODUCT. Available options are: - DOT_PRODUCT: Computes the scalar product of two vectors. This is the default behavior - EUCLIDEAN_DISTANCE: Computes the Euclidean distance between two vectors. This metric considers the geometric distance in the vector space, and might be more suitable for embeddings that rely on spatial relationships. This metric is not compatible with the WEIGHTED_SUM search strategy. :type distance_strategy: DistanceStrategy, optional :param table_name: Specifies the name of the table in use. Defaults to "embeddings". :type table_name: str, optional :param content_field: Specifies the field to store the content. Defaults to "content". :type content_field: str, optional :param metadata_field: Specifies the field to store metadata. Defaults to "metadata". :type metadata_field: str, optional :param vector_field: Specifies the field to store the vector. Defaults to "vector". :type vector_field: str, optional :param id_field: Specifies the field to store the id. Defaults to "id". :type id_field: str, optional :param use_vector_index: Toggles the use of a vector index. Works only with SingleStoreDB 8.5 or later. Defaults to False. If set to True, vector_size parameter is required to be set to a proper value. :type use_vector_index: bool, optional :param vector_index_name: Specifies the name of the vector index. Defaults to empty. Will be ignored if use_vector_index is set to False. :type vector_index_name: str, optional :param vector_index_options: Specifies the options for the vector index. Defaults to {}. Will be ignored if use_vector_index is set to False. The options are: index_type (str, optional): Specifies the type of the index. Defaults to IVF_PQFS. For more options, please refer to the SingleStoreDB documentation: https://docs.singlestore.com/cloud/reference/sql-reference/vector-functions/vector-indexing/ :type vector_index_options: dict, optional :param vector_size: Specifies the size of the vector. Defaults to 1536. Required if use_vector_index is set to True. Should be set to the same value as the size of the vectors stored in the vector_field. :type vector_size: int, optional :param use_full_text_search: Toggles the use a full-text index on the document content. Defaults to False. If set to True, the table will be created with a full-text index on the content field, and the simularity_search method will all using TEXT_ONLY, FILTER_BY_TEXT, FILTER_BY_VECTOR, and WIGHTED_SUM search strategies. If set to False, the simularity_search method will only allow VECTOR_ONLY search strategy. :type use_full_text_search: bool, optional :param pool_size: Determines the number of active connections in the pool. Defaults to 5. :type pool_size: int, optional :param max_overflow: Determines the maximum number of connections allowed beyond the pool_size. Defaults to 10. :type max_overflow: int, optional :param timeout: Specifies the maximum wait time in seconds for establishing a connection. Defaults to 30. :type timeout: float, optional :param Additional optional arguments provide further customization over the: :param database connection: :param pure_python: Toggles the connector mode. If True, operates in pure Python mode. :type pure_python: bool, optional :param local_infile: Allows local file uploads. :type local_infile: bool, optional :param charset: Specifies the character set for string values. :type charset: str, optional :param ssl_key: Specifies the path of the file containing the SSL key. :type ssl_key: str, optional :param ssl_cert: Specifies the path of the file containing the SSL certificate. :type ssl_cert: str, optional :param ssl_ca: Specifies the path of the file containing the SSL certificate authority. :type ssl_ca: str, optional :param ssl_cipher: Sets the SSL cipher list. :type ssl_cipher: str, optional :param ssl_disabled: Disables SSL usage. :type ssl_disabled: bool, optional :param ssl_verify_cert: Verifies the server's certificate. Automatically enabled if ssl_ca is specified. :type ssl_verify_cert: bool, optional :param ssl_verify_identity: Verifies the server's identity. :type ssl_verify_identity: bool, optional :param conv: A dictionary of data conversion functions. :type conv: dict[int, Callable], optional :param credential_type: Specifies the type of authentication to use: auth.PASSWORD, auth.JWT, or auth.BROWSER_SSO. :type credential_type: str, optional :param autocommit: Enables autocommits. :type autocommit: bool, optional :param results_type: Determines the structure of the query results: tuples, namedtuples, dicts. :type results_type: str, optional :param results_format: Deprecated. This option has been renamed to results_type. :type results_format: str, optional.

get_by_ids(ids, /)

通过ID获取文档。

max_marginal_relevance_search(query[, k, ...])

返回使用最大边际相关性选择的文档。

max_marginal_relevance_search_by_vector(...)

返回使用最大边际相关性选择的文档。

search(query, search_type, **kwargs)

使用指定的搜索类型返回与查询最相似的文档。

similarity_search(query[, k, filter, ...])

返回与查询文本最相似的索引文档。

similarity_search_by_vector(embedding[, k])

返回与嵌入向量最相似的文档。

similarity_search_with_relevance_scores(query)

返回文档和相关度分数,范围在[0, 1]之间。

similarity_search_with_score(query[, k, ...])

返回与查询最相似的文档。

__init__(embedding: Embeddings, *, distance_strategy: DistanceStrategy = DistanceStrategy.DOT_PRODUCT, table_name: str = 'embeddings', content_field: str = 'content', metadata_field: str = 'metadata', vector_field: str = 'vector', id_field: str = 'id', use_vector_index: bool = False, vector_index_name: str = '', vector_index_options: dict | None = None, vector_size: int = 1536, use_full_text_search: bool = False, pool_size: int = 5, max_overflow: int = 10, timeout: float = 30, **kwargs: Any)[来源]#

使用必要的组件进行初始化。

Parameters:
  • embedding (Embeddings) – 一个文本嵌入模型。

  • distance_strategy (DistanceStrategy, optional) –

    确定用于计算嵌入空间中向量之间距离的策略。 默认为 DOT_PRODUCT。 可用选项有: - DOT_PRODUCT: 计算两个向量的标量积。

    这是默认行为

    • EUCLIDEAN_DISTANCE: 计算两个向量之间的欧几里得距离。

      此度量考虑了向量空间中的几何距离,可能更适合依赖于空间关系的嵌入。此度量与 WEIGHTED_SUM 搜索策略不兼容。

  • table_name (str, optional) – 指定使用的表的名称。 默认为“embeddings”。

  • content_field (str, optional) – 指定存储内容的字段。 默认为“content”。

  • metadata_field (str, optional) – 指定存储元数据的字段。 默认为“metadata”。

  • vector_field (str, optional) – 指定存储向量的字段。 默认为“vector”。

  • id_field (str, optional) – 指定存储ID的字段。 默认为“id”。

  • use_vector_index (bool, optional) – 切换使用向量索引。 仅适用于 SingleStoreDB 8.5 或更高版本。默认为 False。 如果设置为 True,则需要将 vector_size 参数设置为适当的值。

  • vector_index_name (str, optional) – 指定向量索引的名称。 默认为空。如果 use_vector_index 设置为 False,则此参数将被忽略。

  • vector_index_options (dict, optional) –

    指定向量索引的选项。默认为 {}。 如果 use_vector_index 设置为 False,则此选项将被忽略。选项包括: index_type (str, optional): 指定索引的类型。

    默认为 IVF_PQFS。

    有关更多选项,请参阅 SingleStoreDB 文档: https://docs.singlestore.com/cloud/reference/sql-reference/vector-functions/vector-indexing/

  • vector_size (int, optional) – 指定向量的大小。 默认为1536。如果use_vector_index设置为True,则必须设置。 应设置为与存储在vector_field中的向量大小相同的值。

  • use_full_text_search (bool, optional) – 切换是否在文档内容上使用全文索引。默认为 False。如果设置为 True,表将在内容字段上创建全文索引,并且 simularity_search 方法将允许使用 TEXT_ONLY、FILTER_BY_TEXT、FILTER_BY_VECTOR 和 WIGHTED_SUM 搜索策略。如果设置为 False,simularity_search 方法将仅允许 VECTOR_ONLY 搜索策略。

  • pool (以下参数与连接相关)

  • pool_size (int, optional) – 决定池中活动连接的数量。默认为5。

  • max_overflow (int, optional) – 确定允许超出pool_size的最大连接数。默认为10。

  • timeout (float, optional) – 指定建立连接的最大等待时间(以秒为单位)。默认为30。

  • connection (数据库)

  • host (str, optional) – 指定数据库连接的主机名、IP地址或URL。默认方案是“mysql”。

  • user (str, optional) – 数据库用户名。

  • password (str, optional) – 数据库密码。

  • port (int, optional) – 数据库端口。非HTTP连接默认为3306,HTTP连接默认为80,HTTPS连接默认为443。

  • database (str, optional) – 数据库名称。

  • the (额外的可选参数提供了进一步的定制)

  • 连接

  • pure_python (bool, optional) – 切换连接器模式。如果为True,则在纯Python模式下运行。

  • local_infile (bool, optional) – 允许本地文件上传。

  • charset (str, optional) – 指定字符串值的字符集。

  • ssl_key (str, optional) – 指定包含SSL密钥的文件的路径。

  • ssl_cert (str, optional) – 指定包含SSL证书的文件路径。

  • ssl_ca (str, optional) – 指定包含SSL证书颁发机构的文件路径。

  • ssl_cipher (str, optional) – 设置SSL加密套件列表。

  • ssl_disabled (bool, optional) – 禁用SSL使用。

  • ssl_verify_cert (bool, optional) – 验证服务器的证书。 如果指定了 ssl_ca,则自动启用。

  • ssl_verify_identity (bool, optional) – 验证服务器的身份。

  • conv (dict[int, Callable], optional) – 数据转换函数的字典。

  • credential_type (str, optional) – 指定要使用的认证类型:auth.PASSWORD、auth.JWT 或 auth.BROWSER_SSO。

  • autocommit (bool, optional) – 启用自动提交。

  • results_type (str, optional) – 决定查询结果的结构: 元组、命名元组、字典。

  • results_format (str, optional) – 已弃用。此选项已重命名为 results_type。

  • kwargs (Any)

示例

基本用法:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

vectorstore = SingleStoreDB(
    OpenAIEmbeddings(),
    host="https://user:password@127.0.0.1:3306/database"
)

高级用法:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

vectorstore = SingleStoreDB(
    OpenAIEmbeddings(),
    distance_strategy=DistanceStrategy.EUCLIDEAN_DISTANCE,
    host="127.0.0.1",
    port=3306,
    user="user",
    password="password",
    database="db",
    table_name="my_custom_table",
    pool_size=10,
    timeout=60,
)

使用环境变量:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

os.environ['SINGLESTOREDB_URL'] = 'me:p455w0rd@s2-host.com/my_db'
vectorstore = SingleStoreDB(OpenAIEmbeddings())

使用向量索引:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import SingleStoreDB

os.environ['SINGLESTOREDB_URL'] = 'me:p455w0rd@s2-host.com/my_db'
vectorstore = SingleStoreDB(
    OpenAIEmbeddings(),
    use_vector_index=True,
)

使用全文索引:

async aadd_documents(documents: list[Document], **kwargs: Any) list[str]#

通过嵌入异步运行更多文档并将其添加到向量存储中。

Parameters:
  • documents (list[Document]) – 要添加到向量存储中的文档。

  • kwargs (Any) – 额外的关键字参数。

Returns:

已添加文本的ID列表。

Raises:

ValueError – 如果ID的数量与文档的数量不匹配。

Return type:

列表[字符串]

async aadd_texts(texts: Iterable[str], metadatas: list[dict] | None = None, *, ids: list[str] | None = None, **kwargs: Any) list[str]#

异步运行更多文本通过嵌入并添加到向量存储中。

Parameters:
  • texts (Iterable[str]) – 要添加到向量存储中的字符串的可迭代对象。

  • metadatas (list[dict] | None) – 可选的与文本关联的元数据列表。默认值为 None。

  • ids (list[str] | None) – 可选的列表

  • **kwargs (Any) – 向量存储特定参数。

Returns:

将文本添加到向量存储中后的ID列表。

Raises:
  • ValueError – 如果元数据的数量与文本的数量不匹配。

  • ValueError – 如果id的数量与文本的数量不匹配。

Return type:

列表[字符串]

add_documents(documents: list[Document], **kwargs: Any) list[str]#

在向量存储中添加或更新文档。

Parameters:
  • documents (list[Document]) – 要添加到向量存储中的文档。

  • kwargs (Any) – 额外的关键字参数。 如果 kwargs 包含 ids 并且 documents 也包含 ids, kwargs 中的 ids 将优先。

Returns:

已添加文本的ID列表。

Raises:

ValueError – 如果id的数量与文档的数量不匹配。

Return type:

列表[字符串]

add_images(uris: List[str], metadatas: List[dict] | None = None, embeddings: List[List[float]] | None = None, return_ids: bool = False, **kwargs: Any) List[str][source]#

通过嵌入运行图像并将其添加到向量存储中。

Parameters:
  • List[str] (uris) – 文件路径指向图像。 每个URI将被添加到向量存储中作为文档内容。

  • metadatas (Optional[List[dict]], optional) – 可选的元数据列表。 默认为 None。

  • embeddings (可选[列表[列表[浮点数]]], 可选) – 可选预生成的嵌入。默认为 None。

  • uris (列表[字符串])

  • return_ids (bool)

  • kwargs (Any)

Returns:

添加到向量存储中的文档ID列表

如果return_ids为True。否则,返回一个空列表。

Return type:

列表[str]

add_texts(texts: Iterable[str], metadatas: List[dict] | None = None, embeddings: List[List[float]] | None = None, return_ids: bool = False, **kwargs: Any) List[str][source]#

向向量存储中添加更多文本。

Parameters:
  • texts (Iterable[str]) – 要添加到向量存储中的字符串/文本的可迭代对象。

  • metadatas (Optional[List[dict]], optional) – 可选的元数据列表。 默认为 None。

  • embeddings (可选[列表[列表[浮点数]]], 可选) – 可选预生成的嵌入。默认为 None。

  • return_ids (bool)

  • kwargs (Any)

Returns:

添加到向量存储中的文档ID列表

如果return_ids为True。否则,返回一个空列表。

Return type:

列表[str]

async adelete(ids: list[str] | None = None, **kwargs: Any) bool | None#

通过向量ID或其他条件异步删除。

Parameters:
  • ids (list[str] | None) – 要删除的id列表。如果为None,则删除所有。默认值为None。

  • **kwargs (Any) – 子类可能使用的其他关键字参数。

Returns:

如果删除成功则为真, 否则为假,如果未实现则为无。

Return type:

可选[布尔]

async classmethod afrom_documents(documents: list[Document], embedding: Embeddings, **kwargs: Any) VST#

异步返回从文档和嵌入初始化的VectorStore。

Parameters:
  • documents (list[Document]) – 要添加到向量存储中的文档列表。

  • embedding (Embeddings) – 使用的嵌入函数。

  • kwargs (Any) – 额外的关键字参数。

Returns:

从文档和嵌入初始化的VectorStore。

Return type:

VectorStore

async classmethod afrom_texts(texts: list[str], embedding: Embeddings, metadatas: list[dict] | None = None, *, ids: list[str] | None = None, **kwargs: Any) VST#

异步返回从文本和嵌入初始化的VectorStore。

Parameters:
  • texts (list[str]) – 要添加到向量存储中的文本。

  • embedding (Embeddings) – 使用的嵌入函数。

  • metadatas (list[dict] | None) – 可选的与文本关联的元数据列表。默认值为 None。

  • ids (list[str] | None) – 可选的与文本关联的ID列表。

  • kwargs (Any) – 额外的关键字参数。

Returns:

VectorStore 从文本和嵌入初始化。

Return type:

VectorStore

async aget_by_ids(ids: Sequence[str], /) list[Document]#

通过ID异步获取文档。

返回的文档预计将具有ID字段,该字段设置为向量存储中文档的ID。

如果某些ID未找到或存在重复的ID,返回的文档数量可能少于请求的数量。

用户不应假设返回文档的顺序与输入ID的顺序相匹配。相反,用户应依赖返回文档的ID字段。

如果没有找到某些ID的文档,此方法不应引发异常。

Parameters:

ids (Sequence[str]) – 要检索的ID列表。

Returns:

文档列表。

Return type:

列表[Document]

在版本0.2.11中添加。

异步返回使用最大边际相关性选择的文档。

最大边际相关性优化了与查询的相似性和所选文档之间的多样性。

Parameters:
  • query (str) – 用于查找相似文档的文本。

  • k (int) – 返回的文档数量。默认为4。

  • fetch_k (int) – 要传递给MMR算法的文档数量。 默认值为20。

  • lambda_mult (float) – 介于0和1之间的数字,决定了结果之间的多样性程度,0对应最大多样性,1对应最小多样性。默认值为0.5。

  • kwargs (Any)

Returns:

通过最大边际相关性选择的文档列表。

Return type:

列表[Document]

async amax_marginal_relevance_search_by_vector(embedding: list[float], k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) list[Document]#

异步返回使用最大边际相关性选择的文档。

最大边际相关性优化了与查询的相似性和所选文档之间的多样性。

Parameters:
  • embedding (list[float]) – 用于查找相似文档的嵌入。

  • k (int) – 返回的文档数量。默认为4。

  • fetch_k (int) – 要传递给MMR算法的文档数量。 默认值为20。

  • lambda_mult (float) – 介于0和1之间的数字,决定了结果之间的多样性程度,0对应最大多样性,1对应最小多样性。默认值为0.5。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

通过最大边际相关性选择的文档列表。

Return type:

列表[Document]

as_retriever(**kwargs: Any) VectorStoreRetriever#

返回从此VectorStore初始化的VectorStoreRetriever。

Parameters:

**kwargs (Any) –

传递给搜索函数的关键字参数。 可以包括: search_type (Optional[str]): 定义检索器应执行的搜索类型。 可以是“similarity”(默认)、“mmr”或“similarity_score_threshold”。

检索器应执行的搜索类型。 可以是“similarity”(默认)、“mmr”或“similarity_score_threshold”。

search_kwargs (Optional[Dict]): 传递给搜索函数的关键字参数。
可以包括以下内容:

k: 返回的文档数量(默认:4) score_threshold: 最小相关性阈值

用于similarity_score_threshold

fetch_k: 传递给MMR算法的文档数量

(默认:20)

lambda_mult: MMR返回结果的多样性;

1表示最小多样性,0表示最大多样性。(默认:0.5)

filter: 按文档元数据过滤

Returns:

VectorStore的检索器类。

Return type:

VectorStoreRetriever

示例:

# Retrieve more documents with higher diversity
# Useful if your dataset has many similar documents
docsearch.as_retriever(
    search_type="mmr",
    search_kwargs={'k': 6, 'lambda_mult': 0.25}
)

# Fetch more documents for the MMR algorithm to consider
# But only return the top 5
docsearch.as_retriever(
    search_type="mmr",
    search_kwargs={'k': 5, 'fetch_k': 50}
)

# Only retrieve documents that have a relevance score
# Above a certain threshold
docsearch.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={'score_threshold': 0.8}
)

# Only get the single most similar document from the dataset
docsearch.as_retriever(search_kwargs={'k': 1})

# Use a filter to only retrieve documents from a specific paper
docsearch.as_retriever(
    search_kwargs={'filter': {'paper_title':'GPT-4 Technical Report'}}
)
async asearch(query: str, search_type: str, **kwargs: Any) list[Document]#

异步返回与查询最相似的文档,使用指定的搜索类型。

Parameters:
  • query (str) – 输入文本。

  • search_type (str) – 要执行的搜索类型。可以是“similarity”、“mmr”或“similarity_score_threshold”。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

与查询最相似的文档列表。

Raises:

ValueError – 如果 search_type 不是 “similarity”、“mmr” 或 “similarity_score_threshold” 之一。

Return type:

列表[Document]

异步返回与查询最相似的文档。

Parameters:
  • query (str) – 输入文本。

  • k (int) – 返回的文档数量。默认为4。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

与查询最相似的文档列表。

Return type:

列表[Document]

async asimilarity_search_by_vector(embedding: list[float], k: int = 4, **kwargs: Any) list[Document]#

异步返回与嵌入向量最相似的文档。

Parameters:
  • embedding (list[float]) – 用于查找相似文档的嵌入。

  • k (int) – 返回的文档数量。默认为4。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

与查询向量最相似的文档列表。

Return type:

列表[Document]

async asimilarity_search_with_relevance_scores(query: str, k: int = 4, **kwargs: Any) list[tuple[Document, float]]#

异步返回文档和相关度分数,范围在[0, 1]之间。

0 表示不相似,1 表示最相似。

Parameters:
  • query (str) – 输入文本。

  • k (int) – 返回的文档数量。默认为4。

  • **kwargs (Any) –

    传递给相似性搜索的kwargs。应包括: score_threshold: 可选,一个介于0到1之间的浮点值

    过滤检索到的文档集

Returns:

(文档,相似度分数)的元组列表

Return type:

列表[元组[Document, 浮点数]]

async asimilarity_search_with_score(*args: Any, **kwargs: Any) list[tuple[Document, float]]#

异步运行带有距离的相似性搜索。

Parameters:
  • *args (Any) – 传递给搜索方法的参数。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

(文档, 相似度分数) 的元组列表。

Return type:

列表[元组[Document, 浮点数]]

delete(ids: List[str] | None = None, **kwargs: Any) bool | None[source]#

从向量存储中删除文档。

Parameters:
  • ids (List[str], optional) – 要删除的文档ID列表。 如果为None,将删除所有文档。默认为None。

  • kwargs (Any)

Returns:

如果删除成功则为True,否则为False。

Return type:

布尔

drop() None[source]#

删除表并从向量存储中删除所有数据。 此操作后,向量存储将无法使用。

Return type:

classmethod from_documents(documents: list[Document], embedding: Embeddings, **kwargs: Any) VST#

返回从文档和嵌入初始化的VectorStore。

Parameters:
  • documents (list[Document]) – 要添加到向量存储中的文档列表。

  • embedding (Embeddings) – 使用的嵌入函数。

  • kwargs (Any) – 额外的关键字参数。

Returns:

从文档和嵌入初始化的VectorStore。

Return type:

VectorStore

classmethod from_texts(texts: List[str], embedding: Embeddings, metadatas: List[dict] | None = None, distance_strategy: DistanceStrategy = DistanceStrategy.DOT_PRODUCT, table_name: str = 'embeddings', content_field: str = 'content', metadata_field: str = 'metadata', vector_field: str = 'vector', id_field: str = 'id', use_vector_index: bool = False, vector_index_name: str = '', vector_index_options: dict | None = None, vector_size: int = 1536, use_full_text_search: bool = False, pool_size: int = 5, max_overflow: int = 10, timeout: float = 30, **kwargs: Any) SingleStoreDB[来源]#

从原始文档创建SingleStoreDB向量存储。 这是一个用户友好的界面,它:

  1. 嵌入文档。

  2. 在SingleStoreDB中为嵌入创建一个新表。

  3. 将文档添加到新创建的表中。

这是快速入门的简便方法。 :param texts: 要添加到向量存储的文本列表。 :type texts: List[str] :param embedding: 文本嵌入模型。 :type embedding: Embeddings :param metadatas: 可选的元数据列表。

默认为 None。

Parameters:
  • distance_strategy (DistanceStrategy, optional) –

    确定用于计算嵌入空间中向量之间距离的策略。 默认为 DOT_PRODUCT。 可用选项有: - DOT_PRODUCT: 计算两个向量的标量积。

    这是默认行为

    • EUCLIDEAN_DISTANCE: 计算两个向量之间的欧几里得距离。

      此度量考虑了向量空间中的几何距离,可能更适合依赖于空间关系的嵌入。此度量与 WEIGHTED_SUM 搜索策略不兼容。

  • table_name (str, optional) – 指定使用的表的名称。 默认为“embeddings”。

  • content_field (str, optional) – 指定存储内容的字段。 默认为“content”。

  • metadata_field (str, optional) – 指定存储元数据的字段。 默认为“metadata”。

  • vector_field (str, optional) – 指定存储向量的字段。 默认为“vector”。

  • id_field (str, optional) – 指定存储ID的字段。 默认为“id”。

  • use_vector_index (bool, optional) – 切换使用向量索引。 仅适用于 SingleStoreDB 8.5 或更高版本。默认为 False。 如果设置为 True,则需要将 vector_size 参数设置为适当的值。

  • vector_index_name (str, optional) – 指定向量索引的名称。 默认为空。如果 use_vector_index 设置为 False,则此参数将被忽略。

  • vector_index_options (dict, optional) –

    指定向量索引的选项。默认为 {}。 如果 use_vector_index 设置为 False,则此选项将被忽略。选项包括: index_type (str, optional): 指定索引的类型。

    默认为 IVF_PQFS。

    有关更多选项,请参阅 SingleStoreDB 文档: https://docs.singlestore.com/cloud/reference/sql-reference/vector-functions/vector-indexing/

  • vector_size (int, optional) – 指定向量的大小。 默认为1536。如果use_vector_index设置为True,则必须设置。 应设置为与存储在vector_field中的向量大小相同的值。

  • use_full_text_search (bool, optional) – 切换是否在文档内容上使用全文索引。默认为 False。如果设置为 True,表将在内容字段上创建全文索引,并且 simularity_search 方法将允许使用 TEXT_ONLY、FILTER_BY_TEXT、FILTER_BY_VECTOR 和 WIGHTED_SUM 搜索策略。如果设置为 False,simularity_search 方法将仅允许 VECTOR_ONLY 搜索策略。

  • pool_size (int, optional) – 决定池中活动连接的数量。默认为5。

  • max_overflow (int, optional) – 确定允许超出pool_size的最大连接数。默认为10。

  • timeout (float, optional) – 指定建立连接的最大等待时间(以秒为单位)。默认为30。

  • the (额外的可选参数提供了进一步的定制)

  • connection (数据库)

  • pure_python (bool, optional) – 切换连接器模式。如果为True,则在纯Python模式下运行。

  • local_infile (bool, optional) – 允许本地文件上传。

  • charset (str, optional) – 指定字符串值的字符集。

  • ssl_key (str, optional) – 指定包含SSL密钥的文件的路径。

  • ssl_cert (str, optional) – 指定包含SSL证书的文件路径。

  • ssl_ca (str, optional) – 指定包含SSL证书颁发机构的文件路径。

  • ssl_cipher (str, optional) – 设置SSL加密套件列表。

  • ssl_disabled (bool, optional) – 禁用SSL使用。

  • ssl_verify_cert (bool, optional) – 验证服务器的证书。 如果指定了 ssl_ca,则自动启用。

  • ssl_verify_identity (bool, optional) – 验证服务器的身份。

  • conv (dict[int, Callable], optional) – 数据转换函数的字典。

  • credential_type (str, optional) – 指定要使用的认证类型:auth.PASSWORD、auth.JWT 或 auth.BROWSER_SSO。

  • autocommit (bool, optional) – 启用自动提交。

  • results_type (str, optional) – 决定查询结果的结构: 元组、命名元组、字典。

  • results_format (str, optional) – 已弃用。此选项已重命名为 results_type。

  • 文本 (列表[字符串])

  • embedding (Embeddings)

  • metadatas (可选[列表[字典]], 可选)

  • kwargs (Any)

Return type:

SingleStoreDB

示例

from langchain_community.vectorstores import SingleStoreDB
from langchain_openai import OpenAIEmbeddings

s2 = SingleStoreDB.from_texts(
    texts,
    OpenAIEmbeddings(),
    host="username:password@localhost:3306/database"
)
get_by_ids(ids: Sequence[str], /) list[Document]#

通过ID获取文档。

返回的文档预计将具有ID字段,该字段设置为向量存储中文档的ID。

如果某些ID未找到或存在重复的ID,返回的文档数量可能少于请求的数量。

用户不应假设返回文档的顺序与输入ID的顺序相匹配。相反,用户应依赖返回文档的ID字段。

如果没有找到某些ID的文档,此方法不应引发异常。

Parameters:

ids (Sequence[str]) – 要检索的ID列表。

Returns:

文档列表。

Return type:

列表[Document]

在版本0.2.11中添加。

返回使用最大边际相关性选择的文档。

最大边际相关性优化了与查询的相似性和所选文档之间的多样性。

Parameters:
  • query (str) – 用于查找相似文档的文本。

  • k (int) – 返回的文档数量。默认为4。

  • fetch_k (int) – 要传递给MMR算法的文档数量。 默认值为20。

  • lambda_mult (float) – 介于0和1之间的数字,决定了结果之间的多样性程度,0对应最大多样性,1对应最小多样性。默认值为0.5。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

通过最大边际相关性选择的文档列表。

Return type:

列表[Document]

max_marginal_relevance_search_by_vector(embedding: list[float], k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) list[Document]#

返回使用最大边际相关性选择的文档。

最大边际相关性优化了与查询的相似性和所选文档之间的多样性。

Parameters:
  • embedding (list[float]) – 用于查找相似文档的嵌入。

  • k (int) – 返回的文档数量。默认为4。

  • fetch_k (int) – 要传递给MMR算法的文档数量。 默认值为20。

  • lambda_mult (float) – 介于0和1之间的数字,决定了结果之间的多样性程度,0对应最大多样性,1对应最小多样性。默认值为0.5。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

通过最大边际相关性选择的文档列表。

Return type:

列表[Document]

search(query: str, search_type: str, **kwargs: Any) list[Document]#

使用指定的搜索类型返回与查询最相似的文档。

Parameters:
  • query (str) – 输入文本

  • search_type (str) – 要执行的搜索类型。可以是“similarity”、“mmr”或“similarity_score_threshold”。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

与查询最相似的文档列表。

Raises:

ValueError – 如果 search_type 不是 “similarity”、“mmr” 或 “similarity_score_threshold” 之一。

Return type:

列表[Document]

返回与查询文本最相似的索引文档。

使用余弦相似度。

Parameters:
  • query (str) – 用于查找相似文档的查询文本。

  • k (int) – 返回的文档数量。默认值为4。

  • filter (dict) – 一个包含元数据字段和值的字典,用于过滤。默认值为 None。

  • search_strategy (SearchStrategy) –

    使用的搜索策略。 默认为 SearchStrategy.VECTOR_ONLY。 可用选项有: - SearchStrategy.VECTOR_ONLY: 仅通过向量相似性进行搜索。 - SearchStrategy.TEXT_ONLY: 仅通过文本相似性进行搜索。此

    选项仅在 use_full_text_search 为 True 时可用。

    • SearchStrategy.FILTER_BY_TEXT: 通过文本相似性进行过滤,并

      通过向量相似性进行搜索。此选项仅在 use_full_text_search 为 True 时可用。

    • SearchStrategy.FILTER_BY_VECTOR: 通过向量相似性进行过滤,并

      通过文本相似性进行搜索。此选项仅在 use_full_text_search 为 True 时可用。

    • SearchStrategy.WEIGHTED_SUM: 通过文本和向量相似性的加权和进行搜索。

      此选项仅在 use_full_text_search 为 True 且 distance_strategy 为 DOT_PRODUCT 时可用。

  • filter_threshold (float) – 用于通过文本或向量相似性进行过滤的阈值。默认值为0。此选项仅在search_strategy为SearchStrategy.FILTER_BY_TEXT或SearchStrategy.FILTER_BY_VECTOR时有效。

  • text_weight (float) – 在加权求和搜索策略中文本相似度的权重。默认值为0.5。此选项仅在search_strategy为SearchStrategy.WEIGHTED_SUM时有效。

  • vector_weight (float) – 在加权求和搜索策略中向量相似度的权重。默认值为0.5。此选项仅在search_strategy为SearchStrategy.WEIGHTED_SUM时有效。

  • vector_select_count_multiplier (int) – 使用向量索引时选择向量数量的乘数。默认值为10。 此参数仅在use_vector_index为True且search_strategy为SearchStrategy.WEIGHTED_SUM或SearchStrategy.FILTER_BY_TEXT时有效。 选择的向量数量将为k * vector_select_count_multiplier。 由于向量索引的限制,需要此参数。

  • kwargs (Any)

Returns:

与查询文本最相似的文档列表。

Return type:

列表[Document]

示例

基本用法: .. code-block:: python

从langchain_community.vectorstores导入SingleStoreDB 从langchain_openai导入OpenAIEmbeddings

s2 = SingleStoreDB.from_documents(

文档, OpenAIEmbeddings(), host=”username:password@localhost:3306/database”

) results = s2.similarity_search(“query text”, 1,

{“metadata_field”: “metadata_value”})

不同的搜索策略: .. code-block:: python

从langchain_community.vectorstores导入SingleStoreDB 从langchain_openai导入OpenAIEmbeddings

s2 = SingleStoreDB.from_documents(

文档, OpenAIEmbeddings(), host=”username:password@localhost:3306/database”, use_full_text_search=True, use_vector_index=True,

) results = s2.similarity_search(“query text”, 1,

search_strategy=SingleStoreDB.SearchStrategy.FILTER_BY_TEXT, filter_threshold=0.5)

加权求和搜索策略: .. code-block:: python

从langchain_community.vectorstores导入SingleStoreDB 从langchain_openai导入OpenAIEmbeddings

s2 = SingleStoreDB.from_documents(

文档, OpenAIEmbeddings(), host=”username:password@localhost:3306/database”, use_full_text_search=True, use_vector_index=True,

) results = s2.similarity_search(“query text”, 1,

search_strategy=SingleStoreDB.SearchStrategy.WEIGHTED_SUM, text_weight=0.3, vector_weight=0.7)

similarity_search_by_vector(embedding: list[float], k: int = 4, **kwargs: Any) list[Document]#

返回与嵌入向量最相似的文档。

Parameters:
  • embedding (list[float]) – 用于查找相似文档的嵌入。

  • k (int) – 返回的文档数量。默认为4。

  • **kwargs (Any) – 传递给搜索方法的参数。

Returns:

与查询向量最相似的文档列表。

Return type:

列表[Document]

similarity_search_with_relevance_scores(query: str, k: int = 4, **kwargs: Any) list[tuple[Document, float]]#

返回文档和相关度分数,范围在[0, 1]之间。

0 表示不相似,1 表示最相似。

Parameters:
  • query (str) – 输入文本。

  • k (int) – 返回的文档数量。默认为4。

  • **kwargs (Any) –

    传递给相似性搜索的kwargs。应包括: score_threshold: 可选,一个介于0到1之间的浮点值

    用于过滤检索到的文档集。

Returns:

(文档, 相似度分数) 的元组列表。

Return type:

列表[元组[Document, 浮点数]]

similarity_search_with_score(query: str, k: int = 4, filter: dict | None = None, search_strategy: SearchStrategy = SearchStrategy.VECTOR_ONLY, filter_threshold: float = 1, text_weight: float = 0.5, vector_weight: float = 0.5, vector_select_count_multiplier: int = 10, **kwargs: Any) List[Tuple[Document, float]][source]#

返回与查询最相似的文档。使用余弦相似度。

Parameters:
  • query (str) – 用于查找相似文档的文本。

  • k (int) – 返回的文档数量。默认为4。

  • filter (可选[字典]) – 一个包含元数据字段和值的字典,用于过滤。 默认为 None。

  • search_strategy (SearchStrategy) –

    使用的搜索策略。 默认为 SearchStrategy.VECTOR_ONLY。 可用选项有: - SearchStrategy.VECTOR_ONLY: 仅通过向量相似性进行搜索。 - SearchStrategy.TEXT_ONLY: 仅通过文本相似性进行搜索。此

    选项仅在 use_full_text_search 为 True 时可用。

    • SearchStrategy.FILTER_BY_TEXT: 通过文本相似性进行过滤,并

      通过向量相似性进行搜索。此选项仅在 use_full_text_search 为 True 时可用。

    • SearchStrategy.FILTER_BY_VECTOR: 通过向量相似性进行过滤,并

      通过文本相似性进行搜索。此选项仅在 use_full_text_search 为 True 时可用。

    • SearchStrategy.WEIGHTED_SUM: 通过文本和向量相似性的加权和进行搜索。

      此选项仅在 use_full_text_search 为 True 且 distance_strategy 为 DOT_PRODUCT 时可用。

  • filter_threshold (float) – 用于通过文本或向量相似性进行过滤的阈值。默认值为0。此选项仅在search_strategy为SearchStrategy.FILTER_BY_TEXT或SearchStrategy.FILTER_BY_VECTOR时有效。

  • text_weight (float) – 在加权求和搜索策略中文本相似度的权重。默认值为0.5。此选项仅在search_strategy为SearchStrategy.WEIGHTED_SUM时有效。

  • vector_weight (float) – 在加权求和搜索策略中向量相似度的权重。默认值为0.5。此选项仅在search_strategy为SearchStrategy.WEIGHTED_SUM时有效。

  • vector_select_count_multiplier (int) – 使用向量索引时选择向量数量的乘数。默认值为10。 此参数仅在use_vector_index为True且search_strategy为SearchStrategy.WEIGHTED_SUM或SearchStrategy.FILTER_BY_TEXT时有效。 选择的向量数量将为k * vector_select_count_multiplier。 由于向量索引的限制,需要此参数。

  • kwargs (Any)

Returns:

与查询最相似的文档列表及每个文档的得分。

Raises:

ValueError – 如果搜索策略不支持距离策略。

Return type:

列表[元组[Document, 浮点数]]

示例

基本用法: .. code-block:: python

从langchain_community.vectorstores导入SingleStoreDB 从langchain_openai导入OpenAIEmbeddings

s2 = SingleStoreDB.from_documents(

文档, OpenAIEmbeddings(), host=”username:password@localhost:3306/database”

) results = s2.similarity_search_with_score(“query text”, 1,

{“metadata_field”: “metadata_value”})

不同的搜索策略:

from langchain_community.vectorstores import SingleStoreDB
from langchain_openai import OpenAIEmbeddings

s2 = SingleStoreDB.from_documents(
    docs,
    OpenAIEmbeddings(),
    host="username:password@localhost:3306/database",
    use_full_text_search=True,
    use_vector_index=True,
)
results = s2.similarity_search_with_score("query text", 1,
        search_strategy=SingleStoreDB.SearchStrategy.FILTER_BY_VECTOR,
        filter_threshold=0.5)

加权求和搜索策略: .. code-block:: python

从langchain_community.vectorstores导入SingleStoreDB 从langchain_openai导入OpenAIEmbeddings

s2 = SingleStoreDB.from_documents(

文档, OpenAIEmbeddings(), host=”username:password@localhost:3306/database”, use_full_text_search=True, use_vector_index=True,

) results = s2.similarity_search_with_score(“query text”, 1,

search_strategy=SingleStoreDB.SearchStrategy.WEIGHTED_SUM, text_weight=0.3, vector_weight=0.7)

使用 SingleStoreDB 的示例