Permettez à chaque développeur de créer des applications GenAI de niveau production avec un SQL puissant et familier.
MyScaleDB est la base de données vectorielles SQL qui permet aux développeurs de créer des applications d'IA évolutives et prêtes pour la production à l'aide d'un langage SQL familier. Il est construit sur ClickHouse et optimisé pour les applications et solutions d'IA, permettant aux développeurs de gérer et de traiter efficacement d'énormes volumes de données.
Les principaux avantages de l'utilisation de MyScaleDB incluent :
Entièrement compatible SQL
Recherche de vecteurs rapide, puissante et efficace, recherche filtrée et requêtes de jointure de vecteurs SQL.
Utilisez SQL avec des fonctions liées aux vecteurs pour interagir avec MyScaleDB. Pas besoin d’apprendre de nouveaux outils ou cadres complexes : restez fidèle à ce que vous connaissez et aimez.
Prêt pour la production pour les applications d'IA
Une plate-forme unifiée et éprouvée pour gérer et traiter des données structurées, du texte, des vecteurs, des JSON, des données géospatiales, des séries chronologiques, etc. Voir les types de données et les fonctions pris en charge
Précision RAG améliorée en combinant des vecteurs avec des métadonnées riches, une recherche en texte intégral et en effectuant une recherche filtrée de haute précision et à haute efficacité dans n'importe quel rapport 1 .
Performances et évolutivité inégalées
MyScaleDB exploite une architecture de base de données OLAP de pointe et des algorithmes vectoriels avancés pour des opérations vectorielles ultra-rapides.
Faites évoluer vos applications sans effort et de manière rentable à mesure que vos données augmentent.
MyScale Cloud fournit MyScaleDB entièrement géré avec des fonctionnalités premium sur des données à l'échelle d'un milliard 2 . Comparé aux bases de données vectorielles spécialisées qui utilisent des API personnalisées, MyScale est plus puissante, plus performante et plus rentable tout en restant plus simple à utiliser. Cela le rend adapté à une large communauté de programmeurs. De plus, par rapport aux bases de données vectorielles intégrées telles que PostgreSQL avec pgvector ou ElasticSearch avec des extensions vectorielles, MyScale consomme moins de ressources et atteint une meilleure précision et vitesse pour les requêtes structurées et vectorielles conjointes, telles que les recherches filtrées.
Entièrement compatible avec SQL
Gestion unifiée des données structurées et vectorisées
Recherche à la milliseconde sur des vecteurs à l'échelle d'un milliard
Très fiable et évolutif linéairement
Fonctions puissantes de recherche de texte et de recherche hybride texte/vecteur
Requêtes vectorielles SQL complexes
Observabilité LLM avec MyScale Telemetry
MyScale unifie trois systèmes : base de données/entrepôt de données SQL, base de données vectorielles ainsi que moteur de recherche en texte intégral en un seul système de manière très efficace. Cela permet non seulement d'économiser des coûts d'infrastructure et de maintenance, mais permet également des requêtes et des analyses de données conjointes.
Consultez notre documentation et nos blogs pour en savoir plus sur les fonctionnalités et avantages uniques de MyScale. Notre référence open source fournit une comparaison détaillée avec d’autres produits de bases de données vectorielles.
ClickHouse est une base de données analytique open source populaire qui excelle dans le traitement et l'analyse du Big Data grâce à son stockage en colonnes avec compression avancée, indexation par saut et traitement SIMD. Contrairement aux bases de données transactionnelles comme PostgreSQL et MySQL, qui utilisent le stockage de lignes et les principales optimisations pour le traitement transactionnel, ClickHouse offre des vitesses d'analyse et d'analyse des données nettement plus rapides.
L'une des opérations clés pour combiner la recherche structurée et la recherche vectorielle est la recherche filtrée, qui implique d'abord un filtrage par d'autres attributs, puis une recherche vectorielle sur les données restantes. Le stockage en colonnes et le pré-filtrage sont cruciaux pour garantir une grande précision et des performances élevées dans la recherche filtrée, c'est pourquoi nous avons choisi de créer MyScaleDB au-dessus de ClickHouse.
Bien que nous ayons modifié le moteur d'exécution et de stockage de ClickHouse de plusieurs manières pour garantir des requêtes vectorielles SQL rapides et rentables, de nombreuses fonctionnalités (#37893, #38048, #37859, #56728, #58223) liées au traitement SQL général ont été contribué à la communauté open source ClickHouse.
Le moyen le plus simple d'utiliser MyScaleDB consiste à créer une instance sur le service MyScale Cloud. Vous pouvez démarrer à partir d’un pod gratuit prenant en charge 5 millions de vecteurs 768D. Inscrivez-vous ici et consultez MyScaleDB QuickStart pour plus d'instructions.
Pour rendre rapidement opérationnelle une instance MyScaleDB, extrayez et exécutez simplement la dernière image Docker :
docker run --name myscaledb --net=host myscale/myscaledb:1.8.0
Remarque : la configuration par défaut de Myscale autorise uniquement l'accès IP localhost. Pour la méthode de démarrage Docker Run, vous devez spécifier
--net=host
pour accéder aux services déployés en mode Docker sur le nœud actuel.
Cela démarrera une instance MyScaleDB avec l'utilisateur default
défaut et aucun mot de passe. Vous pouvez ensuite vous connecter à la base de données en utilisant clickhouse-client
:
docker exec -it myscaledb clickhouse-client
Utilisez la structure de répertoires recommandée suivante et l'emplacement du fichier docker-compose.yaml
:
> arbre myscaledb myscaledb ├── docker-compose.yaml └── tomes └── configuration └── utilisateurs.d └── custom_users_config.xml 3 répertoires, 2 fichiers
Définissez la configuration de votre déploiement. Nous vous recommandons de commencer par la configuration suivante dans votre fichier docker-compose.yaml
, que vous pouvez ajuster en fonction de vos besoins spécifiques :
version : '3.7'services : myscaledb:image : myscale/myscaledb:1.8.0tty : trueports : - '8123:8123' - '9000:9000' - '8998:8998' - '9363:9363' - '9116:9116'réseaux : myscaledb_network:ipv4_address : 10.0.0.2volumes : - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/data:/var/lib/clickhouse - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/log:/var/log/clickhouse-server - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/config/users.d/custom_users_config.xml:/etc/clickhouse-server/users.d/custom_users_config.xmldeploy : ressources : limites : processeurs : « 16,00 » mémoire : 32 Go réseaux : myscaledb_network : pilote : bridgeipam : pilote : configuration par défaut : - sous-réseau : 10.0.0.0/24
custom_users_config.xml
:
<maison de clics> <utilisateurs> <par défaut> <mot de passe></mot de passe> <réseaux> <ip>::1</ip> <ip>127.0.0.1</ip> <ip>10.0.0.0/24</ip> </réseaux> <profil>par défaut</profile> <quota>par défaut</quota> <access_management>1</access_management> </par défaut> </utilisateurs> </cliquezhouse>
Remarque : La configuration custom_users_config vous permet d'utiliser l'utilisateur par défaut pour accéder à la base de données sur le nœud sur lequel le service de base de données est déployé à l'aide de Docker Compose. Si vous souhaitez accéder au service de base de données sur d'autres nœuds, il est recommandé de créer un utilisateur accessible via d'autres adresses IP. Pour des paramètres détaillés, voir : MyScaleDB Create User. Vous pouvez également personnaliser le fichier de configuration de MyScaleDB. Copiez le répertoire
/etc/clickhouse-server
de votre conteneurmyscaledb
sur votre lecteur local, modifiez la configuration et ajoutez un mappage de répertoire au fichierdocker-compose.yaml
pour que la configuration prenne effet :- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/config:/etc/clickhouse-server
Utilisez la commande suivante pour le faire fonctionner :
cd myscaledb docker compose -d
Accédez à l'interface de ligne de commande MyScaleDB à l'aide de la commande suivante.
docker exec -it myscaledb-myscaledb-1 client clickhouse
Vous pouvez désormais exécuter des instructions SQL. Voir Exécution de requêtes SQL.
L'environnement de construction pris en charge est Ubuntu 22.04 avec LLVM 15.0.7.
Veuillez consulter le dossier des scripts.
Exemple d'utilisation :
LLVM_VERSION=15 sudo -E bash scripts/install_deps.sh sudo apt-get -y install rustc cargo yasm scripts bash/config_on_linux.sh scripts bash/build_on_linux.sh
Les exécutables résultants seront dans MyScaleDB/build/programs/*
.
Consultez la documentation sur la recherche de vecteurs pour savoir comment créer une table SQL avec un index vectoriel et effectuer une recherche de vecteurs. Il est recommandé de spécifier TYPE SCANN
lors de la création d'un index vectoriel dans MyScaleDB open source.
-- Créez une table avec body_vector de longueur 384CREATE TABLE default.wiki_abstract (`id` UInt64,`body` String,`title` String,`url` String,`body_vector` Array(Float32),CONSTRAINT check_length CHECK length(body_vector) = 384) MOTEUR = MergeTreeORDER BY id ;
-- Insérer les données des fichiers parquet sur S3INSERT INTO default.wiki_abstract SELECT * FROM s3('https://myscale-datasets.s3.ap-southeast-1.amazonaws.com/wiki_abstract_with_vector.parquet','Parquet');
-- Créez un index vectoriel SCANN avec la métrique Cosinus sur le body_vectorALTER TABLE default.wiki_abstract ADD VECTOR INDEX vec_idx body_vector TYPE SCANN('metric_type=Cosine');-- Interrogez la progression de la construction de l'index à partir de la table `vector_indices` -- Attendez que le la progression de l'index devient `Built`SELECT * FROM system.vector_indices ;
- Effectuer une recherche vectorielle et renvoyer les 5 premiers résultatsSELECT identifiant, titre, distance (corps_vecteur, [-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 distanceFROM default.wiki_abstractORDER BY distance ASCLIMIT 5 ;
Nous nous engageons à améliorer et à faire évoluer continuellement MyScaleDB pour répondre aux besoins en constante évolution du secteur de l'IA. Rejoignez-nous dans ce voyage passionnant et faites partie de la révolution de la gestion des données d'IA !
Discorde
Soutien
Recevez les dernières nouvelles ou mises à jour de MyScaleDB
Suivez @MyScaleDB sur Twitter
Suivez @MyScale sur LinkedIn
Lire le blog MyScale
Index inversé et recherche hybride mot-clé/vecteur performante (prise en charge depuis la version 1.5)
Prend en charge davantage de moteurs de stockage, par exemple ReplacingMergeTree
(pris en charge depuis la version 1.6)
Observabilité LLM avec MyScaleDB et MyScale Telemetry
LLM centré sur les données
Science des données automatique avec MyScaleDB
MyScaleDB est sous licence Apache, version 2.0. Afficher une copie du fichier de licence.
Nous remercions tout particulièrement ces projets open source, sur lesquels nous avons développé MyScaleDB :
ClickHouse - Un SGBD d'analyse gratuit pour le Big Data.
Faiss - Une bibliothèque pour une recherche efficace de similarité et un regroupement de vecteurs denses, par Fundamental AI Research de Meta.
hnswlib - Bibliothèque C++/python en en-tête uniquement pour une approximation rapide des voisins les plus proches.
ScaNN - Bibliothèque évolutive des voisins les plus proches par Google Research.
Tantivy - Une bibliothèque de moteur de recherche en texte intégral inspirée d'Apache Lucene et écrite en Rust.
Découvrez ici pourquoi le filtrage des métadonnées est crucial pour améliorer la précision du RAG. ↩
L'algorithme MSTG (Multi-scale Tree Graph) est fourni via MyScale Cloud, permettant d'obtenir une densité de données élevée avec un stockage sur disque et de meilleures performances d'indexation et de recherche sur des données vectorielles à l'échelle d'un milliard. ↩