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, ...])按最大边际相关性异步返回选择的文档。
按最大边际相关性异步返回选择的文档。
as_retriever
(**kwargs)返回从本VectorStore初始化的VectorStoreRetriever。
asearch
(query, search_type, **kwargs)按指定搜索类型异步返回与查询最相似的文档。
asimilarity_search
(query[, k])异步返回与查询最相似的文档。
asimilarity_search_by_vector
(embedding[, k])异步返回与嵌入向量最相似的文档。
异步返回范围在[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, ...])使用最大边缘相关性返回选定的文档。
使用最大边缘相关性返回选定的文档。
search
(查询, 搜索类型, **kwargs)使用指定的搜索类型返回与查询最相似的文档。
similarity_search
(查询[, k, where_str])使用MyScale执行相似度搜索
similarity_search_by_vector
(嵌入[, k, ...])通过向量使用MyScale执行相似度搜索
使用MyScale执行相似度搜索
similarity_search_with_score
(*args, **kwargs)使用距离执行相似度搜索。
streaming_upsert
(items, /, batch_size, **kwargs)upsert
(items, /, **kwargs)- 参数
嵌入 (嵌入) –
配置 (可选[MyScaleSettings]) –
kwargs (任何) –
- __init__(嵌入: 嵌入, 配置: Optional[MyScaleSettings] = None, **kwargs: 任何) None [source]¶
MyScale 包装器到 LangChain
embedding (Embeddings): config (MyScaleSettings): MyScale 客户端的配置,其他关键字参数将传递进去
[clickhouse-connect](https://docs.myscale.com/)
- 参数
嵌入 (嵌入) –
配置 (可选[MyScaleSettings]) –
kwargs (任何) –
- 返回类型
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版本中引入。
- async amax_marginal_relevance_search(query: str, k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) List[Document]¶
按最大边际相关性异步返回选择的文档。
最大边际相关性优化查询相似性和所选文档之间的多样性。
- 参数
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的检索器类。
- 返回类型
示例
# 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_type (str)– 要执行搜索的类型。可以是“similarity”(相似度)、“mmr”或“similarity_score_threshold”(相似度分数阈值)。
**kwargs (Any) – 需要传递给搜索方法的参数。
- 返回值
包含与查询最相似的文档列表。
- 异常抛出
ValueError – 如果search_type不是“similarity”,“mmr”或“similarity_score_threshold”之一。
- 返回类型
list[Document]
- async asimilarity_search(query: str, k: int = 4, **kwargs: Any) 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列表的响应对象。
- 返回类型
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]
- 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 索引
- 返回类型
- get_by_ids(ids: 字符串序列], /) 文档列表[Document] ¶
按ID获取文档。
返回的文档预计都将具有ID字段,该字段设置为向量存储中文档的ID。
如果某些ID未找到或存在重复的ID,返回的文档可能少于请求的数量。
用户不应假设返回的文档顺序与输入ID的顺序相同。相反,用户应依赖于返回文档的ID字段。
如果有些ID没有找到对应的文档,此方法不应该抛出异常。
- 参数
ids (str序列[]) – 要检索的ID列表。
- 返回值
文档列表。
- 返回类型
list[Document]
0.2.11版本中引入。
- max_marginal_relevance_search(query: 字符串, k: 整数 = 4, fetch_k: 整数 = 20, lambda_mult: 浮点数 = 0.5, **kwargs: 任意) 文档列表[Document] ¶
使用最大边缘相关性返回选定的文档。
最大边际相关性优化查询相似性和所选文档之间的多样性。
- 参数
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_type (str)– 要执行搜索的类型。可以是“similarity”(相似度)、“mmr”或“similarity_score_threshold”(相似度分数阈值)。
**kwargs (Any) – 需要传递给搜索方法的参数。
- 返回值
包含与查询最相似的文档列表。
- 异常抛出
ValueError – 如果search_type不是“similarity”,“mmr”或“similarity_score_threshold”之一。
- 返回类型
list[Document]
- similarity_search(query: str, 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。
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列表的响应对象。
- 返回类型
0.2.11版本中引入。