AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI时代SQL向量关系型数据库MyScaleDB开源
发布日期:2024-04-14 11:23:43 浏览次数: 2063 来源:开源技术小栈


概述

MyScaleDB 是一个基于 ClickHouse 构建的 SQL 向量数据库,可以让开发人员使用熟悉的 SQL 构建可扩展的 AI 应用程序。它针对 AI 应用和解决方案进行了优化,可以有效地管理和处理大量数据。

MyScaleDB 是一款高性能、可扩展且极具成本效益的 AI 数据库,旨在为构建和扩展 AI 应用程序提供坚实的数据底座。它将向量搜索和存储能力整合到一个可扩展的关系型数据库中,支持高效地存储和处理结构和非结构化数据,旨在减少工程复杂性,同时确保 AI 应用的最佳性能表现。

特性

完全SQL兼容

  • 快速、强大和高效的向量搜索、过滤搜索和 SQL 向量连接查询。
  • 将SQL与向量相关函数一起使用,以与MyScaleDB进行交互。不需要学习复杂的新工具或框架-坚持使用你所知道和喜欢的。

为AI应用程序做好生产准备

  • 一个经过时间考验的统一平台,用于管理和处理结构化数据、文本、矢量、JSON、地理空间、时间序列数据等。查看支持的数据类型和函数
  • 通过将矢量与丰富的元数据相结合并以任何比例执行高精度、高效率的过滤搜索,提高了RAG准确性

无与伦比的性能和可扩展性

  • MyScaleDB利用先进的OLAP数据库架构和先进的矢量算法进行闪电般快速的矢量运算
  • 随着数据的增长,轻松且经济高效地扩展应用程序

Myscaledb 利用先进的 OLAP 数据库架构和高级向量算法,实现了无与伦比的性能和可扩展性。与使用自定义 API 的专用向量数据库相比,Myscaledb 更强大、性能更好、成本更低,同时使用起来更简单。与使用 pgvector 的 PostgreSQL 或使用向量扩展的 ElasticSearch 等集成向量数据库相比,Myscaledb 在结构化和向量连接查询(如过滤搜索)方面消耗更少的资源,实现更高的准确性和速度。

Myscaledb 是基于 ClickHouse 构建的原因是,ClickHouse 是一个流行的开源分析数据库,由于其列存储、高级压缩、跳过索引和 SIMD 处理等特性,在大数据处理和分析方面表现出色。在结构化和向量搜索的组合中,过滤搜索是关键操作之一,它首先通过其他属性进行过滤,然后对剩余数据进行向量搜索。列存储和预过滤对于确保过滤搜索的高准确性和高性能至关重要,这就是为什么我们选择在 ClickHouse 之上构建 Myscaledb 的原因。

为什么选择MyScaleDB

  • 完全兼容SQL
  • 统一的结构化和矢量化数据管理
  • 十亿级向量的毫秒级搜索
  • 高度可靠和线性可扩展
  • 混合搜索和复杂SQL向量查询

得益于 SQL 数据库在海量结构化数据场景长期的打磨,MyScaleDB 同时支持海量向量和结构化数据,包括字符串、JSON、空间、时序等多种数据类型的高效存储和查询,并将在近期推出功能强大的倒排表和关键字检索功能,进一步提高 RAG 系统的精度并替代 Elasticsearch 等系统。

整体架构

AI 大模型新时代时代,MyScale 团队致力于提出新一代的大模型 + 大数据方案。以高性能的 SQL + 向量数据库为坚实的支撑,MyScaleDB 提供了大规模数据处理、知识查询、可观测性、数据分析和小样本学习的关键能力,构建了 AI 和数据闭环,成为下一代大模型 + 大数据 Agent 平台的关键基座

快速启动

使用MyScaleDB Docker镜像,要快速启动并运行MyScaleDB实例,只需拉取并运行最新的Docker镜像:

docker run --name myscaledb myscale/myscaledb:1.4

这将启动一个MyScaleDB实例,默认用户为default ,没有密码。然后,您可以使用 clickhouse-client 连接到数据库:

docker exec -it myscaledb clickhouse-client

教程

有关如何使用向量索引创建SQL表并执行向量搜索的信息,请参阅向量搜索文档。建议在开源MyScaleDB中创建向量索引时指定 TYPE SCANN

创建带有向量列的表

-- Create a table with body_vector of length 384
CREATE TABLE default.wiki_abstract
(
    `id` UInt64,
    `body` String,
    `title` String,
    `url` String,
    `body_vector` Array(Float32),
    CONSTRAINT check_length CHECK length(body_vector) = 384
)
ENGINE = MergeTree
ORDER BY id;

将数据插入表

-- Insert data from parquet files on S3
INSERT INTO default.wiki_abstract SELECT * FROM s3('https://myscale-datasets.s3.ap-southeast-1.amazonaws.com/wiki_abstract_with_vector.parquet','Parquet');

创建矢量索引

-- Build a SCANN vector index with Cosine metric on the body_vector
ALTER TABLE default.wiki_abstract ADD VECTOR INDEX vec_idx body_vector TYPE SCANN('metric_type=Cosine');

-- Query the index build progress from the `vector_indices` table
-- Wait until the index progress becomes `Built`
SELECT * FROM system.vector_indices;

执行矢量搜索

-- Perform vector search return the top-5 results
SELECT
  id,
  title,
  distance(body_vector, [-0.052-0.0146-0.0677-0.0256-0.0395-0.0381-0.0250.0911-0.0429-0.05920.0017-0.0358-0.0464-0.0189-0.01920.0544-0.0022-0.0292-0.0474-0.02860.0746-0.013-0.0217-0.0246-0.01690.0495-0.09470.01390.0445-0.0262-0.00490.05060.0040.02760.0063-0.06430.0059-0.0229-0.03150.05490.14270.00790.011-0.0036-0.06170.0155-0.06070.0258-0.02050.0008-0.05470.0329-0.0522-0.03470.09210.0139-0.0130.0716-0.01650.0257-0.00710.0084-0.06530.00910.0544-0.0192-0.0169-0.0017-0.03040.0427-0.03890.0921-0.0622-0.01960.00250.02140.0259-0.0493-0.0211-0.119-0.0736-0.1545-0.0578-0.01450.01380.0478-0.0451-0.03320.07990.0001-0.07370.04270.05170.01020.03860.02330.0425-0.0279-0.05290.0744-0.0305-0.0260.1229-0.0020.0038-0.04910.03520.0027-0.056-0.10440.123-0.01840.1148-0.01890.0412-0.0347-0.0569-0.01190.0098-0.00160.04510.02730.04360.00820.0166-0.09890.0747-0.00.0306-0.0717-0.0070.06650.04520.0123-0.02380.0512-0.01160.05170.0288-0.00130.01760.07620.1284-0.0310.0891-0.02860.01320.0030.04330.0102-0.0209-0.0459-0.0312-0.03870.0201-0.0270.02430.07130.0359-0.0674-0.0747-0.01470.0489-0.0092-0.0180.02360.0372-0.0071-0.0513-0.0396-0.0316-0.0297-0.0385-0.0620.04650.0539-0.0330.06430.0610.00620.02450.08680.0523-0.02530.01570.02660.01240.1382-0.01070.0835-0.1057-0.0188-0.07860.0570.0707-0.01850.07080.0189-0.0374-0.04840.00890.02470.0255-0.01180.07390.0114-0.0448-0.016-0.08360.01070.0067-0.0535-0.0186-0.00420.0582-0.0731-0.05930.02990.0004-0.02990.0128-0.05490.04930.0-0.04190.0549-0.03150.10120.0459-0.06280.0417-0.01530.0471-0.0301-0.06150.0137-0.02190.07350.0830.0114-0.0326-0.02720.0642-0.02030.0557-0.05790.08830.07190.00070.0598-0.0431-0.0189-0.0593-0.03340.02-0.0371-0.04410.0407-0.08050.00580.10390.05340.0495-0.03250.0782-0.04030.0108-0.0068-0.05250.08010.0256-0.0183-0.0619-0.0063-0.06050.0377-0.0281-0.0097-0.0029-0.1060.0465-0.0033-0.03080.03570.0156-0.0406-0.03080.00130.04580.02310.0207-0.0828-0.05730.0298-0.03810.0935-0.0498-0.0979-0.14520.0835-0.0973-0.01720.00030.09-0.0931-0.02520.008-0.0441-0.0938-0.00210.08850.00880.0034-0.00490.02170.0584-0.0120.0590.0146-0.0-0.00450.06630.00170.00150.0569-0.0089-0.02320.00650.0204-0.02530.1119-0.0360.01250.05310.0584-0.0101-0.0593-0.0577-0.0656-0.03960.0525-0.006-0.01490.003-0.1009-0.02810.0311-0.00880.0441-0.00560.07150.0510.0219-0.00280.0294-0.0969-0.08520.03040.03740.1078-0.05590.0805-0.04640.03690.0874-0.02510.0075-0.0502-0.0181-0.10590.01110.08940.00210.08380.0497-0.01830.0246-0.004-0.08280.06-0.1161-0.03670.04750.0317]) AS distance
FROM default.wiki_abstract
ORDER BY distance ASC
LIMIT 5;

技术栈

  • ClickHouse:一个免费的大数据分析DBMS
  • Faiss:一个用于高效相似性搜索和密集向量聚类的库,由Meta的Fundamental AI Research开发
  • hnswlib:用于快速近似最近邻的仅头的C++/python库
  • ScaNN:Google Research的Scalable Nearest Neighbors库



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询