langchain_community.vectorstores.tencentvectordb.TencentVectorDB

class langchain_community.vectorstores.tencentvectordb.TencentVectorDB(embedding: ~langchain_core.embeddings.embeddings.Embeddings, connection_params: ~langchain_community.vectorstores.tencentvectordb.ConnectionParams, index_params: ~langchain_community.vectorstores.tencentvectordb.IndexParams = <langchain_community.vectorstores.tencentvectordb.IndexParams object>, database_name: str = 'LangChainDatabase', collection_name: str = 'LangChainCollection', drop_old: ~typing.Optional[bool] = False, collection_description: ~typing.Optional[str] = 'Collection for LangChain', meta_fields: ~typing.Optional[~typing.List[~langchain_community.vectorstores.tencentvectordb.MetaField]] = None, t_vdb_embedding: ~typing.Optional[str] = 'bge-base-zh')[source]

腾讯向量DB作为向量存储。

要使用此功能,您需要一个数据库实例。有关详细信息,请参阅以下文档:https://cloud.tencent.com/document/product/1709/94951

属性

embeddings

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

field_id

field_metadata

field_text

field_vector

方法

__init__(embedding, connection_params[, ...])

aadd_documents(documents, **kwargs)

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

aadd_texts(texts[, metadatas])

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

add_documents(documents, **kwargs)

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

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

将文本数据插入腾讯向量DB。

adelete([ids])

异步根据向量ID或其他标准删除。

afrom_documents(documents, embedding, **kwargs)

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

afrom_texts(texts, embedding[, metadatas])

异步返回从文本和嵌入中初始化的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)

异步运行具有距离的相似度搜索。

astreaming_upsert(items, /, batch_size, **kwargs)

aupsert(items, /, **kwargs)

delete([ids, filter_expr])

从集合中删除文档。

from_documents(documents, embedding, **kwargs)

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

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

创建一个集合,使用HNSW索引它并插入数据。

get_by_ids(ids, /)

通过ID获取文档。

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

执行搜索并返回按MMR重新排序的结果。

通过向量的max_marginal_relevance_search(...)

执行搜索并返回按MMR重新排序的结果。

search(query, search_type, **kwargs)

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

similarity_search(query[, k, param, expr, ...])

对查询字符串进行相似性搜索。

similarity_search_by_vector(embedding[, k, ...])

对查询字符串进行相似性搜索。

similarity_search_with_relevance_scores(query)

返回范围在[0, 1]内的文档和相关性分数。

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

对查询字符串进行搜索并返回带有分数的结果。

similarity_search_with_score_by_vector(embedding)

对查询字符串进行搜索并返回带有分数的结果。

streaming_upsert(items, /, batch_size, **kwargs)

upsert(items, /, **kwargs)

参数
  • embedding (Embeddings) –

  • connection_params (ConnectionParams) –

  • index_params (IndexParams) –

  • database_name (str) –

  • collection_name (str) –

  • drop_old (Optional[bool]) –

  • collection_description (Optional[str]) –

  • meta_fields (可选["List["MetaField]"]) –

  • t_vdb_embedding (可选["str]) –

__init__(embedding: ~langchain_core.embeddings.embeddings.Embeddings, connection_params: ~langchain_community.vectorstores.tencentvectordb.ConnectionParams, index_params: ~langchain_community.vectorstores.tencentvectordb.IndexParams = <langchain_community.vectorstores.tencentvectordb.IndexParams object>, database_name: str = 'LangChainDatabase', collection_name: str = 'LangChainCollection', drop_old: ~typing.Optional[bool] = False, collection_description: ~typing.Optional[str] = 'Collection for LangChain', meta_fields: ~typing.Optional[~typing.List[~langchain_community.vectorstores.tencentvectordb.MetaField]] = None, t_vdb_embedding: ~typing.Optional[str] = 'bge-base-zh')[source]
参数
  • embedding (Embeddings) –

  • connection_params (ConnectionParams) –

  • index_params (IndexParams) –

  • database_name (str) –

  • collection_name (str) –

  • drop_old (Optional[bool]) –

  • collection_description (Optional[str]) –

  • meta_fields (可选["List["MetaField]"]) –

  • t_vdb_embedding (可选["str]) –

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

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

参数
  • documents (列表["Document]") – 需要添加到向量数据库的文档。

  • kwargs (任意) – 其他关键参数。

返回值

添加文本的ID列表。

引发

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

返回类型

列表[str]

async aadd_texts(texts: 可迭代[str], metadatas: Optional[列表[dict]] = None, **kwargs: 任何类型) 列表[str]

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

参数
  • texts (可迭代[str]) – 要添加到向量数据库的可迭代字符串列表。

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

  • **kwargs (任何类型) – 向量数据库特定的参数。

返回值

将文本添加到向量数据库时返回的id列表。

引发
  • ValueError – 如果元数据的数量不匹配文本的数量。

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

返回类型

列表[str]

add_documents(documents: 列表[Document], **kwargs: 任何类型) 列表[str]

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

参数
  • documents (列表["Document]") – 需要添加到向量数据库的文档。

  • kwargs (任何类型) – 扩展关键字参数。如果kwargs包含id且文档包含id,kwargs中的id将具有优先权。

返回值

添加文本的ID列表。

引发

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

返回类型

列表[str]

add_texts(texts: Iterable[str], metadatas: Optional[List[dict]] = None, timeout: Optional[int] = None, batch_size: int = 1000, ids: Optional[List[str]] = None, **kwargs: Any) List[str][source]

将文本数据插入腾讯向量DB。

参数
  • texts (可迭代对象[str]) –

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

  • timeout (可选[int]) –

  • batch_size (int) –

  • ids (可选[列表[str]]) –

  • kwargs (Any) –

返回类型

列表[str]

异步adelete(ids: Optional[List[str]] = None, **kwargs: Any) Optional[bool]

异步根据向量ID或其他标准删除。

参数
  • ids (可选[列表[str]]) – 要删除的ID列表。如果为None,则删除全部。默认为None。

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

返回值

如果删除成功则返回True,否则返回False,如果未实现则返回None。

返回类型

Optional[bool]

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

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

参数
  • documents (List[Document]) – 要添加到向量存储的文档列表。

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

  • kwargs (任意) – 其他关键参数。

返回值

从文档和嵌入初始化的向量存储。

返回类型

向量存储

async classmethod afrom_texts(texts: List[str], embedding: Embeddings, metadatas: Optional[List[dict] = None, **kwargs: Any) VST

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

参数
  • texts (List[str]) – 要添加到向量存储的文本列表。

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

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

  • kwargs (任意) – 其他关键参数。

返回值

从文本和嵌入初始化的向量存储。

返回类型

向量存储

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

异步通过ID获取文档。

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

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

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

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

参数

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

返回值

文档列表。

返回类型

列表[文档]

新增于版本0.2.11。

异步返回使用最大边缘相关选择的最匹配文档。

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

参数
  • query (str) – 查找与类似文本的文档。

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

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

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

  • kwargs (Any) –

返回值

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

返回类型

列表[文档]

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

异步返回使用最大边缘相关选择的最匹配文档。

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

参数
  • embedding (List[float]) – 要查找的相似文档的嵌入。

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

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

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

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

返回值

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

返回类型

列表[文档]

as_retriever(**kwargs: Any) VectorStoreRetriever

返回从VectorStore初始化的VectorStoreRetriever。

参数

**kwargs (Any) –

关键字参数传递到搜索函数。可以包括:search_type (可选[str]):定义检索器应执行的类型。

可以是被搜索”similarity”(默认),”mmr”或”similarity_score_threshold”。

search_kwargs (可选[Dict]):传递到搜索函数的关键字参数。可以包括如下内容:
search_kwargs (可选[Dict]):关键词参数传递到搜索函数。可以包含以下内容:

k:返回的文档数量(默认:4)

score_threshold:相关性分数最小阈值(仅对于相似度分数阈值有效)

fetch_k:传递给MMR算法的文档数量(默认:20)

(默认: 20)

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

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

filter:根据文档元数据进行过滤

返回值

VectorStore的检索器类。

返回类型

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]

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

参数
  • 查询 (字符串) – 输入文本。

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

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

返回值

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

引发

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

返回类型

列表[文档]

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

参数
  • 查询 (字符串) – 输入文本。

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

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

返回值

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

返回类型

列表[文档]

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

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

参数
  • embedding (List[float]) – 要查找的相似文档的嵌入。

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

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

返回值

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

返回类型

列表[文档]

async asimilarity_search_with_relevance_scores(query: str, k: int = 4, **kwargs: Any) List[Tuple[Document, float]]

异步返回范围为[0, 1]的文档和相关性评分。

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

参数
  • 查询 (字符串) – 输入文本。

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

  • **kwargs (Any) –

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

    过滤检索到的文档集

返回值

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

返回类型

列表[元组[文档, 浮点型]]

async asimilarity_search_with_score(*args: 任何, **kwargs: 任何) 列表[元组[文档, 浮点型]]

异步运行具有距离的相似度搜索。

参数
  • *args (任何) – 传递给搜索方法的参数。

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

返回值

包含(doc, 相似度评分)元组的列表。

返回类型

列表[元组[文档, 浮点型]]

astreaming_upsert(items: AsyncIterable[文档], /, batch_size: int, **kwargs: 任何) AsyncIterator[UpsertResponse]

测试版

在0.2.11版本中添加。API可能会有变化。

以流的形式更新文档。streaming_upsert的异步版本。

参数
  • items (AsyncIterable[文档]) – 要添加到向量存储中的文档的迭代器。

  • batch_size (int) – 批量更新的大小。

  • kwargs (任何) – 额外的关键字参数。kwargs应只包含所有文档都有的参数(例如,索引的超时时间、重试策略等)。kwargs不应包含id以避免语义不清。相反,ID应作为Document对象的一部分提供。

生成yield

UpsertResponse – 包含在向量存储中成功添加或更新以及在添加或更新时失败的ID的响应对象。

返回类型

AsyncIterator[UpsertResponse]

新增于版本0.2.11。

async aupsert(items: Sequence[Document], /, **kwargs: Any) UpsertResponse

测试版

在0.2.11版本中添加。API可能会有变化。

向向量存储中添加或更新文档。upsert的异步版本。

upsert功能应使用Document对象的ID字段,如果提供了该字段。如果没有提供ID,upsert方法可以为文档生成一个ID。

当指定ID且文档已存在于向量存储中时,upsert方法应使用新数据更新该文档。如果文档不存在,upsert方法应将该文档添加到向量存储中。

参数
  • items (Sequence[Document]) – 要添加到向量存储中的文档序列。

  • kwargs (任意) – 其他关键参数。

返回值

包含成功添加或更新到向量存储中的ID列表以及未能添加或更新的ID列表的响应对象。

返回类型

UpsertResponse

新增于版本0.2.11。

delete(ids: Optional[List[str]], filter_expr: Optional[str], **kwargs: Any) Optional[bool]

从集合中删除文档。

参数
  • ids (可选[列表[str]]) –

  • filter_expr (Optional[str]) –

  • kwargs (Any) –

返回类型

Optional[bool]

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

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

参数
  • documents (List[Document]) – 要添加到向量存储的文档列表。

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

  • kwargs (任意) – 其他关键参数。

返回值

从文档和嵌入初始化的向量存储。

返回类型

向量存储

classmethod from_texts(texts: List[str], embedding: Embeddings, metadatas: Optional[List[dict]] = None, connection_params: Optional[ConnectionParams] = None, index_params: Optional[IndexParams] = None, database_name: str = 'LangChainDatabase', collection_name: str = 'LangChainCollection', drop_old: Optional[bool] = False, collection_description: Optional[str] = 'Collection for LangChain', meta_fields: Optional[List[MetaField]] = None, t_vdb_embedding: Optional[str] = 'bge-base-zh', **kwargs: Any) TencentVectorDB[source]

创建一个集合,使用HNSW索引它并插入数据。

参数
  • texts (字符串列表[str]) –

  • embedding (Embeddings) –

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

  • connection_params (可选[ConnectionParams]) –

  • index_params (可选[IndexParams]) –

  • database_name (str) –

  • collection_name (str) –

  • drop_old (Optional[bool]) –

  • collection_description (Optional[str]) –

  • meta_fields (可选["List["MetaField]"]) –

  • t_vdb_embedding (可选["str]) –

  • kwargs (Any) –

返回类型

TencentVectorDB

get_by_ids(ids: 序列[str], /) 文档列表[Document]

通过ID获取文档。

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

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

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

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

参数

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

返回值

文档列表。

返回类型

列表[文档]

新增于版本0.2.11。

执行搜索并返回按MMR重新排序的结果。

参数
  • query (str) –

  • k (int) –

  • fetch_k (int) –

  • lambda_mult (float) –

  • param (Optional[dict]) –

  • expr (Optional[str]) –

  • timeout (可选[int]) –

  • kwargs (Any) –

返回类型

Document 列表

max_marginal_relevance_search_by_vector(embedding: list[float], k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, param: Optional[dict] = None, expr: Optional[str] = None, filter: Optional[str] = None, timeout: Optional[int] = None, **kwargs: Any) List[Document][source]

执行搜索并返回按MMR重新排序的结果。

参数
  • embedding (list[float]) –

  • k (int) –

  • fetch_k (int) –

  • lambda_mult (float) –

  • param (Optional[dict]) –

  • expr (Optional[str]) –

  • filter (Optional[str]) –

  • timeout (可选[int]) –

  • kwargs (Any) –

返回类型

Document 列表

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

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

参数
  • query (str) – 输入文本

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

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

返回值

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

引发

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

返回类型

列表[文档]

对查询字符串进行相似性搜索。

参数
  • query (str) –

  • k (int) –

  • param (Optional[dict]) –

  • expr (Optional[str]) –

  • timeout (可选[int]) –

  • kwargs (Any) –

返回类型

Document 列表

similarity_search_by_vector(embedding: List[float], k: int = 4, param: Optional[dict] = None, expr: Optional[str] = None, timeout: Optional[int] = None, **kwargs: Any) List[Document][source]

对查询字符串进行相似性搜索。

参数
  • embedding (float 列表) –

  • k (int) –

  • param (Optional[dict]) –

  • expr (Optional[str]) –

  • timeout (可选[int]) –

  • kwargs (Any) –

返回类型

Document 列表

similarity_search_with_relevance_scores(query: str, k: int = 4, **kwargs: Any) List[Tuple[Document, float]]

返回范围在[0, 1]内的文档和相关性分数。

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

参数
  • 查询 (字符串) – 输入文本。

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

  • **kwargs (Any) –

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

    过滤检索到的文档集。

返回值

包含(doc, 相似度评分)元组的列表。

返回类型

列表[元组[文档, 浮点型]]

similarity_search_with_score(query: str, k: int = 4, param: Optional[dict] = None, expr: Optional[str] = None, timeout: Optional[int] = None, **kwargs: Any) List[Tuple[Document, float]][source]

对查询字符串进行搜索并返回带有分数的结果。

参数
  • query (str) –

  • k (int) –

  • param (Optional[dict]) –

  • expr (Optional[str]) –

  • timeout (可选[int]) –

  • kwargs (Any) –

返回类型

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

similarity_search_with_score_by_vectorembedding: List[float]k: int = 4param: Optional[dict] = Noneexpr: Optional[str] = Nonefilter: Optional[str] = Nonetimeout: Optional[int] = Nonequery: Optional[str] = None**kwargs: Any List[Tuple[Document, float]][source]

对查询字符串进行搜索并返回带有分数的结果。

参数
  • embedding (float 列表) –

  • k (int) –

  • param (Optional[dict]) –

  • expr (Optional[str]) –

  • filter (Optional[str]) –

  • timeout (可选[int]) –

  • query可选

  • kwargs (Any) –

返回类型

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

streaming_upsert(items: Iterable[Document], /, batch_size: int, **kwargs: Any) Iterator[UpsertResponse]

测试版

在0.2.11版本中添加。API可能会有变化。

以流式方式插入文档。

参数
  • items (Iterable[Document]) – 要添加到向量存储的文档的集合。

  • batch_size (int) – 批量更新的大小。

  • kwargs (Any) – 扩展关键字参数。kwargs应仅包含所有文档共有的参数。(例如,索引超时,重试策略等。)kwargs不应包含ID以避免模糊语义。相反,ID应作为文档对象的一部分提供。

生成yield

UpsertResponse – 包含在向量存储中成功添加或更新以及在添加或更新时失败的ID的响应对象。

返回类型

Iterator[UpsertResponse]

新增于版本0.2.11。

upsert(items: Sequence[Document], /, **kwargs: Any) UpsertResponse

测试版

在0.2.11版本中添加。API可能会有变化。

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

upsert功能应使用Document对象的ID字段,如果提供了该字段。如果没有提供ID,upsert方法可以为文档生成一个ID。

当指定ID且文档已存在于向量存储中时,upsert方法应使用新数据更新该文档。如果文档不存在,upsert方法应将该文档添加到向量存储中。

参数
  • items (Sequence[Document]) – 要添加到向量存储中的文档序列。

  • kwargs (任意) – 其他关键参数。

返回值

包含成功添加或更新到向量存储中的ID列表以及未能添加或更新的ID列表的响应对象。

返回类型

UpsertResponse

新增于版本0.2.11。

使用TencentVectorDB的示例