langchain_community.vectorstores.myscale.MyScale

class langchain_community.vectorstores.myscale.MyScale(embedding: Embeddings, config: Optional[MyScaleSettings] = None, **kwargs: Any)[source]

MyScale 矢量存储。

需要 clickhouse-connect python 包和一个有效的 MyScale 帐户用于连接。

MyScale 不仅支持使用简单的矢量索引进行搜索,还支持具有多个条件、约束甚至子查询的复杂查询。

更多信息,请访问

[myscale 官方网站](https://docs.myscale.com/en/overview/)

MyScale 包装器到 LangChain

embedding (Embeddings): config (MyScaleSettings): MyScale 客户端的配置,其他关键字参数将传递进去

[clickhouse-connect](https://docs.myscale.com/)

属性

embeddings

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

metadata_column

方法

__init__(embedding[, config])

MyScale 包装器到 LangChain

aadd_documents(documents, **kwargs)

异步通过嵌入器和添加更多文档到矢量存储。

aadd_texts(texts[, metadatas])

异步通过嵌入器和添加更多文本到矢量存储。

add_documents(documents, **kwargs)

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

add_texts(texts[, metadatas, batch_size, ids])

通过嵌入器和添加更多文本到矢量存储。

adelete([ids])

异步通过矢量 ID 或其他标准进行删除。

afrom_documents(documents, embedding, **kwargs)

异步从文档和嵌入初始化的矢量存储。

afrom_texts(texts, embedding[, metadatas])

异步从文本和嵌入初始化的矢量存储。

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, where_str])

通过向量ID或其他标准删除。

drop()

辅助函数:删除数据

escape_str(value)

from_documents(documents, embedding, **kwargs)

从文档和嵌入初始化VectorStore。

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

使用现有文本创建Myscale包装器。

get_by_ids(ids, /)

按ID获取文档。

max_marginal_relevance_search(查询[, k, ...])

使用最大边缘相关性返回选定的文档。

max_marginal_relevance_search_by_vector(...)

使用最大边缘相关性返回选定的文档。

search(查询, 搜索类型, **kwargs)

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

similarity_search(查询[, k, where_str])

使用MyScale执行相似度搜索

similarity_search_by_vector(嵌入[, k, ...])

通过向量使用MyScale执行相似度搜索

similarity_search_with_relevance_scores(查询)

使用MyScale执行相似度搜索

similarity_search_with_score(*args, **kwargs)

使用距离执行相似度搜索。

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

upsert(items, /, **kwargs)

参数
__init__(嵌入: 嵌入, 配置: Optional[MyScaleSettings] = None, **kwargs: 任何) None[source]

MyScale 包装器到 LangChain

embedding (Embeddings): config (MyScaleSettings): MyScale 客户端的配置,其他关键字参数将传递进去

[clickhouse-connect](https://docs.myscale.com/)

参数
返回类型

None

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

异步通过嵌入器和添加更多文档到矢量存储。

参数
  • documents (List[Document]) – 添加到vectorstore的文档。

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

返回值

添加的文本的ID列表。

异常抛出

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

返回类型

List[str]

async aadd_texts(texts: Iterable[str], metadatas: Optional[List[dict]] = None, **kwargs: Any) List[str]

异步通过嵌入器和添加更多文本到矢量存储。

参数
  • texts (Iterable[str]) – 要添加到vectorstore的字符串迭代器。

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

  • **kwargs (Any) – vectorstore特定的参数。

返回值

将文本添加到vectorstore中的ID列表。

异常抛出
  • ValueError – 如果元数据数量与文本数量不匹配。

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

返回类型

List[str]

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

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

参数
  • documents (List[Document]) – 添加到vectorstore的文档。

  • kwargs (任意类型) – 额外的关键字参数。如果kwargs包含ids且文档包含ids,kwargs中的ids将具有优先级。

返回值

添加的文本的ID列表。

异常抛出

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

返回类型

List[str]

add_texts(texts: 可迭代对象[str], metadatas: 可选[列表[字典]] = None, batch_size: int = 32, ids: 可选[可迭代对象[str] = None, **kwargs: 任意类型) 列表[str][源代码]

通过嵌入器和添加更多文本到矢量存储。

参数
  • texts (Iterable[str]) – 要添加到vectorstore的字符串迭代器。

  • ids (可选[str可迭代对象[str]]) – 可选的与文本关联的ids列表。

  • batch_size (int) – 插入的批次大小

  • metadata – 可选的插入的列数据

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

  • kwargs (任何) –

返回值

将文本添加到vectorstore中的ID列表。

返回类型

List[str]

async adelete(ids: 可选[列表[str] = None, **kwargs: 任意类型) 可选[bool]

异步通过矢量 ID 或其他标准进行删除。

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

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

返回值

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

返回类型

可选[bool]

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

异步从文档和嵌入初始化的矢量存储。

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

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

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

返回值

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

返回类型

向量存储

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

异步从文本和嵌入初始化的矢量存储。

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

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

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

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

返回值

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

返回类型

向量存储

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

按ID异步获取文档。

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

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

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

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

参数

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

返回值

文档列表。

返回类型

list[Document]

0.2.11版本中引入。

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

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

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

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

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

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

  • kwargs (任何) –

返回值

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

返回类型

list[Document]

async async 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]

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

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

参数
  • embedding (列表[float]) – 查找类似文档的嵌入。

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

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

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

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

返回值

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

返回类型

list[Document]

as_retriever(**kwargs: Any) VectorStoreRetriever

返回从本VectorStore初始化的VectorStoreRetriever。

参数

**kwargs (Any) –

传递给搜索功能的参数。可以包括:search_type (可选[str]):定义检索器应该执行的有效搜索类型。可以是“similarity”(默认)、“mmr”或“similarity_score_threshold”。

search_kwargs (可选[Dict]):传递给搜索功能的参数。可以包括如

下东西

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

score_threshold:相似度得分的最小相关性阈值

fetch_k:传递给MMR算法的文档数量(默认: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]

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

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

  • search_typestr)– 要执行搜索的类型。可以是“similarity”(相似度)、“mmr”或“similarity_score_threshold”(相似度分数阈值)。

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

返回值

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

异常抛出

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

返回类型

list[Document]

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

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

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

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

返回值

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

返回类型

list[Document]

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

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

参数
  • embedding (列表[float]) – 查找类似文档的嵌入。

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

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

返回值

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

返回类型

list[Document]

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

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

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

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

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

  • **kwargs (Any) –

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

    过滤检索到的文档集

返回值

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

返回类型

类型为 Document 的元组列表[Tuple[Document, float]]

async asimilarity_search_with_score(*args: Any, **kwargs: Any) List[Tuple[Document, float]]

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

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

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

返回值

键(doc,相似度得分)的元组列表。

返回类型

类型为 Document 的元组列表[Tuple[Document, float]]

astreaming_upsert(items: AsyncIterable[Document], /, batch_size: int, **kwargs: Any) AsyncIterator[UpsertResponse]

测试版

自 0.2.11 版本添加。API 可能会更改。

以流式传输的方式添加文档。streaming_upsert 的异步版本。

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

  • batch_size (int) – 要添加的每个批次的文档数量。

  • kwargs (Any) – 附加关键字参数。kwargs 应仅包含所有文档都通用的参数(例如索引的超时时间、重试策略等)。kwargs 不应包含 id 以避免语义混淆。相反,应将 ID 作为文档对象的一部分提供。

产生:

UpsertResponse – 包含已成功添加或更新的 ID 列表和失败添加或更新的 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 (Any) – 额外的关键字参数。

返回值

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

返回类型

UpsertResponse

0.2.11版本中引入。

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

通过向量ID或其他标准删除。

参数
  • ids (Optional[List[str]]) – 要删除的ID列表。

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

  • where_str (Optional[str]) –

  • **kwargs

返回值

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

返回类型

可选[bool]

drop() None[source]

辅助函数:删除数据

返回类型

None

escape_str(value: str) str[源代码]
参数

valuestr) –

返回类型

字符串

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

从文档和嵌入初始化VectorStore。

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

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

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

返回值

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

返回类型

向量存储

classmethod from_texts(texts: 可迭代对象[str], embedding: Embeddings, metadatas: 可选的[List[Dict[Any, Any]] = None, config: 可选的[MyScaleSettings] = None, text_ids: 可选的[可迭代对象[str] = None, batch_size: int = 32, **kwargs: Any) MyScale[source]

使用现有文本创建Myscale包装器。

参数
  • texts (可迭代对象[str]) – 要添加的字符串列表或元组

  • embedding (Embeddings) – 提取文本嵌入的函数

  • config (MyScaleSettings, 可选) – Myscale 配置

  • text_ids (可选的[可迭代对象], 可选) – 文本的 IDs。默认为 None。

  • batch_size (int, 可选) – 将数据传输到 MyScale 的批大小。默认为 32。

  • metadata (列表[dict], 可选) – 文本的元数据。默认为 None。

  • 传入 (其他关键参数将通过传递) – [clickhouse-connect](https://clickhouse.ac.cn/docs/zh-CN/integrations/python#clickhouse-connect-driver-api)

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

  • kwargs (任何) –

返回值

MyScale 索引

返回类型

MyScale

get_by_ids(ids: 字符串序列], /) 文档列表[Document]

按ID获取文档。

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

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

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

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

参数

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

返回值

文档列表。

返回类型

list[Document]

0.2.11版本中引入。

使用最大边缘相关性返回选定的文档。

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

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

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

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

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

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

返回值

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

返回类型

list[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]

使用最大边缘相关性返回选定的文档。

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

参数
  • embedding (列表[float]) – 查找类似文档的嵌入。

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

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

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

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

返回值

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

返回类型

list[Document]

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

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

参数
  • query (字符串) – 输入文本

  • search_typestr)– 要执行搜索的类型。可以是“similarity”(相似度)、“mmr”或“similarity_score_threshold”(相似度分数阈值)。

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

返回值

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

异常抛出

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

返回类型

list[Document]

使用MyScale执行相似度搜索

参数
  • query (str) – 查询字符串

  • k (int, 可选) – 获取的前 K 个邻居。默认值为 4。

  • where_str (可选[str], 可选) – where 条件字符串。默认值为 None。

  • 注意事项 – 请不要让最终用户填写此内容,并且始终警惕 SQL 注入。处理元数据时,请记住使用 {self.metadata_column}.attribute,而不是单独使用 attribute。其默认名称为 metadata

  • kwargs (任何) –

返回值

文档列表

返回类型

list[Document]

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

通过向量使用MyScale执行相似度搜索

参数
  • query (str) – 查询字符串

  • k (int, 可选) – 获取的前 K 个邻居。默认值为 4。

  • where_str (可选[str], 可选) – where 条件字符串。默认值为 None。

  • 注意事项 – 请不要让最终用户填写此内容,并且始终警惕 SQL 注入。处理元数据时,请记住使用 {self.metadata_column}.attribute,而不是单独使用 attribute。其默认名称为 metadata

  • embedding (列表[float]) –

  • kwargs (任何) –

返回值

(Document, similarity) 列表

返回类型

list[Document]

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

使用MyScale执行相似度搜索

参数
  • query (str) – 查询字符串

  • k (int, 可选) – 获取的前 K 个邻居。默认值为 4。

  • where_str (可选[str], 可选) – where 条件字符串。默认值为 None。

  • 注意事项 – 请不要让最终用户填写此内容,并且始终警惕 SQL 注入。处理元数据时,请记住使用 {self.metadata_column}.attribute,而不是单独使用 attribute。其默认名称为 metadata

  • kwargs (任何) –

返回值

获取与查询文本最相似的文档列表,每个文档与查询文本的余弦距离都为float。得分越低表示越相似。

返回类型

list[Document]

similarity_search_with_score(*args: Any, **kwargs: Any) List[Tuple[Document, float]]

使用距离执行相似度搜索。

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

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

返回值

键(doc,相似度得分)的元组列表。

返回类型

类型为 Document 的元组列表[Tuple[Document, float]]

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

测试版

自 0.2.11 版本添加。API 可能会更改。

以流式方式更新文档。

参数
  • items (可迭代[文档]) – 要添加到向量存储库的文档的可迭代集合。

  • batch_size (int) – 要添加的每个批次的文档数量。

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

产生:

UpsertResponse – 包含已成功添加或更新的 ID 列表和失败添加或更新的 ID 列表的响应对象。

返回类型

迭代器[UpsertResponse]

0.2.11版本中引入。

upsert(items: 序列[Document], /, **kwargs: 任何) UpsertResponse

测试版

自 0.2.11 版本添加。API 可能会更改。

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

如果提供,upsert功能应利用Document对象的ID字段。如果未提供ID,upsert方法可以自由地为文档生成一个ID。

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

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

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

返回值

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

返回类型

UpsertResponse

0.2.11版本中引入。

使用 MyScale 的实例