Caractéristiques
- Tiny : c'est dans le nom. C'est littéralement juste un serveur axum. Extrêmement facile à personnaliser, environ 600 lignes de code.
- Rapide : Tinyvector devrait avoir une vitesse comparable aux bases de données vectorielles avancées lorsqu'elle est sur des ensembles de données petits à moyens et une précision légèrement meilleure.
- Échelles verticalement : Tinyvector stocke tous les index en mémoire pour une requête rapide. Très facile à évoluer jusqu'à 100 millions + dimensions vectorielles sans problème.
- Open source : MIT sous licence, libre pour toujours.
Bientôt
- Requêtes puissantes : permettez le filtrage par les métadonnées vectorielles fournies sans ralentir la recherche.
- Modèles intégrés : Vous n'aurez bientôt pas à apporter vos propres vecteurs, générez-les simplement sur le serveur Automaticaly. Visant à soutenir le support Sbert, les modèles de visage étreintes, Openai, Cohere, etc.
- Bibliothèques dactylographiées / Python : devrait être en mesure de générer automatiquement de très bons clients en utilisant le schéma OpenAPI inclus.
Commencer
? Docker
Nous fournissons un conteneur Docker léger que vous pouvez exécuter n'importe où. Il ne faut qu'une commande pour se mettre en service avec les derniers changements:
docker run
-p 8000:8000
ghcr.io/m1guelpf/tinyvector:edge
Remarque Lors de l'exécution via Docker Compose ou Kubernetes, assurez-vous de lier un volume à /tinyvector/storage pour la persistance. Ceci est géré automatiquement dans la commande ci-dessus.
Bâtiment à partir de zéro
Vous pouvez construire TinyVector à partir de la dernière version taguée en fonctionnant cargo install tinyvector (vous devrez peut-être installer Rust en premier). Ensuite, exécutez tinyvector pour démarrer le serveur.
Vous pouvez également le construire à partir du dernier commit en clonage le repo et en cours d'exécution cargo build --release et l'exécuter avec ./target/release/tinyvector .
Pourquoi utiliser Tinyvector?
La plupart des bases de données vectorielles sont exagérées pour des configurations simples. Par exemple:
- Utiliser des intégres pour discuter avec vos documents. La plupart des recherches de documents sont loin de ce dont vous auriez besoin pour justifier une vitesse de recherche accélérée avec HNSW ou FAISS.
- Faire la recherche de votre site Web ou de votre magasin. À moins que vous ne vendiez 1 000 000 d'articles, vous n'avez pas besoin de pignon.
? Embeddings?
Les intégres sont un moyen de comparer des choses similaires, de la même manière que les humains comparent des choses similaires, en convertissant le texte en une petite liste de nombres. Des éléments de texte similaires auront des nombres similaires, différents ont des nombres très différents.
Lisez l'explication d'Openai.
Remerciements
- TinyVector de DePue (Python + Sqlite + Numpy) m'a inspiré pour construire une base de données vectorielle à partir de zéro (et emprunter le nom). Will a également contribué de nombreuses idées pour optimiser les performances.
? Licence
Ce projet est open source sous la licence du MIT. Voir le fichier de licence pour plus d'informations.