当今科技领域的发展日新月异,向量数据库成为了热门的话题之一。
这些数据库以其高效的向量检索和相似度搜索功能,为各种应用场景提供了强大的支持。
在本篇博客中,我们将介绍六个备受关注的向量数据库:Milvus、Zilliz、Faiss、Qdrant、LlamaIndex和Chroma。
基本介绍
1. Milvus
Milvus是一个开源的向量相似度搜索引擎,由Zilliz团队开发。它提供了高性能的向量检索和相似度搜索功能,支持海量数据的快速查询。Milvus支持多种向量类型和距离度量方法,并提供了易于使用的API和丰富的功能,使得开发者可以轻松构建各种应用,如图像搜索、推荐系统和自然语言处理。
2. Zilliz:
Zilliz是一家专注于大规模向量数据分析的公司,他们开发了多个与向量相关的开源项目,其中包括Milvus和Chroma。Zilliz致力于提供高效的向量数据处理和分析解决方案,帮助用户在海量数据中进行快速的相似度搜索和数据分析。
3. Faiss:
Faiss是Facebook AI Research开发的一个高性能向量相似度搜索库。它支持多种向量索引结构和距离度量方法,并提供了高效的搜索算法,能够在大规模数据集上进行快速的相似度搜索。Faiss被广泛应用于图像识别、语音识别和自然语言处理等领域。
4. Qdrant:
Qdrant是一个开源的向量搜索引擎,由Qdrant团队开发。它提供了高性能的向量检索和相似度搜索功能,支持多种向量类型和距离度量方法。Qdrant还提供了丰富的查询语法和灵活的配置选项,使得用户可以根据自己的需求进行定制化的搜索。
Qdrant 因其易用性和用户友好的开发者文档,面世不久即获得关注。
Qdrant 以 Rust 语言构建,提供 Rust、Python、Golang 等客户端 API,能够满足当今主流开发人员的需求。
不过, Qdrant 作为后起之秀,和其他竞品仍然存在一定差距,例如界面及查询功能不够完善。
5. LlamaIndex:
LlamaIndex是一个基于向量的数据库引擎,由Llama Labs开发。它提供了高效的向量存储和检索功能,支持多种向量类型和距离度量方法。LlamaIndex还提供了易于使用的API和丰富的功能,使得开发者可以快速构建各种应用,如推荐系统、广告投放和智能搜索。
6. Chroma:
Chroma是Zilliz团队开发的一个开源的向量数据管理系统。它提供了高效的向量存储和查询功能,支持多种向量类型和距离度量方法。Chroma还提供了可扩展的架构和分布式计算能力,能够处理大规模的向量数据集。
Qdrant Cloud VS Zilliz Cloud
--这两个都是云服务,不同点在于
Qdrant 更适合追求低成本基础设施维护的开发人员。
而如果应用系统更注重性能和可扩展性,Zilliz Cloud/Milvus 是更合适的选择。因为 Zilliz Cloud/Milvus 具备可扩展性极强、性能更佳、延时更低的特点,适用于对性能指标有着严格要求的场景。
每秒查询次数(QPS)
测试结果显示,在 10,000,000 条 768 维的向量数据中进行检索时,Zilliz Cloud 两款实例的 QPS 分别是 Qdrant Cloud 实例的 7 倍和 1 倍。
具体见参考资料
Qdrant 用法
同其他数据库一样,支持本地和服务器部署
docker 部署
提取预构建的 Docker 映像并运行容器:
docker pull qdrant/qdrant
docker run -d -p 7541:6333 --ip=10.0.180.16 qdrant/qdrant # 7541对外,6333是容器端口,必须是6333或者6334
-d 后台启动服务后
Access web UI at http://localhost:6333/dashboard
2023-12-06T04:43:43.136073Z INFO storage::content_manager::consensus::persistent: Initializing new raft state at ./storage/raft_state.json
2023-12-06T04:43:43.552838Z INFO qdrant: Distributed mode disabled
2023-12-06T04:43:43.552926Z INFO qdrant: Telemetry reporting enabled, id: 9fcc223f-6fbe-4932-8a31-4663683e1baf
2023-12-06T04:43:43.564727Z INFO qdrant::tonic: Qdrant gRPC listening on 6334
2023-12-06T04:43:43.564772Z INFO qdrant::tonic: TLS disabled for gRPC API
2023-12-06T04:43:43.565817Z INFO qdrant::actix: TLS disabled for REST API
2023-12-06T04:43:43.565952Z INFO qdrant::actix: Qdrant HTTP listening on 6333
2023-12-06T04:43:43.565991Z INFO actix_server::builder: Starting 95 workers
即可访问 http://10.0.180.16:7541/dashboard
安装包
pip install qdrant-client pymilvus
langchain demo
包括 本地 和 url 用法,下面的代码是将 文本 转换成向量 并存储到数据库
from langchain.vectorstores import Qdrant
from langchain.schema import Document
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
docs = [Document(page_content=u'avc')]
embeddings = HuggingFaceEmbeddings(
model_name=r"F:\weights\text2vec-base-chinese")
# qdrant = Qdrant.from_documents(
# docs,
# embeddings,
# location=":memory:", # 这个可以 Local mode with in-memory storage only
# # path="emb_qdrant_pickle2", # 不行
# collection_name="my_documents",
# )
qdrant = Qdrant.from_documents(
docs,
embeddings,
url='10.0.180.16:7541',
prefer_grpc=False, # 上面起服务用 6333,这里就需要False
collection_name="my_documents", # 这个随便
)
print(qdrant.similarity_search('a'))
读取已存储的数据
from langchain.vectorstores import Qdrant
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
import qdrant_client
embeddings = HuggingFaceEmbeddings(model_name=r"F:\weights\text2vec-large-chinese")
client = qdrant_client.QdrantClient(
url='10.0.180.16:7541', prefer_grpc=False
)
qdrant = Qdrant(
client=client, collection_name="my_documents",
# embedding_function=embeddings.embed_query,
embeddings=embeddings
)
found_docs = qdrant.similarity_search('员工绩效管理模式有哪些')
print(found_docs)
python 也能直接用,不需要langchain,自行百度吧
参考资料:
https://mp.weixin.qq.com/s/URSOuAAKhm9HzcAHCaQklw 智王点评:六大向量数据库
https://mp.weixin.qq.com/s/46ry2XXmW0kEXPeaDFKyTg 如何选择一个向量数据库|Qdrant Cloud v.s. Zilliz Cloud
https://qdrant.tech/documentation/guides/installation/ Qdrant 官网
未研究
https://mp.weixin.qq.com/s/W7hVVBuxiCDkHYdaQxjX1g 使用LangChain和Qdrant进行无样板代码的问答
https://mp.weixin.qq.com/s/Q1RppVV8Fdti6hIIfCvCVw Qdrant不只是高性能向量数据库
https://mp.weixin.qq.com/s/YOpNf34QIp9im8aA9LMvGw 将Milvus作为 OpenAI 嵌入的向量数据库
https://mp.weixin.qq.com/s/9NB7UUFr_nOwL3CRfcsdtA Milvus 向量数据库的应用场景
https://mp.weixin.qq.com/s/qNCEDFsaGDjcH6g5z-y2xw 大模型应用之Milvus向量数据库实践
https://mp.weixin.qq.com/s/jzWlwgOMkYs4CNz1UlP0Rw 【开源】向量数据库
https://mp.weixin.qq.com/s/YENmch0b4rbNJ73bvBLUpQ 大模型中间件 向量数据库原理和选择