我试图使用langchain的add_texts方法将文本嵌入到一个简单的向量存储(chromadb)中,尽管在另一个简单的langchain场景中成功使用了OpenAI包,但我遇到了以下错误:
ValueError: You must provide embeddings or a function to compute them
代码如下:
from langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromadb = Chroma()texts = [ """ 存储和搜索非结构化数据最常见的方式之一是将其嵌入并存储生成的嵌入向量,然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。向量存储负责存储嵌入数据并为您执行向量搜索。 """, """ 今天的应用程序需要高度响应和始终在线。为了实现低延迟和高可用性,这些应用程序的实例需要部署在靠近用户的数据中心。应用程序需要实时响应高峰时段使用量的巨大变化,存储不断增加的数据量,并在毫秒内将这些数据提供给用户。""",]db.add_texts(texts, embedding_function=OpenAIEmbeddings())
回答:
在构建Chroma
对象时需要传递embedding_function。来源:Chroma类 类代码
所以您的代码应该是:
from langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromadb = Chroma(embedding_function=OpenAIEmbeddings())texts = [ """ 存储和搜索非结构化数据最常见的方式之一是将其嵌入并存储生成的嵌入向量,然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。向量存储负责存储嵌入数据并为您执行向量搜索。 """, """ 今天的应用程序需要高度响应和始终在线。为了实现低延迟和高可用性,这些应用程序的实例需要部署在靠近用户的数据中心。应用程序需要实时响应高峰时段使用量的巨大变化,存储不断增加的数据量,并在毫秒内将这些数据提供给用户。""",]db.add_texts(texts)
您将看到的结果是
['58f12150-2bc4-11ee-9ff5-ac87a32b530e', '58f12240-2bc4-11ee-9ff5-ac87a32b530e']