如何向langchain向量存储提供嵌入函数

我试图使用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']

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注