您的位置:首页 > 财经 > 金融 > 国外推广国内网站_宁波搭建网站公_怎么做关键词优化排名_佛山seo优化

国外推广国内网站_宁波搭建网站公_怎么做关键词优化排名_佛山seo优化

2025/3/9 9:07:17 来源:https://blog.csdn.net/qq_41472205/article/details/146002467  浏览:    关键词:国外推广国内网站_宁波搭建网站公_怎么做关键词优化排名_佛山seo优化
国外推广国内网站_宁波搭建网站公_怎么做关键词优化排名_佛山seo优化

目录

    • 代码
    • 代码解释
      • **1. 导入 chatGLM 嵌入函数**
      • **2. 创建 ChromaDB 客户端和集合**
      • **3. 查询集合中的数据数量**
      • **4. 添加数据到集合**
      • **5. 获取已存储的文档**
      • **6. 更新文档**
      • **7. 再次获取数据,验证更新结果**
      • **8. 删除某个文档**
      • **9. 获取已删除的文档**
      • **总结**

代码

import chromadb.utils.embedding_functions as embedding_functionsopenai_ef = embedding_functions.OpenAIEmbeddingFunction(api_key="your api key",api_base="https://open.bigmodel.cn/api/paas/v4",model_name="embedding-3")
import chromadb
client = chromadb.Client()
collection = client.get_or_create_collection(name="my_collection", embedding_function=openai_ef)
collection.count() 
0
collection.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_key="your api key",api_base="https://open.bigmodel.cn/api/paas/v4",model_name="embedding-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(name="my_collection", embedding_function=openai_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']
}

解释:

  • id1document 成功更新为 "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 进行以下操作:

  1. 创建集合,并使用 OpenAI 生成嵌入。
  2. 添加文档 到集合。
  3. 查询文档数量获取文档
  4. 更新文档内容
  5. 删除文档 并验证删除结果。

这样,你可以使用 ChromaDB 作为一个轻量级的向量数据库,结合 chatGLM 的嵌入模型进行信息存储和查询。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com