如何在ChromaDB文本查询中获取查询文本的Embedding?
获取ChromaDB查询文本的Embedding(避免重复计算)
你可以通过先生成查询文本的Embedding,再用该Embedding执行查询的方式,既完成检索,又能直接拿到Embedding用于后续添加操作,全程只做一次嵌入计算,完全符合你要的高效需求。
具体代码实现如下:
# 定义查询文本 query_text = "AUSSIE SHAMPOO MIRACULOUSLY SMOOTH 180 ML x 1" # 利用集合的嵌入函数生成查询文本的Embedding(仅执行一次) query_embedding = collection.embedding_function([query_text])[0] # 使用生成好的Embedding执行查询,替代原来的query_texts参数 results = collection.query( query_embeddings=[query_embedding], n_results=3, include=['documents','distances','embeddings'] ) # 后续直接用query_embedding添加到集合即可 collection.add( embeddings=[query_embedding], documents=[query_text], ids=["your-custom-id"] # 可自定义ID,也可以让Chroma自动生成 )
补充说明
ChromaDB的query方法默认不会返回查询文本自身的Embedding,因为它的设计聚焦于返回检索到的匹配结果。但通过上述方式,我们把嵌入计算和查询操作解耦,既避免了重复调用嵌入函数的冗余,又能拿到需要的Embedding。
内容的提问来源于stack exchange,提问作者Marcio Bernardo
相关产品推荐
相关产品推荐

