python-3.x 初始化langchain的qdrant

vd8tlhqk  于 2023-10-21  发布在  Python
关注(0)|答案(3)|浏览(200)

我想尝试将我现有的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,
)

如果有人对此有解决方案,我很乐意得到一些帮助。

vhmi4jdf

vhmi4jdf1#

原来我误解了文档。
embeddings对象不应该是一个嵌入列表,而是一个模型,比如s-BERT或openAI的嵌入模型。

pjngdqdw

pjngdqdw2#

base.py中,from_documents方法需要documentsembedding参数

@classmethod
    def from_documents(
        cls: Type[VST],
        documents: List[Document],
        embedding: Embeddings,
        **kwargs: Any,
yi0zb3m4

yi0zb3m43#

希望这能帮到你

def _qdrant_connection(self, collection_name=None):
        if collection_name is None:
            collection_name = self.collection_name
        try:
            qdrant_clients = qdrant_client.QdrantClient(
                url=qdrant_end_point, 
                api_key=qdrant_api_key
            )
            self.vectordb = Qdrant(
                client=qdrant_clients,
                collection_name=collection_name,
                embeddings=self.embeddings
            )

        except Exception as e:
            logging.error(f"Cannot connect to Qdrant: {e}")

相关问题