我可以不向使用 Chroma.from_documents() 加载的文档添加元数据吗

问题描述 投票:0回答:2

我想向嵌入并加载到 Chroma 的文档添加额外的元数据。
我无法找到将元数据添加到使用
加载的文档的方法

Chroma.from_documents(documents, embeddings)

例如,假设我有一个包含特定疾病详细信息的文本文件,我想添加物种作为元数据,该元数据是它影响的所有物种的列表。

作为一种迂回方式,我通过添加所需的元数据将其加载到 chromadb 集合中并保留它

client = chromadb.PersistentClient(path="chromaDB")

collection = client.get_or_create_collection(name="test",
                                             embedding_function=openai_ef,
                                             metadata={"hnsw:space": "cosine"})
collection.add(
     documents=documents,
     ids=ids,
     metadatas=metadata
)

这就是结果

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

输出:

{'ids': ['id0',
'id1',
'嵌入':[[-0.014580891467630863,
0.0003901976451743394,
0.00793908629566431,
-0.027648288756608963,
-0.009689063765108585,
0.010222840122878551,
-0.00946609303355217,
-0.002771923551335931,
-0.04675614833831787,
-0.02056729979813099,
0.014364678412675858,
...
{'物种':'XYZ','来源':'Flu.txt'},
{'物种':'ABC','来源':'Common_cold.txt'}],
“文件”:无,
“uris”:无,
“数据”:无}

现在我尝试使用

Chroma.from_documents()

从磁盘中保留的目录加载它
db = Chroma(persist_directory="chromaDB", embedding_function=embeddings)

但我没有看到任何加载的东西。

db.get()
结果是这样的,

db.get(include=['metadatas'])

输出:

{'ids': [],
“嵌入”:无,
“元数据”:[],
“文件”:无,
“uris”:无,
“数据”:无}

请帮忙。需要将元数据加载到正在加载的文件中。

python-3.x large-language-model py-langchain chromadb
2个回答
0
投票

我自己找到了答案。错过了发帖。 我很愚蠢,加载时没有提到集合名称。

与其这样做,

db = Chroma(persist_directory="chromaDB", embedding_function=embeddings)

这样做,

db = Chroma(persist_directory="chromaDB", embedding_function=embeddings, collection_name = 'your_collection_name')

在我的例子中,集合名称是'test'
效果很好


0
投票

我有一个旧版本的 Chromadb,导致元数据为 None。我必须 pip 安装最新的

pip install -U chromadb

© www.soinside.com 2019 - 2024. All rights reserved.