使用 get() 时,色度数据库嵌入 = 无

Ada*_*rry 4 word-embedding langchain chromadb

我是 Chroma 数据库(以及相关的 python 库)的全新用户。

当我调用geta时collection,嵌入总是none,即使在将文档添加到集合时显式设置/定义了嵌入(因此生成嵌入不会成为问题 - 我不认为)。

对于以下代码(Python 3.10,chromadb 0.3.26),我希望在返回的字典中看到嵌入列表,但它是none.

import chromadb

chroma_client = chromadb.Client()
collection = chroma_client.create_collection(name="my_collection")
collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["This is a document", "This is another document"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

print(collection.get())
Run Code Online (Sandbox Code Playgroud)

输出:

{'ids': ['id1', 'id2'], 'embeddings': None, 'documents': ['This is a document', 'This is another document'], 'metadatas': [{'source': 'my_source'}, {'source': 'my_source'}]}
Run Code Online (Sandbox Code Playgroud)

query使用代替时不会出现同样的问题get

print(collection.query(query_embeddings=[[1.2, 2.3, 4.4]], include=["embeddings"]))
Run Code Online (Sandbox Code Playgroud)

输出:

{'ids': [['id1', 'id2']], 'embeddings': [[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]]], 'documents': None, 'metadatas': None, 'distances': None}
Run Code Online (Sandbox Code Playgroud)

使用时也会出现同样的问题langchain

朋友们有什么想法吗?:-)

小智 12

根据文档https://docs.trychroma.com/usage-guide默认情况下排除嵌入以提高性能:

使用 get 或 query 时,您可以使用 include 参数来指定要返回的数据 - 任何嵌入、文档、元数据,以及查询距离。默认情况下,Chroma 将返回文档、元数据以及查询结果的距离。为了性能,默认情况下会排除嵌入,并且始终返回 id。

您可以在使用时包含嵌入,get如下所示:

print(collection.get(include=['embeddings', 'documents', 'metadatas']))
Run Code Online (Sandbox Code Playgroud)