一架梯子,一头程序猿,仰望星空!
Chroma向量数据库教程 > 内容正文

Python Chromadb 向量计算(文本嵌入模型)


嵌入(Embeddings,特征向量)是人工智能表示任何类型数据的原生方式,因此非常适合与各种人工智能工具和算法配合使用。它们可以表示文本、图像以及音频和视频。生成特征向量数据有很多选择,可以使用开源的文本嵌入模型,也可以调用一些云服务的API。

Chroma 为流行的嵌入模型提供了轻量级封装,让您可以轻松地在应用程序中使用它们。您可以在创建 Chroma 集合时设置一个嵌入函数,他将在保存和更新文本数据的时候自动计算文本向量。

提示:你也可以选择不使用Chroma封装的嵌入函数计算向量,自己选择任意嵌入模型提前计算好文本向量数据即可。

要获取 Chroma 的嵌入函数,请导入 chromadb.utils.embedding_functions 模块。

from chromadb.utils import embedding_functions

默认模型: all-MiniLM-L6-v2

默认情况下,Chroma 使用 Sentence Transformers的 all-MiniLM-L6-v2 模型计算向量。该嵌入模型可以创建句子和文档向量。该嵌入模型功能在本地计算机上运行,需要下载模型文件(这是自动完成的)。

default_ef = embedding_functions.DefaultEmbeddingFunction()

Transformers模型

Chroma 还可以使用任意 Sentence Transformers 模型来计算向量。

sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

你可以传入一个可选的 model_name 参数,让你选择要使用的 Sentence Transformers 模型。默认情况下,Chroma 使用 all-MiniLM-L6-v2。你可以到huggingface去搜索模型的名字。

OpenAI模型

Chroma 为 OpenAI 的嵌入模型(embedding) API 提供了方便的封装。这里需要调用 OpenAI 的接口,需要一个 API 密钥。你可以通过注册 OpenAI 账户获得 API 密钥。

该嵌入功能依赖于 openai python 软件包,您可以使用 pip install openai 安装该软件包。

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="YOUR_API_KEY",
                model_name="text-embedding-ada-002"
            )

要在 Azure 等其他平台上使用 OpenAI 嵌入模型,可以使用 api_base 和 api_type 参数:

openai_ef = embedding_functions.OpenAIEmbeddingFunction(
                api_key="YOUR_API_KEY",
                api_base="YOUR_API_BASE_PATH",
                api_type="azure",
                model_name="text-embedding-ada-002"
            )

自定义Embedding 函数

您可以创建自己的嵌入函数与 Chroma 配合使用,只需实现 EmbeddingFunction 基类的方法即可。

from chromadb.api.types import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        # 调用自己的文本嵌入模型计算文本向量
        return embeddings

关联主题