Merkmale
- Tiny : Es ist im Namen. Es ist buchstäblich nur ein Axum -Server. Extrem einfach anpassen, rund 600 Codezeilen.
- Schnell : TinyVector sollte eine vergleichbare Geschwindigkeit mit erweiterten Vektor -Datenbanken haben, wenn es um kleine bis mittlere Datensätze und etwas bessere Genauigkeit gelten.
- Vertikal Skalen : TinyVector speichert alle Indizes im Speicher für schnelle Abfragen. Sehr leicht zu skalieren bis zu mehr als 100 Millionen Vektorabmessungen ohne Probleme.
- Open Source : MIT lizenziert, für immer frei.
Bald
- Leistungsstarke Abfragen : Die Filterung durch die bereitgestellten Vektormetadaten zulassen, ohne die Suche nach unten zu verlangsamen.
- Integrierte Modelle : Bald müssen Sie Ihre eigenen Vektoren nicht mitbringen, und generieren Sie sie einfach auf der Server -Automatik. Ziel ist es, Unterstützung zu unterstützen, Sbert, umarmende Gesichtsmodelle, Openai, Cohere usw.
- TypeScript/Python-Bibliotheken : Sollte in der Lage sein, ziemlich gute Kunden mit dem enthaltenen OpenAPI-Schema automatisch generieren zu können.
Erste Schritte
? Docker
Wir bieten einen leichten Docker -Container, den Sie überall ausführen können. Es erfordert nur einen Befehl, um mit den neuesten Änderungen auf dem Laufenden zu werden:
docker run
-p 8000:8000
ghcr.io/m1guelpf/tinyvector:edge
Beachten Sie , dass Sie beim Ausführen über Docker Compose oder Kubernetes ein Volumen an /tinyvector/storage für die Persistenz binden. Dies wird automatisch im obigen Befehl behandelt.
Gebäude von Grund auf neu
Sie können TinyVector aus der neuesten markierten Version bauen, indem Sie cargo install tinyvector ausführen (möglicherweise müssen Sie zuerst Rost installieren). Führen Sie dann tinyvector aus, um den Server zu starten.
Sie können es auch aus dem neuesten Commit bauen, indem Sie das Repo klonieren und cargo build --release leiten und mit ./target/release/tinyvector ausführen.
Warum TinyVector verwenden?
Die meisten Vektor -Datenbanken sind übertrieben für einfache Setups. Zum Beispiel:
- Verwenden von Einbettungen, um mit Ihren Dokumenten zu chatten. Die meisten Dokumentensuche sind nicht annähernd dem, was Sie benötigen würden, um die Beschleunigungsgeschwindigkeit mit HNSW oder FAISS zu rechtfertigen.
- Suche nach Ihrer Website oder Ihrem Geschäft. Wenn Sie nicht 1.000.000 Artikel verkaufen, benötigen Sie keine Tiere.
? Einbettungen?
Einbettungen sind eine Möglichkeit, ähnliche Dinge zu vergleichen, genauso wie Menschen ähnliche Dinge vergleichen, indem sie Text in eine kleine Liste von Zahlen konvertieren. Ähnliche Textstücke haben ähnliche Zahlen, verschiedene Zahlen.
Lesen Sie die Erklärung von OpenAI.
Anerkennung
- Will Depue's TinyVector (Python+SQLite+Numpy) hat mich dazu inspiriert, eine Vektordatenbank von Grund auf neu zu erstellen (und den Namen ausleihen). Will hat auch viele Ideen zur Optimierung der Leistung beigetragen.
? Lizenz
Dieses Projekt ist im Rahmen der MIT-Lizenz offen. Weitere Informationen finden Sie in der Lizenzdatei.