西宁软件网站建设,网络营销概述,i深圳app是哪个公司开发的,电子商务网站建设技能论文目录 代码代码解释**1. 导入 chatGLM 嵌入函数****2. 创建 ChromaDB 客户端和集合****3. 查询集合中的数据数量****4. 添加数据到集合****5. 获取已存储的文档****6. 更新文档****7. 再次获取数据#xff0c;验证更新结果****8. 删除某个文档****9. 获取已删除的文档****总结*… 目录 代码代码解释**1. 导入 chatGLM 嵌入函数****2. 创建 ChromaDB 客户端和集合****3. 查询集合中的数据数量****4. 添加数据到集合****5. 获取已存储的文档****6. 更新文档****7. 再次获取数据验证更新结果****8. 删除某个文档****9. 获取已删除的文档****总结** 代码
import chromadb.utils.embedding_functions as embedding_functionsopenai_ef embedding_functions.OpenAIEmbeddingFunction(api_keyyour api key,api_basehttps://open.bigmodel.cn/api/paas/v4,model_nameembedding-3)
import chromadb
client chromadb.Client()
collection client.get_or_create_collection(namemy_collection, embedding_functionopenai_ef)
collection.count() 0collection.add(documents[lorem ipsum..., doc2, doc3],metadatas[{chapter: 3, verse: 16}, {chapter: 3, verse: 5}, {chapter: 29, verse: 11}],ids[id1, id2, id3]
)collection.get(ids[id1, id2, id3]
)
{ids: [id1, id2, id3],embeddings: None,documents: [lorem ipsum..., doc2, doc3],uris: None,data: None,metadatas: [{chapter: 3, verse: 16},{chapter: 3, verse: 5},{chapter: 29, verse: 11}],included: [IncludeEnum.documents: documents,IncludeEnum.metadatas: metadatas]}collection.update(ids[id1, id2, id3],metadatas[{chapter: 3, verse: 16}, {chapter: 3, verse: 5}, {chapter: 29, verse: 11}],documents[doc1, doc2, doc3]
)
collection.get(ids[id1, id2, id3]
){ids: [id1, id2, id3],embeddings: None,documents: [doc1, doc2, doc3],uris: None,data: None,metadatas: [{chapter: 3, verse: 16},{chapter: 3, verse: 5},{chapter: 29, verse: 11}],included: [IncludeEnum.documents: documents,IncludeEnum.metadatas: metadatas]}collection.delete(ids[id1]
)collection.get(ids[id1]
){ids: [],embeddings: None,documents: [],uris: None,data: None,metadatas: [],included: [IncludeEnum.documents: documents,IncludeEnum.metadatas: metadatas]}代码解释
1. 导入 chatGLM 嵌入函数
import chromadb.utils.embedding_functions as embedding_functionsopenai_ef embedding_functions.OpenAIEmbeddingFunction(api_keyyour api key,api_basehttps://open.bigmodel.cn/api/paas/v4,model_nameembedding-3)解释
embedding_functions.OpenAIEmbeddingFunction 用于创建 chatGLM 的文本嵌入函数API 请求会发送到 https://open.bigmodel.cn/api/paas/v4使用 embedding-3 作为嵌入模型。这里的 api_key 需要替换为你的实际 API 密钥。 2. 创建 ChromaDB 客户端和集合
import chromadb
client chromadb.Client()
collection client.get_or_create_collection(namemy_collection, embedding_functionopenai_ef)解释
chromadb.Client() 创建一个 ChromaDB 客户端。client.get_or_create_collection() 用于获取或创建一个名为 my_collection 的集合并使用 openai_ef 作为嵌入函数。 3. 查询集合中的数据数量
collection.count()输出
0解释
collection.count() 返回集合中的文档数量。由于此时还没有向集合添加任何数据所以返回 0。 4. 添加数据到集合
collection.add(documents[lorem ipsum..., doc2, doc3],metadatas[{chapter: 3, verse: 16}, {chapter: 3, verse: 5}, {chapter: 29, verse: 11}],ids[id1, id2, id3]
)解释
documents存储要添加的文档内容如 lorem ipsum...。metadatas为每个文档添加元数据例如 chapter 和 verse。ids为每个文档指定唯一的 idid1id2id3。 5. 获取已存储的文档
collection.get(ids[id1, id2, id3]
)输出
{ids: [id1, id2, id3],embeddings: None,documents: [lorem ipsum..., doc2, doc3],uris: None,data: None,metadatas: [{chapter: 3, verse: 16},{chapter: 3, verse: 5},{chapter: 29, verse: 11}],included: [documents, metadatas]
}解释
documents返回存储的文档内容。metadatas返回对应的元数据。ids返回请求的 id。embeddings 为空因为当前存储时没有计算嵌入可能是 OpenAI API 限制或者设置问题。 6. 更新文档
collection.update(ids[id1, id2, id3],metadatas[{chapter: 3, verse: 16}, {chapter: 3, verse: 5}, {chapter: 29, verse: 11}],documents[doc1, doc2, doc3]
)解释
更新 id1 对应的 document 从 lorem ipsum... 变为 doc1。其他 id 保持不变。 7. 再次获取数据验证更新结果
collection.get(ids[id1, id2, id3]
)输出
{ids: [id1, id2, id3],embeddings: None,documents: [doc1, doc2, doc3],uris: None,data: None,metadatas: [{chapter: 3, verse: 16},{chapter: 3, verse: 5},{chapter: 29, verse: 11}],included: [documents, metadatas]
}解释
id1 的 document 成功更新为 doc1其他数据未改变。 8. 删除某个文档
collection.delete(ids[id1]
)解释
删除 id1 对应的文档。 9. 获取已删除的文档
collection.get(ids[id1]
)输出
{ids: [],embeddings: None,documents: [],uris: None,data: None,metadatas: [],included: [documents, metadatas]
}解释
id1 的数据已经被删除因此返回空列表。 总结
本代码展示了如何使用 ChromaDB 进行以下操作
创建集合并使用 OpenAI 生成嵌入。添加文档 到集合。查询文档数量 和 获取文档。更新文档内容。删除文档 并验证删除结果。
这样你可以使用 ChromaDB 作为一个轻量级的向量数据库结合 chatGLM 的嵌入模型进行信息存储和查询。