万网域名中文网站查询,asp服装网站源码,手机设计软件app推荐,河北人社app安卓版保存和检索矢量数据的五种方法#xff1a; 像 Pinecone 这样的纯矢量数据库 全文搜索数据库#xff0c;例如 ElasticSearch 矢量库#xff0c;如 Faiss、Annoy 和 Hnswlib 支持矢量的NoSQL 数据库#xff0c;例如 MongoDB、Cosmos DB 和 Cassandra 支持矢量的SQL 数据库 像 Pinecone 这样的纯矢量数据库 全文搜索数据库例如 ElasticSearch 矢量库如 Faiss、Annoy 和 Hnswlib 支持矢量的NoSQL 数据库例如 MongoDB、Cosmos DB 和 Cassandra 支持矢量的SQL 数据库例如 SingleStoreDB 或 PostgreSQL 1.纯矢量数据库 纯向量数据库专门用于存储和检索向量。示例包括 Chroma、LanceDB、Marqo、Milvus/Zilliz、Pinecone、Qdrant、Vald、Vespa、Weaviate 等。 在纯矢量数据库中数据是根据对象或数据点的矢量表示来组织和索引的。这些向量可以是各种类型数据的数值表示包括图像、文本文档、音频文件或任何其他形式的结构化或非结构化数据。 纯载体数据库的优点 利用索引技术进行高效的相似性搜索 大型数据集和高查询工作负载的可扩展性 支持高维数据 支持基于 HTTP 和 JSON 的 API 对向量运算的本机支持包括加法、减法、点积、余弦相似度 纯载体数据库的缺点 仅矢量纯矢量数据库可以存储矢量和一些元数据但仅此而已。对于大多数企业人工智能用例您可能需要包括实体、属性和层次结构图形、位置地理空间等的描述等数据。 有限或没有 SQL 支持纯向量数据库通常使用自己的查询语言这使得很难对向量和相关信息运行传统分析或者将向量和其他数据类型结合起来。 没有完整的 CRUD。纯向量数据库并不是真正为创建、更新和删除操作而设计的。对于读取操作数据必须首先进行矢量化和索引以进行持久化和检索。这些数据库专注于提取矢量数据、对其进行索引以进行有效的相似性搜索以及基于矢量相似性查询最近邻居。 建立索引非常耗时。索引矢量数据计算量大、成本高且耗时。这使得很难将新数据用于生成人工智能应用程序。 被迫权衡。根据所使用的索引技术矢量数据库要求客户在准确性、效率和存储之间进行权衡。例如Pinecone 的 IMI 索引反向多重索引ANN 的一种变体会产生存储开销并且计算量很大。它主要针对静态或半静态数据集而设计如果频繁添加、修改或删除向量则可能会受到挑战。Milvus 使用称为“产品量化”和“分层可导航小世界”(HNSW) 的索引这些索引是权衡搜索准确性和效率的近似技术。此外其索引需要配置各种参数使用不正确的参数选择可能会影响搜索结果的质量或导致效率低下。 企业特征值得怀疑。许多矢量数据库在基本功能上严重落后包括 ACID 事务、灾难恢复、RBAC、元数据过滤、数据库可管理性、可观察性等。这可能会导致严重的业务问题 - 类似于丢失所有数据的客户。 对于许多客户来说矢量数据库的局限性将归结为性价比。鉴于矢量运算的计算量大OSS矢量数据库或矢量库成为特别大规模应用程序的可行替代方案。 2. 全文检索数据库 此类别包括 Elastic/Lucene、OpenSearch 和 Solr 等数据库。 优点 --高可扩展性和性能特别是对于非结构化文本文档 --丰富的文本检索功能例如内置外语支持、可自定义分词器、词干分析器、停止列表和 N 元语法 --基于开源库Apache Lucene --大型集成生态系统包括向量库 矢量数据全文检索数据库的局限性 --未针对向量搜索或相似性匹配进行优化 --专为全文搜索而不是语义搜索而设计因此基于其构建的应用程序不会具有检索增强生成 (RAG) 和其他用例的完整上下文。为了实现语义搜索功能这些数据库需要使用其他工具以及大量的自定义评分和相关性模型进行扩充。 --其他数据格式图像、音频、视频的应用有限 --缺乏 GPU 支持 3. 向量库 对于许多开发人员来说Faiss、Annoy 和 Hnswlib 等开源矢量库是一个不错的起点。 Faiss是一个用于密集向量的相似性搜索和聚类的库。AnnoyApproximate Nearest Neighbors Oh Yeah是一个用于 ANN 搜索的轻量级库。Hnswlib是一个实现 ANN 搜索的 HNSW 算法的库。 开源向量库的优点 --快速最近邻搜索 --专为高维而打造 --支持面向 ANN 的索引结构包括倒排文件、乘积量化和随机投影、 --支持推荐系统、图像搜索和 NLP 的用例 --SIMD单指令、多数据和 GPU 支持可加速矢量相似性搜索操作 开源向量库的局限性 --繁琐的维护和集成 --与精确方法相比牺牲搜索精度 --自带基础设施。矢量库需要大量内存和计算资源它们需要您构建和维护复杂的基础设施以便为应用程序需求提供足够的 CPU、GPU 和内存资源。 --对元数据过滤、SQL、CRUD 操作、事务、高可用性、灾难恢复以及备份和恢复的支持有限或不支持 4.支持向量的NoSQL数据库 该类别包括 NoSQL 数据库例如 MongoDB、Cassandra/DataStax Astra 和 CosmosDB。 键值数据库例如 Redis 其他特殊用途数据库如 Neo4j图
几乎所有这些 NoSQL 数据库最近才通过添加矢量搜索扩展而变得支持矢量。 优点 对于其特定的数据模型NoSQL 数据库提供高性能和规模。Neo4j图形数据库可以与社交网络或知识图的法学硕士结合使用。具有矢量功能的时间序列数据库例如 kdb也许能够将矢量数据与金融市场数据结合起来。
局限性 NoSQL 数据库的向量功能是基本的/新生的/未经测试的。许多 NoSQL 数据库今年才添加了向量支持。五月Cassandra 宣布计划添加矢量搜索。4 月份Rockset 宣布支持基本向量搜索Azure Cosmos DB于 5 月份宣布支持 MongoDB vCore 的向量搜索。DataStax和MongoDB就在本月宣布了矢量搜索功能均为预览版 NoSQL 数据库的矢量搜索性能差异很大具体取决于支持的矢量函数、索引方法和硬件加速。 5. 支持向量的 SQL 数据库 该类别由一组非常小的数据库组成——SingleStoreDB、PostgreSQL 的 pgvector/Supabase Vector测试版、Clickhouse、Kinetica 和 Rockset。我们预计更多流行的数据库会出现在这个列表中因为向已建立的数据库添加基本矢量功能并不是一件繁重的工作。事实上矢量数据库 Chroma 是从 ClickHouse 中诞生的。 更新2023 年 9 月Oracle 也宣布了矢量搜索功能。 支持矢量的 SQL 数据库的优点 --具有点积、余弦相似度、欧氏距离和曼哈顿距离等功能的幂向量搜索。 --使用相似度分数查找 K 最近邻 --多模型 SQL 数据库提供混合搜索并且可以将向量与其他数据结合起来以获得更有意义的结果 --大多数 SQL 数据库可以部署为服务并在任何主要云上完全管理。 SQL 数据库用于矢量数据处理的局限性 --SQL 数据库是为结构化数据而设计的。生成式人工智能应用程序背后的语料库主要包含非结构化数据例如图像、音频和文本。虽然关系数据库通常可以存储文本和 blob但大多数数据库不会对这种非结构化数据进行矢量化以用于机器学习。 --大多数 SQL 数据库尚未针对矢量搜索进行优化。关系数据库的索引和查询机制主要是为结构化数据设计的而不是高维向量数据。虽然用于矢量数据处理的 SQL 数据库的性能可能并不出色但支持矢量的 SQL 数据库可能会添加扩展或新功能来支持矢量搜索。例如虽然 SingleStoreDB 支持精确的 k-NN 搜索但我们打算添加 ANN 搜索来提高非常大、高维数据集的性能。 --传统的 SQL 数据库无法横向扩展因此其性能会随着数据的增长而下降。使用 SQL 数据库处理高维向量的大型数据集可能需要您进行额外的优化例如对数据进行分区或采用专门的索引技术来保持高效的查询性能。