浅谈向量数据库
1. 背景
信息有多种形式。有些信息是非结构化的,例如文本文档、富媒体和音频,有些则是结构化的,例如应用程序日志、表格和图表。人工智能和机器学习(AI/ML)的创新使我们能够创建一种机器学习模型,即嵌入模型。
向量数据库能够将向量存储为高维点并进行检索。这些数据库增加了额外的功能,可以高效、快速地查找 N 维空间中的最近邻。这些功能通常由 k 最近邻(k-NN)索引提供支持,并使用分层可导航小世界(HNSW)和倒排文件索引(IVF)算法等算法构建。向量数据库提供了其他功能,例如数据管理、容错、身份验证和访问控制以及查询引擎。
2. 核心技术演进
背后涉及众多的底层技术,其中主要包括:
-
向量索引技术:向量索引是向量数据库的核心技术之一,它通过构建高效的索引结构来实现快速的向量检索。常见的向量索引包括FLAT、HNSW、IVF等。
-
向量相似度计算技术:向量相似度计算是向量数据库的另一个核心技术,它用于度量向量之间的相似度。常见的向量相似度计算方法包括余弦相似度、欧几里得距离等。
-
Embedding技术:利用Embedding技术将高维度的数据(例如文字、图片、 音频)映射到低维度空间,即把图片、音频和文字转化为向量来表示,将这些向量存储起来就构成向量数据库。
3. 常见的向量数据库
- Elasticsearch : 在 7.10 版本中,Elasticsearch 添加了对将向量索引到专用数据结构的支持,以支持通过 kNN 搜索 API 进行快速 kNN 检索。 在 8.0 版本中,Elasticsearch 添加了对带有向量场的原生自然语言处理 (NLP) 的支持。
- FAISS : Meta的Faiss是一个用于高效相似性搜索和密集向量聚类的库。 它包含搜索任意大小的向量集的算法,直到可能不适合 RAM 的向量集。 它还包含用于评估和参数调整的支持代码。
- Milvus : Milvus 是一个开源向量数据库,旨在为 AI 应用程序提供可扩展的高性能向量搜索。 它支持多种语言,
- Weaviate : Weaviate是一个开源向量数据库,允许你存储数据对象和来自你最喜欢的 ML 模型的向量嵌入,并无缝扩展到数十亿个数据对象。
- Pinecone : Pinecone专为机器学习应用程序设计的矢量数据库。 它速度快、可扩展,并支持多种机器学习算法。Pinecone 建立在 Faiss 之上,Faiss 是一个用于密集向量高效相似性搜索的库。
- Vespa : Vespa是一个功能齐全的搜索引擎和矢量数据库。 它支持向量搜索 (ANN)、词法搜索和结构化数据搜索,所有这些都在同一个查询中。 集成的机器学习模型推理允许你应用 AI 来实时理解你的数据。
- ScaNN : ScaNN(Scalable Nearest Neighbours)是一个用于高效向量相似性搜索的库,它找到 k 个与查询向量最近的向量,通过相似性度量来衡量。 矢量相似性搜索对于图像搜索、自然语言处理、推荐系统和异常检测等应用非常有用。
- pg_vector : pgvector是PostgreSQL 的开源扩展,允许你在数据库中存储和查询向量嵌入。 它建立在 Faiss 库之上,Faiss 库是一个流行的密集向量高效相似性搜索库。 pgvector 易于使用,只需一条命令即可安装。
4. 总结
本文只是对向量数据数据库的简单介绍,后续会继续深入学习。就目前Milvus相对比较成熟,后续会继续学习。