跳到主要内容

agentchat.contrib.vectordb.chromadb

ChromaVectorDB

class ChromaVectorDB(VectorDB)

一个使用ChromaDB作为后端的向量数据库。

__init__

def __init__(*,
client=None,
path: str = "tmp/db",
embedding_function: Callable = None,
metadata: dict = None,
**kwargs) -> None

初始化向量数据库。

参数:

  • client - chromadb.Client | 向量数据库的客户端对象。默认为 None。 如果提供了,它将直接使用该客户端对象并忽略其他参数。
  • path - str | 向量数据库的路径。默认为 tmp/db。在版本 <=0.2.24 中,默认值为 None
  • embedding_function - Callable | 用于生成文档向量表示的嵌入函数。默认值为None,将使用SentenceTransformerEmbeddingFunction("all-MiniLM-L6-v2")。
  • metadata - dict | 向量数据库的元数据。默认值为 None。如果为 None,将使用此
  • setting - {"hnsw:space": "ip", "hnsw:construction_ef": 30, "hnsw:M": 32}。有关元数据的更多详细信息,请参阅 distanceshnsw, 和 ALGO_PARAMS
  • kwargs - dict | 额外的关键字参数。

返回:

创建集合

def create_collection(collection_name: str,
overwrite: bool = False,
get_or_create: bool = True) -> Collection

在向量数据库中创建一个集合。 情况1. 如果集合不存在,则创建该集合。 情况2. 如果集合存在且overwrite为True,则会覆盖该集合。 情况3. 如果集合存在且overwrite为False,若get_or_create为True,则会获取该集合, 否则会引发ValueError。

参数:

  • collection_name - str | 集合的名称。
  • overwrite - bool | 如果集合存在,是否覆盖它。默认值为 False。
  • get_or_create - bool | 是否在集合存在时获取它。默认值为 True。

返回:

集合 | 集合对象。

get_collection

def get_collection(collection_name: str = None) -> Collection

从向量数据库中获取集合。

参数:

  • collection_name - str | 集合的名称。默认为 None。如果为 None,则返回当前活动的集合。

返回:

集合 | 集合对象。

delete_collection

def delete_collection(collection_name: str) -> None

从向量数据库中删除集合。

参数:

  • collection_name - str | 集合的名称。

返回:

insert_docs

def insert_docs(docs: List[Document],
collection_name: str = None,
upsert: bool = False) -> None

将文档插入到向量数据库的集合中。

参数:

  • docs - List[Document] | 一个文档列表。每个文档都是一个TypedDict Document
  • collection_name - str | 集合的名称。默认值为 None。
  • upsert - bool | 如果文档存在,是否更新。默认为False。
  • kwargs - Dict | 额外的关键字参数。

返回:

更新文档

def update_docs(docs: List[Document], collection_name: str = None) -> None

更新向量数据库集合中的文档。

参数:

  • docs - List[Document] | 文档列表。
  • collection_name - str | 集合的名称。默认值为 None。

返回:

删除文档

def delete_docs(ids: List[ItemID],
collection_name: str = None,
**kwargs) -> None

从向量数据库的集合中删除文档。

参数:

  • ids - List[ItemID] | 文档ID列表。每个ID都是类型化的ItemID
  • collection_name - str | 集合的名称。默认值为 None。
  • kwargs - Dict | 额外的关键字参数。

返回:

retrieve_docs

def retrieve_docs(queries: List[str],
collection_name: str = None,
n_results: int = 10,
distance_threshold: float = -1,
**kwargs) -> QueryResults

根据查询从向量数据库的集合中检索文档。

参数:

  • queries - List[str] | 查询列表。每个查询是一个字符串。
  • collection_name - str | 集合的名称。默认值为 None。
  • n_results - int | 返回的相关文档数量。默认值为10。
  • distance_threshold - float | 距离分数的阈值,只有小于该值的距离才会返回。如果小于0则不使用此过滤,默认值为-1。
  • kwargs - Dict | 额外的关键字参数。

返回:

QueryResults | 查询结果。每个查询结果是一个元组列表的列表,包含文档及其距离。

get_docs_by_ids

def get_docs_by_ids(ids: List[ItemID] = None,
collection_name: str = None,
include=None,
**kwargs) -> List[Document]

根据ID从向量数据库的集合中检索文档。

参数:

  • ids - List[ItemID] | 文档ID列表。如果为None,将返回所有文档。默认为None。
  • collection_name - str | 集合的名称。默认值为 None。
  • include - List[str] | 要包含的字段。默认值为 None。 如果为 None,则包含 ["metadatas", "documents"],ids 将始终包含。
  • kwargs - dict | 额外的关键字参数。

返回:

List[Document] | 结果。