我想尝试将我现有的qdrant vector数据库添加到一个chatGPT项目的langchain中。然而,我似乎无法找到一种方法来初始化Qdrant对象而不提供文档和嵌入,这对我来说似乎很奇怪,因为我应该能够简单地提供我的数据库URL,因为文档和嵌入已经存在于数据库中,就像我通过qdrant python客户端进行交互时一样:
QdrantClient(host=host, port=port)
在official langchain documentation中,我只能找到在加载对象时必须提供数据的示例,如下所示:
url = "<---qdrant url here --->"
qdrant = Qdrant.from_documents(
docs,
embeddings,
url,
collection_name="my_documents",
)
他们的文件还指出:
Qdrant.from_texts和Qdrant.from_documents方法都很适合在Langchain中使用Qdrant。在以前的版本中,每次调用它们中的任何一个时都会重新创建集合。这种行为已经改变。当前,如果集合已经存在,则将重用它。将force_recreate设置为True允许删除旧集合并从头开始。
我觉得很奇怪,因为这个集合正在被重用(正如我所希望的),但我仍然必须提供文档和嵌入。
我还检查了qdrants official documentation,他们提供了一个半解决方案,我“只”提供嵌入:
import qdrant_client
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-mpnet-base-v2"
)
client = qdrant_client.QdrantClient(
"<qdrant-url>",
api_key="<qdrant-api-key>", # For Qdrant Cloud, None for local instance
)
doc_store = Qdrant(
client=client, collection_name="texts",
embeddings=embeddings,
)
如果有人对此有解决方案,我很乐意得到一些帮助。
3条答案
按热度按时间vhmi4jdf1#
原来我误解了文档。
embeddings
对象不应该是一个嵌入列表,而是一个模型,比如s-BERT或openAI的嵌入模型。pjngdqdw2#
在
base.py
中,from_documents
方法需要documents
和embedding
参数yi0zb3m43#
希望这能帮到你