Source code for langchain_community.vectorstores.docarray.in_memory
"""封装了内存存储。"""
from __future__ import annotations
from typing import Any, Dict, List, Literal, Optional
from langchain_core.embeddings import Embeddings
from langchain_community.vectorstores.docarray.base import (
DocArrayIndex,
_check_docarray_import,
)
[docs]class DocArrayInMemorySearch(DocArrayIndex):
"""内存中的`DocArray`存储用于精确搜索。
要使用它,您应该安装版本>=0.32.0的``docarray``包。
您可以使用`pip install "langchain[docarray]"`进行安装。"""
[docs] @classmethod
def from_params(
cls,
embedding: Embeddings,
metric: Literal[
"cosine_sim", "euclidian_dist", "sgeuclidean_dist"
] = "cosine_sim",
**kwargs: Any,
) -> DocArrayInMemorySearch:
"""初始化DocArrayInMemorySearch存储。
参数:
embedding(Embeddings):嵌入函数。
metric(str):用于精确最近邻搜索的度量标准。
可以是以下之一:"cosine_sim"、"euclidean_dist"和"sqeuclidean_dist"。
默认为"cosine_sim"。
**kwargs:要传递给get_doc_cls方法的其他关键字参数。
"""
_check_docarray_import()
from docarray.index import InMemoryExactNNIndex
doc_cls = cls._get_doc_cls(space=metric, **kwargs)
doc_index = InMemoryExactNNIndex[doc_cls]() # type: ignore
return cls(doc_index, embedding)
[docs] @classmethod
def from_texts(
cls,
texts: List[str],
embedding: Embeddings,
metadatas: Optional[List[Dict[Any, Any]]] = None,
**kwargs: Any,
) -> DocArrayInMemorySearch:
"""创建一个DocArrayInMemorySearch存储并插入数据。
参数:
texts (List[str]): 文本数据。
embedding (Embeddings): 嵌入函数。
metadatas (Optional[List[Dict[Any, Any]]]): 每个文本的元数据(如果存在)。
默认为None。
metric (str): 精确最近邻搜索的度量标准。
可以是以下之一: "cosine_sim", "euclidean_dist" 和 "sqeuclidean_dist"。
默认为"cosine_sim"。
返回:
DocArrayInMemorySearch向量存储。
"""
store = cls.from_params(embedding, **kwargs)
store.add_texts(texts=texts, metadatas=metadatas)
return store