搜索

embed函数怎么使用(Chroma 向量数据库:嵌入函数(embedding_functions))

100次浏览     发布时间:2024-10-10 10:37:57    

嵌入(Embeddings)是人工智能表示任何类型数据的原生方式,因此非常适合与各种人工智能工具和算法配合使用。它们可以表示文本、图像以及音频和视频。


在创建 Chroma 集合时设置一个嵌入函数,它将在保存和更新文本数据的时候自动计算文本向量。也可以选择不使用Chroma封装的嵌入函数计算向量,自己选择任意嵌入模型提前计算好文本向量数据即可。

本文将尝试使用OpenAI的嵌入模型。


一、默认模型

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

# 默认模型
from chromadb.utils import embedding_functions
default_ef = embedding_functions.DefaultEmbeddingFunction()
print(default_ef.MODEL_NAME)

输出:all-MiniLM-L6-v2


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


二、OpenAI 嵌入模型

Chroma 为 OpenAI 的嵌入模型 API 提供了方便的封装。

该嵌入功能依赖于 OpenAI python 软件包,可以使用 pip install openai 安装该软件包。同时,还需要一个 API 密钥。可以通过注册 OpenAI 账户获得 API 密钥。


示例代码如下:

import chromadb

# 创建一个client客户端对象
client = chromadb.PersistentClient(path="./data/tutorial.db")
# 查看集合列表
client.list_collections()


输出:[Collection(name=my_collection2), Collection(name=new_name)]


其中,path="./data/tutorial.db"相当于关系数据库的库名(database),collection相当于表名(table)。


接下来,创建一个新的 collection 并指定嵌入函数

collection_name = "my_collection3"
embedding_function = embedding_functions.OpenAIEmbeddingFunction()
collection = client.get_or_create_collection(name=collection_name, embedding_function=embedding_function)
client.list_collections()


输出:[Collection(name=my_collection2),

Collection(name=new_name),

Collection(name=my_collection3)]


然后,向上述 collection 中添加数据:

# 向 collection 中添加数据
texts = ["Hello world", "Chroma DB is awesome"]
collection.add(
 documents=texts,
 metadatas=[{"source": "ch4"}, {"source": "ch4"}],
 ids=["id1", "id2"]
)


获取数据:

collection.get(include=['embeddings', 'documents', 'metadatas'])

相关文章