返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

AI时代SQL向量关系型数据库MyScaleDB开源

[复制链接]
链载Ai 显示全部楼层 发表于 3 小时前 |阅读模式 打印 上一主题 下一主题

概述

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.025, 0.0911, -0.0429, -0.0592, 0.0017, -0.0358, -0.0464, -0.0189, -0.0192, 0.0544, -0.0022, -0.0292, -0.0474, -0.0286, 0.0746, -0.013, -0.0217, -0.0246, -0.0169, 0.0495, -0.0947, 0.0139, 0.0445, -0.0262, -0.0049, 0.0506, 0.004, 0.0276, 0.0063, -0.0643, 0.0059, -0.0229, -0.0315, 0.0549, 0.1427, 0.0079, 0.011, -0.0036, -0.0617, 0.0155, -0.0607, 0.0258, -0.0205, 0.0008, -0.0547, 0.0329, -0.0522, -0.0347, 0.0921, 0.0139, -0.013, 0.0716, -0.0165, 0.0257, -0.0071, 0.0084, -0.0653, 0.0091, 0.0544, -0.0192, -0.0169, -0.0017, -0.0304, 0.0427, -0.0389, 0.0921, -0.0622, -0.0196, 0.0025, 0.0214, 0.0259, -0.0493, -0.0211, -0.119, -0.0736, -0.1545, -0.0578, -0.0145, 0.0138, 0.0478, -0.0451, -0.0332, 0.0799, 0.0001, -0.0737, 0.0427, 0.0517, 0.0102, 0.0386, 0.0233, 0.0425, -0.0279, -0.0529, 0.0744, -0.0305, -0.026, 0.1229, -0.002, 0.0038, -0.0491, 0.0352, 0.0027, -0.056, -0.1044, 0.123, -0.0184, 0.1148, -0.0189, 0.0412, -0.0347, -0.0569, -0.0119, 0.0098, -0.0016, 0.0451, 0.0273, 0.0436, 0.0082, 0.0166, -0.0989, 0.0747, -0.0, 0.0306, -0.0717, -0.007, 0.0665, 0.0452, 0.0123, -0.0238, 0.0512, -0.0116, 0.0517, 0.0288, -0.0013, 0.0176, 0.0762, 0.1284, -0.031, 0.0891, -0.0286, 0.0132, 0.003, 0.0433, 0.0102, -0.0209, -0.0459, -0.0312, -0.0387, 0.0201, -0.027, 0.0243, 0.0713, 0.0359, -0.0674, -0.0747, -0.0147, 0.0489, -0.0092, -0.018, 0.0236, 0.0372, -0.0071, -0.0513, -0.0396, -0.0316, -0.0297, -0.0385, -0.062, 0.0465, 0.0539, -0.033, 0.0643, 0.061, 0.0062, 0.0245, 0.0868, 0.0523, -0.0253, 0.0157, 0.0266, 0.0124, 0.1382, -0.0107, 0.0835, -0.1057, -0.0188, -0.0786, 0.057, 0.0707, -0.0185, 0.0708, 0.0189, -0.0374, -0.0484, 0.0089, 0.0247, 0.0255, -0.0118, 0.0739, 0.0114, -0.0448, -0.016, -0.0836, 0.0107, 0.0067, -0.0535, -0.0186, -0.0042, 0.0582, -0.0731, -0.0593, 0.0299, 0.0004, -0.0299, 0.0128, -0.0549, 0.0493, 0.0, -0.0419, 0.0549, -0.0315, 0.1012, 0.0459, -0.0628, 0.0417, -0.0153, 0.0471, -0.0301, -0.0615, 0.0137, -0.0219, 0.0735, 0.083, 0.0114, -0.0326, -0.0272, 0.0642, -0.0203, 0.0557, -0.0579, 0.0883, 0.0719, 0.0007, 0.0598, -0.0431, -0.0189, -0.0593, -0.0334, 0.02, -0.0371, -0.0441, 0.0407, -0.0805, 0.0058, 0.1039, 0.0534, 0.0495, -0.0325, 0.0782, -0.0403, 0.0108, -0.0068, -0.0525, 0.0801, 0.0256, -0.0183, -0.0619, -0.0063, -0.0605, 0.0377, -0.0281, -0.0097, -0.0029, -0.106, 0.0465, -0.0033, -0.0308, 0.0357, 0.0156, -0.0406, -0.0308, 0.0013, 0.0458, 0.0231, 0.0207, -0.0828, -0.0573, 0.0298, -0.0381, 0.0935, -0.0498, -0.0979, -0.1452, 0.0835, -0.0973, -0.0172, 0.0003, 0.09, -0.0931, -0.0252, 0.008, -0.0441, -0.0938, -0.0021, 0.0885, 0.0088, 0.0034, -0.0049, 0.0217, 0.0584, -0.012, 0.059, 0.0146, -0.0, -0.0045, 0.0663, 0.0017, 0.0015, 0.0569, -0.0089, -0.0232, 0.0065, 0.0204, -0.0253, 0.1119, -0.036, 0.0125, 0.0531, 0.0584, -0.0101, -0.0593, -0.0577, -0.0656, -0.0396, 0.0525, -0.006, -0.0149, 0.003, -0.1009, -0.0281, 0.0311, -0.0088, 0.0441, -0.0056, 0.0715, 0.051, 0.0219, -0.0028, 0.0294, -0.0969, -0.0852, 0.0304, 0.0374, 0.1078, -0.0559, 0.0805, -0.0464, 0.0369, 0.0874, -0.0251, 0.0075, -0.0502, -0.0181, -0.1059, 0.0111, 0.0894, 0.0021, 0.0838, 0.0497, -0.0183, 0.0246, -0.004, -0.0828, 0.06, -0.1161, -0.0367, 0.0475, 0.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库


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ