Im Bereich der künstlichen Intelligenz und des maschinellen Lernens, insbesondere bei der Entwicklung von Anwendungen wie RAG-Systemen (Retrieval Augmented Generation) und der semantischen Suche, ist die effiziente Verarbeitung und Abfrage großer Mengen unstrukturierter Daten von entscheidender Bedeutung. Vektordatenbanken haben sich als eine Kerntechnologie zur Bewältigung dieser Herausforderung herauskristallisiert. Sie sind nicht nur spezialisierte Datenbanken für die Speicherung hochdimensionaler Vektordaten, sondern auch eine wichtige Infrastruktur für die nächste Generation von KI-Anwendungen.
In diesem Artikel werden wir die Konzepte, Prinzipien und Anwendungsszenarien von Vektordatenbanken erörtern und die aktuellen Mainstream-Open-Source-Vektordatenbanken Weaviate, Milvus und Qdrant vergleichen und analysieren. Ziel ist es, den Lesern einen umfassenden und detaillierten Leitfaden zu Vektordatenbanken an die Hand zu geben, der Ihnen hilft, den Wert von Vektordatenbanken zu verstehen und in realen Projekten fundierte technische Entscheidungen zu treffen.
Was ist eine Vektordatenbank? Von traditionellen Datenbanken zur Vektorsuche
Um zu verstehen, was Vektordatenbanken so einzigartig macht, müssen wir zunächst verstehen, was Vektoren sind und warum herkömmliche Datenbanken mit Vektordaten überfordert sind.
Vektoren: mathematische Darstellung von Daten
Einfach ausgedrückt ist ein Vektor ein mathematisches Hilfsmittel zur Darstellung eines Merkmals oder Attributs von Daten, das als Punkt in einem mehrdimensionalen Raum betrachtet werden kann. Im Zusammenhang mit Vektordatenbanken sprechen wir gewöhnlich über diehochdimensionaler VektorDas bedeutet, dass diese Vektoren eine große Anzahl von Dimensionen haben, die je nach Komplexität der Daten und der erforderlichen Granularität der Darstellung von zehn bis zu Tausenden von Dimensionen reichen.
Vektorielle Einbettung: strukturierte Darstellung unstrukturierter Daten
Wie also werden diese hochdimensionalen Vektoren erzeugt? Die Antwort lautet: durch dieeingebettete Funktiondie unstrukturierte Rohdaten (z. B. Text, Bilder, Audio, Video usw.) in Vektoren umwandelt. Dieser Umwandlungsprozess, genanntVektorielle EinbettungDabei werden Methoden wie maschinelle Lernmodelle, Worteinbettungstechniken oder Merkmalsextraktionsalgorithmen verwendet, um die semantischen Informationen oder Merkmale der Daten in einem kompakten Vektorraum zu komprimieren.
Für Textdaten können wir zum Beispiel ein Tool wie Word2Vec, GloVe, FastText oder Transformator Modelle (z. B. BERT, Sentence-BERT) und andere Techniken wandeln jedes Wort, jeden Satz oder sogar den gesamten Text in einen Vektor um. Im Vektorraum liegen die Vektoren von Texten, die semantisch ähnlich sind, näher beieinander.
Die zentrale Stärke von Vektordatenbanken: die Ähnlichkeitssuche
Herkömmliche Datenbanken wie relationale Datenbanken (z. B. PostgreSQL, MySQL) und NoSQL-Datenbanken (z. B. MongoDB, Redis) sind in erster Linie für die Speicherung und Abfrage strukturierter oder halbstrukturierter Daten konzipiert und eignen sich hervorragend für den Datenabruf auf der Grundlage exakter Übereinstimmungen oder vordefinierter Kriterien. Wenn es jedoch um die Abfrage von Daten auf der Grundlage vonsemantische ÄhnlichkeitvielleichtKontextuelle BedeutungDas Auffinden von Daten macht herkömmliche Datenbanken ineffizient.
Um diese Lücke zu schließen, sind Vektordatenbanken entstanden. Ihre Hauptstärke liegt in der FähigkeitEffiziente Durchführung von Ähnlichkeitssuche und Retrieval auf der Grundlage von Vektorabstand oder Ähnlichkeit. Das bedeutet, dass wir Daten auf der Grundlage ihrer semantischen oder merkmalsbezogenen Ähnlichkeit finden können, ohne einen exakten Schlüsselwortabgleich vornehmen zu müssen.
Hauptunterschiede zwischen Vektordatenbanken und herkömmlichen Datenbanken
Um die Einzigartigkeit von Vektordatenbanken besser zu verstehen, fassen wir die wichtigsten Unterschiede zwischen ihnen und herkömmlichen Datenbanken wie folgt zusammen
Charakterisierung | Vektordatenbank | Traditionelle Datenbank (Relational/NoSQL) |
---|---|---|
Datentyp | Vektoreinbettung (hochdimensionale Vektoren) | Strukturierte Daten (Tabellarische Daten, JSON-Dokumente, usw.) |
Kerngeschäft | Ähnlichkeitssuche (Berechnung der Vektorähnlichkeit) | Abfrage von exakten Übereinstimmungen, Bereichsabfrage, Aggregationsanalyse usw. |
Index Typ | Vektorielle Indizes (ANN-Indizes usw.) | B-Baum-Indizes, Hash-Indizes, invertierte Indizes, usw. |
Anfrage Methode | Auf der Grundlage von Vektorabständen (Kosinusabstand, Euklidischer Abstand usw.) | SQL-basierte Abfrage, Key-Value-Abfrage, Volltextsuche, etc. |
Anwendungsszenario | Semantische Suche, Empfehlungssysteme, Empfehlungssysteme RAGBild-/Audio-/Video-Recherche | Transaktionsverarbeitung, Datenanalyse, Content Management, Caching |
Datenmodell | Vektorraummodell | Relationales Modell, Dokumentenmodell, Schlüssel-Wert-Modell, Graphenmodell, usw. |
Der Wert von Vektordatenbanken: Ein Eckpfeiler für KI-Anwendungen
Vektordatenbanken spielen im Bereich der künstlichen Intelligenz und des maschinellen Lernens eine immer wichtigere Rolle, insbesondere in den folgenden Bereichen:
- Suchmaschinen der nächsten Generation: Implementieren Sie die semantische Suche, um die Intention der Benutzeranfrage zu verstehen und relevantere und kontextbezogene Suchergebnisse zu liefern, nicht nur den Abgleich von Schlüsselwörtern.
- Intelligente Empfehlungssysteme: Personalisierte Empfehlungen, die auf dem historischen Verhalten des Nutzers und den Eigenschaften der Artikel basieren, um die Genauigkeit der Empfehlungen und die Nutzererfahrung zu verbessern.
- Anwendungen zur Modellierung großer Sprachen (LLM): LLM verfügt über ein Langzeitgedächtnis und effiziente kontextbezogene Suchfunktionen, die den Aufbau von leistungsfähigeren Chatbots, Q&A-Systemen und Anwendungen zur Inhaltserstellung unterstützen.
- Multimodale Datenabfrage: Ermöglichung einer modusübergreifenden Ähnlichkeitssuche, z. B. die Suche nach verwandten Bildern oder Videos anhand von Textbeschreibungen.
Zusammenfassend lässt sich sagen, dass Vektordatenbanken die wichtigste Infrastruktur für die Verarbeitung und den Abruf unstrukturierter Daten im Zeitalter der KI sind. Sie ermöglichen es Maschinen, Semantik zu verstehen und Ähnlichkeiten zu erkennen, was zahlreiche innovative KI-Anwendungen ermöglicht.
Vektordatenbanken und RAG: Aufbau eines leistungsfähigen Systems zur Erzeugung von Sucherweiterungen
Der Kerngedanke von RAG besteht darin, relevante Informationen aus einer externen Wissensbasis abzurufen, bevor der Text generiert wird, und dann die abgerufenen Informationen als Kontext zu verwenden, um das Sprachmodell zu leiten, damit es genauere und zuverlässigere Antworten generiert.
Die zentrale Rolle der Vektordatenbanken im RAG-System
Im RAG-System übernimmt die Vektordatenbank die Rolle desRepositoryDas RAG-System ist für die Speicherung und den effizienten Abruf von Vektordarstellungen umfangreicher Wissensdokumente zuständig und läuft in etwa wie folgt ab:
- Aufbau einer Wissensbasis:
- Vektorielle Einbettung von Wissensdokumenten (z.B. Text, Webseiten, PDFs, etc.) in Vektordarstellungen.
- Speichern Sie diese Vektoren und die zugehörigen Dokument-Metadaten in einer Vektordatenbank.
- Abrufen von Anfragen:
- Empfangen Sie die Benutzerabfrage und betten Sie die Abfrage auch vektoriell ein, um den Abfragevektor zu erhalten.
- Eine Ähnlichkeitssuche wird in einer Vektordatenbank unter Verwendung des Abfragevektors durchgeführt, um den Dokumentvektor zu finden, der dem Abfragevektor am ähnlichsten ist.
- Abrufen des Originaldokuments oder Dokumentfragments, das dem abgerufenen Dokumentvektor entspricht.
- Textgenerierung:
- Die abgerufenen Dokumentfragmente werden zusammen mit der Benutzeranfrage als Kontext in das Large Language Model (LLM) eingespeist.
- LLM generiert die endgültige Antwort oder den Text auf der Grundlage von Kontextinformationen.

Semantische Suche für Bilder mit Milvus
Warum sind Vektordatenbanken ideal für RAG-Systeme?
- Effiziente semantische Retrievalfunktionen: Vektordatenbanken sind in der Lage, Dokumente auf der Grundlage semantischer Ähnlichkeit abzurufen, was perfekt zu RAG-Systemen passt, die kontextbezogene Informationen aus der Wissensdatenbank finden müssen, die für die Anfrage des Benutzers relevant sind.
- Verwaltung umfangreicher Wissensdateien: RAG-Systeme müssen in der Regel mit einer großen Anzahl von Wissensdokumenten umgehen, und Vektordatenbanken können massive Vektordaten effizient speichern und abrufen, um die Skalierungsanforderungen von RAG-Systemen zu erfüllen.
- Schnelle Reaktion auf Benutzeranfragen: Die Ähnlichkeitssuche in der Vektordatenbank ist sehr schnell und sorgt dafür, dass das RAG-System schnell auf Nutzeranfragen antwortet.
Auswahl der Vektordatenbank: Schlüsselentscheidungen für RAG-Systeme
Die Wahl der richtigen Vektordatenbank ist entscheidend für die Leistung und Effektivität eines RAG-Systems. Verschiedene Vektordatenbanken unterscheiden sich in Bezug auf Leistung, Funktionalität und Benutzerfreundlichkeit. In den folgenden Kapiteln werden wir die Auswahlfaktoren von Vektordatenbanken erörtern und drei hervorragende Open-Source-Vektordatenbanken, nämlich Weaviate, Milvus und Qdrant, vergleichen und analysieren, um Ihnen bei der Auswahl des am besten geeigneten Eckpfeilers für Ihr RAG-System zu helfen.
Auswahl der Vektordatenbank: Konzentrieren Sie sich auf diese Schlüsselfaktoren, nicht nur auf die Leistung
Bevor wir uns mit dem Vergleich spezifischer Produkte befassen, sollten wir die wichtigsten Aspekte bei der Auswahl von Vektordatenbanken ermitteln. Diese Faktoren wirken sich direkt auf die Leistung, Skalierbarkeit, Stabilität und Kosten des RAG-Systems oder der KI-Anwendung aus, die Sie entwickeln.
1) Open Source vs. Kommerzialisierung: Autonomie vs. Benutzerfreundlichkeit
- Open-Source-Vektordatenbanken (z. B. Milvus, Weaviate, Qdrant, Vespa):
- Vorteil: Höhere Autonomie und Flexibilität für freie Anpassungen und sekundäre Entwicklung, bessere Kontrolle der Datensicherheit und der Systemarchitektur. Unterstützt von einer aktiven Open-Source-Gemeinschaft, mit schneller Iteration und schneller Problemlösung. In der Regel kostengünstig oder sogar kostenlos zu nutzen.
- Herausforderung: Installation, Betrieb und Wartung sowie Fehlerbehebung erfordern einige technische Kenntnisse. Die kommerzielle Unterstützung kann relativ schwach sein, so dass man sich auf die Gemeinschaft oder selbst initiierte Problemlösungen verlassen muss.
- Anwendbare Szenarien: Projekte, die ein hohes Maß an Autonomie und Kontrolle erfordern, von einem technischen Team unterstützt werden, die Kosten senken wollen und in der Lage sind, sich aktiv an der gemeinschaftlichen Koproduktion zu beteiligen.
- Kommerzielle Vektordatenbanken (z. B. gehostete Vektordatenbanken von Cloud-Anbietern wie Pinecone usw.):
- Vorteil: Sie bietet in der Regel umfassende verwaltete Dienste und technischen Support, vereinfacht die Bereitstellung und die Komplexität der Betriebsabläufe und ist einfach in Betrieb zu nehmen und zu nutzen. Leistung und Stabilität sind kommerziell erprobt und die Servicequalität ist garantiert.
- Herausforderung: Höhere Kosten und mit der Zeit möglicherweise erhebliche Ausgaben. Mögliches Risiko der Anbieterbindung, begrenzte Anpassungsmöglichkeiten und sekundäre Entwicklung.
- Anwendbare Szenarien: Projekte, die auf Benutzerfreundlichkeit und Stabilität Wert legen, schnell loslegen möchten, den Betriebs- und Wartungsaufwand reduzieren wollen, über ein gutes Budget verfügen und nicht auf das Risiko einer Anbieterbindung achten.
2) CRUD-Unterstützung: dynamische Daten vs. statische Daten
- CRUD-Unterstützung (Erstellen, Lesen, Aktualisieren, Löschen):
- Wichtigkeit: Kritisch für RAG-Systeme und viele dynamische Datenanwendungen. Wenn Daten häufig aktualisiert, gelöscht oder geändert werden müssen, ist es wichtig, eine Vektordatenbank zu wählen, die vollständige CRUD-Operationen unterstützt.
- Auswirkungen: Eine Datenbank, die CRUD-Operationen unterstützt, erleichtert die Verwaltung sich dynamisch ändernder Daten und sorgt dafür, dass die Wissensdatenbank in Echtzeit und präzise ist.
- Statische Datenszenarien:
- Nachfrage: Wenn es sich um statische Daten handelt, wie z. B. eine vorgefertigte Wissensdatenbank, und die Daten sehr selten aktualisiert werden, könnte auch eine schreibgeschützte Vektorbibliothek oder eine Datenbank, die kein vollständiges CRUD unterstützt, geeignet sein.
- Wählen Sie aus: In diesem Fall können einige leichtgewichtige Vektorbibliotheken oder einige Vektordatenbanken in Betracht gezogen werden, die sich auf die Hochleistungsabfrage mit einer schwachen Datenaktualisierungsfunktion konzentrieren.
3. verteilte Architektur und Skalierbarkeit: Bewältigung großer Datenmengen und hoher Gleichzeitigkeit
- Verteilte Architektur:
- Die Notwendigkeit: RAG-Systeme und viele KI-Anwendungen müssen oft große Datenmengen und hochgradig gleichzeitige Anfragen verarbeiten. Verteilte Architekturen sind der Schlüssel zur Bewältigung dieser Herausforderungen.
- Vorteil: Verteilte Vektordatenbanken können Daten speichern, die über mehrere Server verteilt sind, und unterstützen parallele Abfragen, wodurch die Datenverarbeitungsleistung und die Abfrageleistung verbessert werden.
- Skalierbarkeit:
- Horizontale Ausdehnung: Eine gute Vektordatenbank sollte leicht horizontal skaliert werden können, indem Knoten hinzugefügt werden, um das Wachstum der Datenmenge und der Anfragen zu bewältigen.
- Elastischer Stretch: Es ist wünschenswert, eine elastische Skalierung zu unterstützen, um die Ressourcen dynamisch an die tatsächliche Last anzupassen und so Kosten und Leistung zu optimieren.
4) Datenreplikation und Hochverfügbarkeit: Gewährleistung der Datensicherheit und der Stabilität der Dienste
- Daten kopieren:
- Die Rolle: Der Datenkopiermechanismus ist ein wichtiges Mittel zur Gewährleistung der Datensicherheit und der hohen Systemverfügbarkeit.
- Verwirklichung: Durch die Speicherung identischer Datenkopien auf mehreren Servern arbeitet das System auch bei einem Ausfall einiger Knoten normal weiter, ohne dass Daten verloren gehen.
- Hohe Verfügbarkeit:
- Wichtigkeit: Hochverfügbarkeit ist entscheidend für RAG-Systeme und Online-Anwendungen, die eine hohe Dienststabilität erfordern.
- Sicherheitsvorkehrungen: Mechanismen wie Datenkopie, automatische Fehlerübertragung sowie Überwachung und Alarmierung sorgen für einen kontinuierlichen und stabilen Betrieb des Systems.
5. die Leistung: Suchgeschwindigkeit und Genauigkeit
- Latenzzeit:
- Indikatoren: Abfragelatenz, d. h. die Zeit zwischen der Einleitung einer Abfrage und dem Erhalt von Ergebnissen.
- Beeinflussende Faktoren: Indizierungsalgorithmen, Hardware-Ressourcen, Datengröße, Abfragekomplexität usw.
- Nachfrage: Für Anwendungen mit hohen Echtzeitanforderungen ist es notwendig, eine Vektordatenbank mit hoher Abrufgeschwindigkeit zu wählen.
- Recall, Präzision:
- Indikatoren: Recall und Precision, die die Genauigkeit der Ergebnisse der Ähnlichkeitssuche messen.
- Wiegen: In der Regel gibt es einen Kompromiss zwischen Abrufgeschwindigkeit und Präzision, und das richtige Gleichgewicht muss je nach Anwendungsszenario gewählt werden. Bei einem RAG-System kann zum Beispiel die Wiederauffindbarkeit wichtiger sein, um sicherzustellen, dass so viele relevante Dokumente wie möglich abgerufen werden.
6. laufende Wartung und Unterstützung durch die Gemeinschaft: eine Garantie für einen langfristig stabilen Betrieb
- Laufende Wartung:
- Wichtigkeit: Die Technologie der Vektordatenbanken entwickelt sich rasch weiter, und die laufende Wartung und Aktualisierung ist von entscheidender Bedeutung.
- Problematische Punkte: ob die Datenbank kontinuierlich von einem aktiven Entwicklungsteam gepflegt und aktualisiert wird, das Fehler rechtzeitig behebt und mit den neuesten technologischen Trends Schritt hält.
- Unterstützung der Gemeinschaft:
- Wert: Eine aktive Community bietet eine Fülle von Dokumentationen, Tutorien, Beispielcode und Antworten auf Fragen und senkt die Hürden für das Erlernen und die Nutzung.
- Bewertung: Die Unterstützung durch die Community kann anhand von Kennzahlen wie Aktivität in GitHub-Repositories, Buzz in Community-Foren, Anzahl der Nutzer usw. bewertet werden.
7 Kostenüberlegungen: Open Source vs. Kommerzialisierung, Eigenbau vs. Hosting
- Open Source vs. Kommerzialisierungskosten:
- Offene Quelle: Die Datenbanksoftware selbst ist kostenlos, aber es fallen Hardwarekosten, Betriebskosten, Arbeitskosten usw. an.
- Kommerzialisierung: Es fallen Gebühren für Softwarelizenzen oder Cloud-Dienste an, aber möglicherweise auch niedrigere Betriebskosten und bessere technische Unterstützung.
- Selbstbau vs. Hosting-Kosten:
- Selbstbau: Sie müssen für die Beschaffung der Hardware, die Bereitstellung, den Betrieb und die Wartung, die Überwachung usw. verantwortlich sein. Die Anfangsinvestitionen und die langfristigen Betriebs- und Wartungskosten sind hoch.
- Hosting: Bei der Nutzung eines gehosteten Vektordatenbankdienstes eines Cloud-Anbieters muss man sich nicht um die zugrundeliegende Infrastruktur kümmern, er wird nach Aufwand bezahlt und hat eine flexiblere Kostenstruktur, kann aber langfristig teurer sein.
Synthese:
Bei der Auswahl einer Vektordatenbank müssen Sie die oben genannten sieben Schlüsselfaktoren berücksichtigen und auf der Grundlage von spezifischen Anwendungsszenarien, Bedürfnissen und Budgets Kompromisse eingehen und Entscheidungen treffen. Es gibt keine absolut optimale Datenbank, sondern nur die am besten geeignete Datenbank für ein bestimmtes Szenario.
Vergleich verschiedener Arten von Vektordatenbanklösungen: ein Panorama der Technologieauswahl
Angesichts der vielen Vektordatenbanklösungen auf dem Markt hilft Ihnen die Kenntnis ihrer Typen und Funktionen, die Auswahl einzugrenzen und die richtige Lösung für Sie schneller zu finden. Wir klassifizieren Vektordatenbanklösungen grob in die folgenden fünf Kategorien:
1. vektorielle Bibliotheken (FAISS, HNSWLib, ANNOY): leichtgewichtige Indizes, Werkzeuge zur Beschleunigung statischer Daten
Vektorbibliotheken wie FAISS (Facebook AI Similarity Search), HNSWLib (Hierarchical Navigable Small World Graphs Library) und ANNOY (Approximate Nearest Neighbors Oh Yeah), die im WesentlichenSoftwarebibliotheken zur Erstellung von Vektorindizes und zur Durchführung von Ähnlichkeitssuchen. Sie laufen in der Regel als Bibliotheken, die in Ihre Anwendung eingebettet sind, und nicht als eigenständige Datenbankdienste.
Schneidkante::
- Hohe Leistung: Der Schwerpunkt liegt auf Algorithmen zur Vektorindizierung und Ähnlichkeitssuche, die für eine extrem schnelle Suche optimiert sind.
- Leichtes Gewicht: Geringer Ressourcenbedarf, einfache Bereitstellung und leichte Integration in bestehende Anwendungen.
- Ausgereift und stabil: Nach einer langen Zeit der Entwicklung und breiten Anwendung ist die Technologie ausgereift und zuverlässig und wird von der Gemeinschaft gut unterstützt.
Einschränkungen::
- Es überwiegen statische Daten: Er wird hauptsächlich zur Speicherung statischer Daten verwendet, und es ist nicht einfach, die Daten zu aktualisieren, nachdem der Index erstellt wurde. Mit Ausnahme von HNSWLib unterstützen die meisten Vektorbibliotheken keine CRUD-Operationen, was das Aktualisieren und Löschen von Daten erschwert.
- Eingeschränkte Funktionalität: In der Regel nur grundlegende Vektorindex und Ähnlichkeitssuche Funktion, Mangel an verteilten, Daten zu kopieren, Rechte-Management, Überwachung Operationen und Wartung und andere erweiterte Datenbank-Funktionen.
- Hohe Betriebs- und Wartungskosten: Sie müssen Ihr eigenes Bereitstellungssystem aufbauen, Datenreplikation und Fehlertoleranz handhaben und es fehlen umfassende O&M-Tools und Verwaltungsschnittstellen.
Anwendbare Szenarien::
- Ähnlichkeitssuche für statische Datensätze: Zum Beispiel Szenarien, in denen die Daten nur selten aktualisiert werden, wie offline erstellte Wissensdatenbanken, Warendatenbanken, Gesichtsdatenbanken usw.
- Szenarien mit sehr hohen Leistungsanforderungen, aber geringer Häufigkeit von Datenaktualisierungen: Beispiele hierfür sind die Offline-Indexerstellung für Suchmaschinen und die Offline-Indizierung von Merkmalen für umfangreiche Empfehlungssysteme.
- als Vektorindex-Beschleunigungskomponente für andere Datenbanken: So beschleunigt beispielsweise die Verwendung von Vektorbibliotheken in Verbindung mit Datenbanken wie Redis, MySQL usw. die Ähnlichkeitssuche.
Repräsentative Produkte:
- FAISS (Facebook AI Similarity Search): Entwickelt von Facebook AI Research, weit verbreitet im akademischen Bereich und in der Industrie. Bietet eine Vielzahl effizienter Indizierungsalgorithmen wie IVF, PQ, HNSW usw. und ist besonders gut für große Datensätze geeignet.
- HNSWLib (Hierarchical Navigable Small World Graphs Library): HNSWLib ist im Vergleich zu anderen Vektorbibliotheken flexibler und unterstützt CRUD-Operationen und gleichzeitiges Lesen und Schreiben.
- ANNOY (Approximate Nearest Neighbors Oh Yeah): Von Spotify entwickelt, um sich auf die schnelle ungefähre Suche nach dem nächsten Nachbarn zu konzentrieren. Sie ist für ihr sauberes und effizientes Design bekannt und eignet sich für latenzempfindliche Anwendungsszenarien.
2) Datenbanken für die Volltextsuche (ElasticSearch, OpenSearch): ergänzend zur Vektorsuche, keine Kernfunktion
Volltext-Suchdatenbanken wie ElasticSearch und OpenSearch sind in erster Linie für folgende Zwecke konzipiertVolltextsuche und StichwortsucheSie basieren auf der Technologie der invertierten Indizierung und sind leistungsfähig bei der Textsuche und der erweiterten Analyse. In den letzten Jahren haben sie auch begonnen, Vektorsuchfunktionen hinzuzufügen, aber die Vektorsuche ist nicht ihre Hauptstärke.
Schneidkante::
- Leistungsstarke Volltextsuchfunktionen: Unterstützung für komplexe Textabfragen, Worttrennung, Synonyme, Rechtschreibkorrektur, Relevanzsortierung (z. B. BM25) und andere Funktionen.
- Reichhaltige Analytik: Bietet Aggregation, Statistiken, Berichte und Datenvisualisierung für Datenanalysen und Geschäftseinblicke.
- Ausgereifte Ökosysteme: Mit einer großen Benutzerbasis und einem gut etablierten Ökosystem ist es einfach zu integrieren und zu verwenden, mit einer Fülle von peripheren Tools und Plug-ins.
Einschränkungen::
- Die Leistung des Vektorabrufs ist schwach: Im Vergleich zu dedizierten Vektordatenbanken ist die Leistung der Vektorähnlichkeitssuche gering, insbesondere bei hochdimensionalen Daten und großen Datensätzen, bei denen die Abfragelatenz hoch und die Genauigkeit möglicherweise unzureichend ist.
- Hoher Verbrauch von Ressourcen: Um Funktionen wie die Volltextsuche und -analyse zu unterstützen, ist der Ressourcenverbrauch hoch, und die Kosten für Bereitstellung, Betrieb und Wartung sind hoch.
- Nicht gut bei der semantischen Suche: Sie stützt sich hauptsächlich auf den Abgleich von Schlüsselwörtern und die invertierte Indizierung, wobei das semantische Verständnis begrenzt ist, was es schwierig macht, komplexe semantische Suchanforderungen zu erfüllen.
Anwendbare Szenarien::
- Die Stichwortsuche ist die Hauptanwendung, die durch das Vektor-Retrieval ergänzt wird: Bei der Produktsuche auf E-Commerce-Websites und der Artikelsuche auf Nachrichten-Websites wird beispielsweise hauptsächlich nach Schlüsselwörtern gesucht, und die Vektorsuche wird als Hilfsfunktion verwendet, um die semantische Relevanz der Suche zu verbessern.
- Hybride Suchszenarien, die eine Kombination aus Volltextsuche und Vektorsuche erfordern: Das intelligente Kundenservicesystem, das sowohl die Stichwort- als auch die semantische Suche unterstützt, erfüllt beispielsweise die unterschiedlichen Anforderungen der Nutzer.
- Protokollanalyse, Überwachung von Alarmen und andere Szenarien, die leistungsstarke Analysefunktionen erfordern: Nutzen Sie die leistungsstarken Analysefunktionen der Volltextsuchdatenbank für die Protokollanalyse, Überwachung und Alarmierung, Sicherheitsüberprüfung usw.
repräsentatives Produkt::
- ElasticSearch: Basiert auf Lucene, ist eine der populärsten Open-Source-Volltextsuchmaschinen, weit verbreitet in der Suche, Log-Analyse, Datenvisualisierung und anderen Bereichen.
- OpenSearch: Die Verzweigung von AWS auf der Basis von ElasticSearch und Kibana behält die Kompatibilität mit ElasticSearch bei und fügt neue Funktionen und Verbesserungen zu ElasticSearch hinzu.
Schlussfolgerung: ElasticSearch und OpenSearch bieten zwar Funktionen für die Vektorabfrage, ihre Leistung und Funktionalität bleiben jedoch hinter der von dedizierten Vektordatenbanken zurück. Für RAG-Systeme oder KI-Anwendungen, die sich auf Vektorretrieval konzentrieren, sind dedizierte Vektordatenbanken die bessere Wahl. Volltextsuchdatenbanken eignen sich eher als Ergänzung zum Vektorretrieval denn als Alternative.
3. vektorfähige SQL-Datenbanken (pgvector, Supabase, StarRocks): Vektorerweiterungen für herkömmliche Datenbanken, für leichtgewichtige Anwendungen.
SQL-Datenbanken wie PostgreSQL unterstützen durch Erweiterungen (z. B. pgvector) Vektordatentypen und Fähigkeiten zur Ähnlichkeitssuche. Dadurch können Benutzer Vektordaten in bestehenden relationalen Datenbanken speichern und abfragen, ohne ein neues Datenbanksystem einführen zu müssen.
Schneidkante::
- Einfache Integration: Die nahtlose Integration in bestehende SQL-Datenbanken reduziert die Komplexität des Technologie-Stacks und verringert die Lern- und Migrationskosten.
- Ausgereift und stabil: Die SQL-Datenbanktechnologie ist ausgereift und stabil, verfügt über starke Datenverwaltungs- und Transaktionsverarbeitungsfunktionen und garantiert Datenkonsistenz und Zuverlässigkeit.
- Geringe Kosten für das Lernen: Für Entwickler, die mit SQL vertraut sind, ist der Lernaufwand gering und sie können die Vektorabfragefunktionen schnell nutzen.
Einschränkungen::
- Die Leistung des Vektorabrufs ist begrenzt: Relationale Datenbanken, deren Architektur nicht für die Abfrage von Vektoren ausgelegt ist, sind nicht so leistungsfähig wie spezielle Vektordatenbanken, insbesondere wenn es um große, hochdimensionale Vektordaten geht, bei denen die Abfragelatenz hoch ist.
- Die Skalierbarkeit ist begrenzt: Relationale Datenbanken haben eine relativ schwache Skalierbarkeit, was es schwierig macht, mit massiven Vektordaten und hochgradig gleichzeitigen Abfragen fertig zu werden, und eine begrenzte horizontale Skalierbarkeit.
- Einschränkungen der Vektordimension: Beispielsweise liegt die Obergrenze der von pgvector unterstützten Vektordimensionen bei 2000 Dimensionen, was niedriger ist als bei dedizierten Vektordatenbanken und möglicherweise nicht den Anforderungen hochdimensionaler Vektordaten entspricht.
Anwendbare Szenarien::
- Anwendungen mit kleinen Vektordatenmengen (unter 100.000): Zum Beispiel haben kleine Empfehlungssysteme, einfache Bildsuchen, persönliche Wissensdatenbanken usw. nur geringe Mengen an Vektordaten und niedrige Leistungsanforderungen.
- Anwendung von Vektordaten als Hilfsfunktion: Wird beispielsweise der Produktdatenbank einer E-Commerce-Website ein Produktvektorfeld hinzugefügt, um Produktempfehlungen oder eine ähnliche Produktsuche zu ermöglichen, ist die Vektorabfrage nur eine Hilfsfunktion der Datenbank.
- Anwendungen, die bereits über ausgereifte SQL-Datenbanken verfügen und schnell Vektorabfragefunktionen hinzufügen möchten: In Projekten, die bereits SQL-Datenbanken wie PostgreSQL verwenden und schnell eine Vektorabfragefunktionalität einführen wollen, sollten Sie Erweiterungen wie pgvector verwenden.
repräsentatives Produkt::
- pgvector: Erweiterung für PostgreSQL, entwickelt von Crunchy Data, die Vektordatentypen (Vektor) und Indizes (IVF, HNSW) sowie die Möglichkeit der Suche nach Vektorähnlichkeit bietet.
- Supabase: Open-Source-PaaS-Plattform auf der Basis von PostgreSQL , integriert pgvector , einfach für Benutzer, um schnell Anwendungen zu erstellen, die Vektor-Retrieval unterstützen.
- StarRocks: Eine OLAP-orientierte MPP-Datenbank, die auch eine Vektorabfrage-Funktionalität bietet, aber die Vektorabfrage ist nicht ihre Kernnische und wird hauptsächlich in OLAP-Analyseszenarien verwendet.
Schlussfolgerung: SQL-Datenbanken, die Vektoren unterstützen, wie z. B. pgvector, eignen sich eher für leichtgewichtige Anwendungsszenarien, bei denen die Menge der Vektordaten gering ist, die Leistungsanforderungen nicht hoch sind und die Vektordaten nur als ergänzendes Merkmal der Anwendung verwendet werden. Wenn Vektordaten das Kernstück der Anwendung sind oder ein hoher Bedarf an Skalierbarkeit besteht, wäre eine dedizierte Vektordatenbank die bessere Wahl.
4. vektorfähige NoSQL-Datenbanken (Redis, MongoDB): ein aufstrebendes Unterfangen mit Potenzial und Herausforderungen
NoSQL-Datenbanken wie Redis und MongoDB experimentieren ebenfalls mit der Hinzufügung von Vektorunterstützung, z. B. Redis Vector Similarity Search (VSS) und MongoDB Atlas Vector Search, die NoSQL-Datenbanken die Fähigkeit verleihen, auch Vektordaten zu verarbeiten.
Schneidkante::
- Inhärente Vorteile von NoSQL-Datenbanken: Zum Beispiel Redis für sein leistungsstarkes Caching, die geringe Latenz und den hohen Durchsatz; und MongoDB für sein flexibles Dokumentenmodell, die einfache Skalierbarkeit und die umfangreichen Funktionen zur Dokumentenbearbeitung.
- Technische Neuheit: Sie repräsentiert den Entwicklungstrend der Datenbanktechnologie, indem sie die Fähigkeit zur Vektorabfrage in ausgereifte NoSQL-Datenbanken integriert, mit einem gewissen Innovations- und Entwicklungspotenzial.
Einschränkungen::
- Die Funktionalität ist noch nicht ausgereift: Die Funktionalität der Vektorunterstützung befindet sich noch im Anfangsstadium, d. h. die Funktionen und die Leistung müssen noch verfeinert und validiert werden, und das Ökosystem ist noch relativ unausgereift.
- Schlechte Ökosysteme: Es gibt einen relativen Mangel an einschlägigen Werkzeugen, Bibliotheken und Ökosystemen, deren Nutzung und Pflege kostspielig sein kann, und die Unterstützung der Gemeinschaft ist relativ gering.
- Zu berücksichtigende Leistung: Redis VSS behauptet zwar eine hervorragende Leistung, die tatsächlichen Ergebnisse müssen jedoch in weiteren Szenarien überprüft werden und sind bei hochdimensionalen Daten und großen Datensätzen möglicherweise nicht so gut wie dedizierte Vektordatenbanken.
Anwendbare Szenarien::
- Szenarien mit hohen Leistungsanforderungen und kleinen Mengen an Vektordaten: Beispielsweise erfordern Redis-basierte Echtzeit-Empfehlungssysteme, Online-Werbeanzeigen usw. eine Vektorabfrage mit niedriger Latenz und hohem Durchsatz.
- Szenarien, in denen Sie neue Technologien ausprobieren möchten und bereit sind, ein gewisses Risiko einzugehen: Wer die Technologie ausprobieren möchte, kann die Vektorunterstützungsfunktionen von NoSQL-Datenbanken nutzen, um deren Potenzial zu erkunden.
- Ich verwende bereits eine NoSQL-Datenbank und möchte sie um Vektorabfragefunktionen erweitern: In Projekten, die bereits Redis oder MongoDB verwenden und schnell eine Vektorabfragefunktionalität zusätzlich einführen möchten, können Sie das Vektorerweiterungsmodul verwenden.
repräsentatives Produkt::
- Redis Vector Similarity Search (VSS): Ein Modul für Redis, das Vektorindizierung (HNSW) und Ähnlichkeitssuche mit Schwerpunkt auf hoher Leistung und geringer Latenz für anspruchsvolle Echtzeitszenarien bietet.
- MongoDB Atlas Vektorsuche: Eine neue Funktion in Atlas, dem MongoDB-Cloud-Service, wurde entwickelt, um die Vektorsuche in die MongoDB-Dokumentendatenbank zu integrieren und damit umfassendere Datenverarbeitungsmöglichkeiten zu bieten.
Schlussfolgerung: Die neu hinzugefügten Funktionen zur Unterstützung von Vektoren in NoSQL-Datenbanken befinden sich noch in einem frühen Entwicklungsstadium, und ihre Ausgereiftheit und Stabilität müssen noch weiter überprüft werden. Obwohl sie ein gewisses Potenzial haben, sind sie in Bezug auf Funktionalität und Leistung möglicherweise noch nicht so ausgereift und leistungsstark wie dedizierte Vektordatenbanken. Die Wahl muss sorgfältig bewertet und ihre Grenzen müssen umfassend berücksichtigt werden.
5. dedizierte Vektordatenbanken (Pinecone, Milvus, Weaviate, Qdrant, Vespa, Vald, Chroma, Vearch): für Vektoren entwickelt, erste Wahl für RAG-Systeme und KI-Anwendungen
Dedizierte Vektordatenbanken wie Pinecone, Milvus, Weaviate, Qdrant, Vespa, Vald, Chroma, Vearch usw. sind von Grund auf so konzipiert, dass sie sich auf dieSpeicherung, Indizierung und Abruf von Vektordatensind von Natur aus gut für die Verarbeitung hochdimensionaler Vektordaten geeignet. Sie sind die bevorzugte Lösung für den Aufbau von KI-Anwendungen wie RAG-Systeme, semantische Suche, Empfehlungssysteme und mehr.
Schneidkante::
- Hervorragende Leistung beim Abrufen von Vektoren: Sie ist für die Vektorähnlichkeitssuche optimiert und zeichnet sich durch eine hohe Abrufgeschwindigkeit und Genauigkeit aus und kann große hochdimensionale Vektordaten effizient verarbeiten.
- Leistungsstarke Skalierbarkeit: In der Regel nimmt verteilte Architektur, leicht zu skalieren horizontal, kann mit massiven Daten und hohe Gleichzeitigkeit Abfrage zu bewältigen, um die Bedürfnisse der groß angelegten Anwendungen zu erfüllen.
- Reiche Funktionalität: Sie bietet in der Regel perfekte Funktionen für die Verwaltung von Vektordaten, den Aufbau von Indizes, die Optimierung von Abfragen, die Überwachung und den Betrieb und die Wartung sowie umfangreiche Algorithmen für die Ähnlichkeitssuche und Distanzmetriken.
- Flexible Indizierungsoptionen: Unterstützt mehrere Vektorindizierungsalgorithmen (z. B. IVF, HNSW, PQ, Baumindizierung usw.), so dass Sie je nach Anwendungsszenario und Dateneigenschaften die optimale Indizierungsstrategie wählen können.
- Ausgereiftes Ökosystem (einige Produkte): Einige der Produkte verfügen über aktive Gemeinschaften und gut etablierte Ökosysteme, die umfangreiche Dokumentationen, Tools und Integrationslösungen bereitstellen, die einfach zu verwenden und zu integrieren sind.
Einschränkungen::
- Höhere Lernkosten: Im Vergleich zu herkömmlichen Datenbanken können dedizierte Vektordatenbanken eine steilere Lernkurve aufweisen und erfordern ein Verständnis der Vektorindizierung, der Ähnlichkeitssuche und anderer verwandter Konzepte.
- Die Technologieauswahl ist komplex: Es gibt viele Produkte mit unterschiedlichen Funktionen und Merkmalen, und die Auswahl erfordert eine sorgfältige Bewertung, um die Vor- und Nachteile der verschiedenen Produkte zu vergleichen.
- Teilweise Kommerzialisierung von Produkten: Einige der besten dedizierten Vektordatenbanken sind kommerzielle Produkte (z. B. Pinecone), deren Nutzung teurer ist und bei denen die Gefahr einer Anbieterbindung besteht.
Anwendbare Szenarien::
- Die Anwendungen konzentrieren sich auf die Suche nach Vektoren: Bei RAG-Systemen, semantischer Suche, Bildsuche, Audiosuche, Videosuche, Empfehlungssystemen, bioinformatischen Analysen usw. ist die Vektorabfrage eine Kernfunktion der Anwendung.
- Anwendungen, die große Mengen an hochdimensionalen Vektordaten verarbeiten müssen: So erfordern beispielsweise große Wissensgraphen, umfangreiche Produktbibliotheken und die Analyse des Nutzerverhaltens die Verarbeitung umfangreicher hochdimensionaler Vektordaten.
- Anwendungen mit hohen Anforderungen an Abrufleistung und Genauigkeit: So stellen beispielsweise die Kontrolle finanzieller Risiken, die Sicherheitsüberwachung und genaue Empfehlungen strenge Anforderungen an die Abrufgeschwindigkeit und -genauigkeit.
- Anwendungen, die flexible Skalierbarkeit und hohe Verfügbarkeit erfordern: So müssen beispielsweise große Online-Dienste und Cloud-Plattformen eine horizontale Skalierung und hohe Verfügbarkeit unterstützen, um die Stabilität und Zuverlässigkeit der Dienste zu gewährleisten.
repräsentatives Produkt::
- Tannenzapfen: Kommerziell verfügbare, cloudbasierte Vektordatenbank, die von einem Team von Fachleuten gepflegt wird und einfach zu bedienende und hoch skalierbare Vektorabrufdienste bietet. Sie ist für ihre Benutzerfreundlichkeit und hohe Leistung bekannt und ein Vertreter der Cloud-basierten Vektordatenbanken. Allerdings sind der Open-Source-Charakter und die Anpassungsfähigkeit eingeschränkt, und die kostenlose Version bietet nur begrenzte Funktionen.
- Milvus: Open-Source-verteilte Vektordatenbank, geführt von der Firma Zilliz, leistungsstark, funktionsreich, aktive Gemeinschaft, ist der Maßstab der Open-Source-Vektordatenbank. Unterstützt eine Vielzahl von Index-Typen, Abstandsmetriken und Abfragemethoden, kann flexibel sein, um mit einer Vielzahl von Anwendungsszenarien umzugehen.
- Weaviate: Die von der deutschen Firma SeMI Technologies entwickelte Open-Source-Graph-Vektor-Datenbank kombiniert die Vektorsuche mit der Graph-Datenbank-Technologie und bietet so einzigartige Datenmodellierungs- und Abfragefunktionen. Unterstützt die Abfragesprache GraphQL, um komplexe Datenabfragen und -analysen zu erleichtern.
- Qdrant: Open-Source-Vektordatenbank, entwickelt von einem russischen Team, geschrieben in der Sprache Rust, mit Schwerpunkt auf Leistung und Benutzerfreundlichkeit, leichtgewichtige Architektur, geringer Ressourcenverbrauch. Beliebt für seine hohe Leistung, niedrige Latenz und einfache Bereitstellung.
- Vespa: Entwickelt von Yahoo und Open-Source-Suchmaschine und Vektor-Datenbank, leistungsstark, hervorragende Leistung, aber die Architektur ist komplexer, steile Lernkurve. Geeignet für Szenarien mit sehr hohen Anforderungen an Leistung und Funktionalität.
- Vald: Verteilte Open-Source-Vektordatenbank, entwickelt von einem japanischen Team, das sich auf die hochpräzise und hochzuverlässige Abfrage von Vektoren konzentriert. Der Schwerpunkt liegt auf hoher Präzision und geringer Latenz, geeignet für Szenen mit sehr hohen Anforderungen an die Präzision. Allerdings gibt es Mängel bei der Integration mit Langchain, und die Community ist klein.
- Vearch: Die von einem chinesischen Team entwickelte verteilte Open-Source-Vektordatenbank bietet leistungsstarke, hochverfügbare Vektorabrufdienste. Der Schwerpunkt liegt auf Benutzerfreundlichkeit und Skalierbarkeit und eignet sich für Projekte, die schnell Vektorabrufanwendungen erstellen müssen. Es gibt Defizite bei der Integration mit Langchain und die Community ist klein.
- Chroma: Chroma ist eine quelloffene, eingebettete Vektordatenbank, die auf Leichtigkeit und Benutzerfreundlichkeit ausgerichtet ist und SQLite als Dokumentenspeicher verwendet. Chroma eignet sich für die lokale Entwicklung, Prototyping oder kleine Anwendungen mit relativ begrenzter Skalierbarkeit und Effizienz. Chroma wurde speziell für Audiodaten entwickelt, ist aber nicht für die Verarbeitung von Textdaten optimiert, und es gibt nur wenige umfassende Informationen zu Leistungsvergleichen.
Schlussfolgerung: Für RAG-Systeme und die meisten KI-Anwendungen sind spezielle Vektordatenbanken die beste Wahl. Sie sind besser in Bezug auf Leistung, Funktionalität und Skalierbarkeit, um den Anforderungen dieser Anwendungen besser gerecht zu werden. Unter den vielen dedizierten Vektordatenbanken gehören Weaviate, Milvus, Qdrant und Vespa zu den beliebtesten und am weitesten verbreiteten.
Um die drei ausgezeichneten Open-Source-Vektordatenbanken Weaviate, Milvus und Qdrant besser vergleichen zu können, haben wir sie in der folgenden Tabelle zusammengefasst:
umfassende Datenbank | Qdrant | Weaviate | Milvus |
---|---|---|---|
Quelloffen und selbstgehostet | sein | sein | sein |
Open-Source-Protokoll | Apache-2.0 | BSD | Apache-2.0 |
Entwicklungssprache | Rost | Weiter | Go, C++ |
Github-Sterne (ab 2024) | 17k+ | 9.2k+ | 26.2k+ |
Erstes Veröffentlichungsdatum | 2021 | 2019 | 2019 |
SDK | Python, JS, Go, Java, .Net, Rust | Python, JS, Java, Go | Python, Java, JS, Go |
Gehostete Cloud-Dienste | sein | sein | sein |
Integrierte Texteinbettung | FastEmbed | sein | sein |
Hybridsuche | sein | RRF*+RSF* | Multivektor-Mischung im Tisch |
Filterung von Meta-Informationen | sein | sein | sein |
BM25 Unterstützung | sein | sein | sein |
Text-Suche | sein | sein | sein |
Ein-Punkt-Multivektor (math.) | sein | sein | sein |
Tensor-Suche | sein | sein | sein |
Langchain-Integration | sein | sein | sein |
Lama-Index-Integration | sein | sein | sein |
Suche nach geografischen Informationen | sein | sein | sein |
Unterstützung von mehreren Mandanten | über Sammlungen/Metadaten | sein | sein |
Zusammenfassung:
- Qdrant: Leichtgewichtige Architektur , geringer Ressourcen-Overhead , hervorragende Leistung , einfache Bereitstellung und Nutzung , Rust-Sprachentwicklung , Fokus auf Leistung und Effizienz .
- Weaviate: Umfassende Funktionen, Integration von Vektorsuche, Objektspeicherung und invertiertem Index, Unterstützung für GraphQL-Abfragen, Datenmodellierungsfunktionen, Entwicklung der Sprache Go, aktive Community.
- Milvus: Starke Leistung, reiche Funktionalität, aktive Gemeinschaft, Unterstützung für eine Vielzahl von Index-Typen und Abfrage-Methoden, kann flexibel mit einer Vielzahl von komplexen Szenarien, Go und C ++ Sprache Entwicklung, ökologische Perfektion.
Sie können die Vektordatenbank wählen, die am besten zu Ihren Bedürfnissen, Technologiepräferenzen und Teamfähigkeiten passt.
Vektordatenbank-Suchmethoden erklärt: Die vielen Möglichkeiten der Vektorsuche erschließen
Die Kernfunktion von Vektordatenbanken ist die Ähnlichkeitssuche, und verschiedene Vektordatenbanken bieten eine Vielzahl von Suchmethoden, um unterschiedlichen Anwendungsanforderungen gerecht zu werden. Das Verständnis dieser Suchmethoden wird Ihnen helfen, Vektordatenbanken effektiver zu nutzen, um leistungsfähigere KI-Anwendungen zu entwickeln.
6) Vergleich der Suchmethoden in Vektordatenbanken
Wir werden uns auf die wichtigsten Suchmethoden von drei Datenbanken konzentrieren, Milvus, Weaviate und Qdrant:
6.1 Milvus: Flexible und abwechslungsreiche Suchstrategien für verschiedene Szenarien
Milvus bietet eine reichhaltige und flexible Suchstrategie, Sie können die geeignete Suchmethode entsprechend den verschiedenen Datenstrukturen und Abfrageanforderungen wählen.
- Einzelne Vektorsuche: Dies ist die einfachste Art der Suche, bei der die
search()
Methode, die einen Abfragevektor mit vorhandenen Vektoren in der Sammlung vergleicht und die ähnlichsten Entity-IDs und deren Abstände zurückgibt. Sie können die Vektorwerte und Metadaten der zurückgegebenen Ergebnisse auswählen. Ideal für einfache Ähnlichkeitssuchen, z. B. die Suche nach dem ähnlichsten Produkt zu einem bestimmten Artikel, die Suche nach dem ähnlichsten Bild zu einem bestimmten Bild, usw. - Multi-Vektor-Suche: für Sammlungen, die mehrere Vektorfelder enthalten, durch
hybrid_search()
Methode. Die Methode kann mehrere ANN-Suchanfragen (Approximate Nearest Neighbour) gleichzeitig ausführen und verschmilzt und ordnet die Ergebnisse neu an, um die relevantesten Treffer zu liefern. Die neueste Version 2.4.x von Milvus unterstützt die Suche mit bis zu 10 Vektoren. Die Suche mit mehreren Vektoren eignet sich besonders für komplexe Szenarien, bei denen beispielsweise eine hohe Genauigkeit erforderlich ist:- Die gleichen Daten werden mit verschiedenen Einbettungsmodellen verarbeitet: Beispielsweise kann ein und derselbe Satz mit verschiedenen Vektordarstellungen unter Verwendung verschiedener Modelle wie BERT, Sentence-BERT, GPT-3 usw. generiert werden. Die Multi-Vektorsuche kann die Vektordarstellungen dieser verschiedenen Modelle fusionieren, um die Genauigkeit der Suche zu verbessern.
- Multimodale Datenfusion: So werden beispielsweise mehrere modale Informationen wie Bilder, Fingerabdrücke und Stimmabdrücke von Personen für eine umfassende Suche in verschiedene Vektorformate umgewandelt. Die Multi-Vektorsuche kann die Vektorinformationen dieser verschiedenen Modalitäten zusammenführen, um eine umfassendere Ähnlichkeitssuche zu erreichen.
- Erhöhung der Rückrufquoten: Durch die Gewichtung verschiedener Vektoren und die Nutzung der Informationen mehrerer Vektoren in einer "Multiple Recall"-Strategie können die Auffindbarkeit und die Effektivität der Suchergebnisse erheblich verbessert werden, so dass keine relevanten Ergebnisse übersehen werden.
- Grundlegende Suchvorgänge: Zusätzlich zur unidirektionalen und multivektoralen Suche bietet Milvus eine Vielzahl von grundlegenden Suchoperationen, darunter:
- Batch-Vektorsuche: Die gleichzeitige Übermittlung mehrerer Abfragevektoren verbessert die Sucheffizienz und eignet sich für Szenarien, die eine Stapelverarbeitung von Abfragen erfordern.
- Partitionssuche: Suche in der angegebenen Partition, Eingrenzung des Suchbereichs und Verbesserung der Suchgeschwindigkeit, geeignet für Szenarien mit großem Datenvolumen, Sie können die Daten nach Partition speichern, um die Effizienz der Abfrage zu verbessern.
- Geben Sie die zu durchsuchenden Ausgabefelder an: Gibt nur die angegebenen Felder zurück, reduziert den Umfang der Datenübertragung, verbessert die Sucheffizienz und eignet sich für Szenarien, in denen nur ein Teil der Feldinformationen benötigt wird.
- Suche filtern: Filterung von Bedingungen auf der Grundlage skalarer Felder zur Verfeinerung der Suchergebnisse, z. B. Filterung auf der Grundlage von Bedingungen wie Produktpreis, Alter des Benutzers, Produktkategorie usw., weitere Filterung der Ergebnisse auf der Grundlage der Ähnlichkeitssuche zur Verbesserung der Genauigkeit der Suche.
- Bereichssuche: Suche nach Vektoren, deren Abstand zum Abfragevektor innerhalb eines bestimmten Bereichs liegt, z. B. Suche nach Produkten mit einer Ähnlichkeit von 0,8 oder mehr zum Zielprodukt, was sich für Szenarien eignet, in denen der Ähnlichkeitsbereich begrenzt werden muss.
- Gruppierte Suche: Die Gruppierung von Suchergebnissen auf der Grundlage spezifischer Felder gewährleistet die Vielfalt der Ergebnisse und vermeidet eine übermäßige Konzentration der Ergebnisse und eignet sich für Szenarien, die eine Vielfalt von Ergebnissen erfordern, z. B. Empfehlungssysteme, die verschiedene Produktkategorien empfehlen wollen.
6.2 Weaviate: eine leistungsstarke hybride Suchfunktion, die mehrere Suchtechniken umfasst
Weaviate bietet eine leistungsstarke hybride Suchfunktion, die flexibel Vektorähnlichkeitssuche, Schlagwortsuche, generative Suche und andere Suchmethoden kombinieren kann, um komplexe Abfrageanforderungen zu erfüllen und eine umfassendere Retrieval-Lösung anzubieten.
- Vektorielle Ähnlichkeitssuche: Die Kernfunktion von Weaviate ist die Suche nach dem ähnlichsten Objekt zum Abfragevektor mit mehreren Methoden der Proximity-Suche.
- Bildsuche: Unterstützt die Verwendung von Bildern als Eingabe für die Ähnlichkeitssuche, um die Bildsuchfunktion zu realisieren, die für Bildabrufszenarien geeignet ist.
- Schlüsselwortsuche: Die Ergebnisse werden mit dem BM25F-Algorithmus eingestuft, der eine effiziente Suche nach Schlüsselwörtern in traditionellen Szenarien der Schlüsselwortsuche unterstützt.
- Hybride Suche: Die Kombination von BM25-Schlüsselwortsuche und Vektorähnlichkeitssuche für das Fusionsranking von Ergebnissen unter Berücksichtigung der semantischen Relevanz und der Schlüsselwortübereinstimmung eignet sich für hybride Suchszenarien, bei denen sowohl Schlüsselwort- als auch semantische Informationen berücksichtigt werden müssen.
- Generative Suche: Nutzung von Suchergebnissen als Hinweise für LLM, um Antworten zu generieren, die der Absicht des Nutzers besser entsprechen, wobei die Suche mit generativer KI-Technologie kombiniert wird, um ein intelligenteres Sucherlebnis zu bieten.
- Neueinstufung: Die Qualität der Suchergebnisse wird weiter optimiert, indem das Re-ranking-Modul (Re-rank) verwendet wird, um die abgerufenen Suchergebnisse neu zu ordnen und ihre Genauigkeit und Relevanz zu verbessern.
- Aggregation: Aggregieren von Daten aus der Ergebnissammlung, Durchführen von statistischen Analysen, Bereitstellen von Datenanalysefunktionen und Unterstützung der Nutzer bei der Datensuche und -analyse.
- Filter: Wenden Sie bedingte Filterung auf die Suche an, z. B. auf der Grundlage von Metadatenfeldern, um die Suchgenauigkeit zu verbessern und komplexe Filterungsbedingungen zu unterstützen.
6.3 Qdrant: Konzentration auf die Vektorsuche, Berücksichtigung der Volltextfilterung, leichtgewichtig und effizient
Qdrant konzentriert sich auf die Bereitstellung von leistungsstarken Vektorsuchdiensten mit einem ausgewogenen Verhältnis von Volltextfilterung und ist für sein geringes Gewicht, seine hohe Leistung und seine Benutzerfreundlichkeit bekannt.
Von Qdrant unterstützte grundlegende Suchvorgänge::
- Filtern nach Punkten: Die Filterung auf der Grundlage von Vektorähnlichkeitswerten liefert nur Ergebnisse mit höherer Ähnlichkeit, wodurch die Qualität der Suchergebnisse verbessert wird.
- Eine einzige Anfrage lädt mehrere Suchvorgänge (Multi-Suchanfragen): Die gleichzeitige Übermittlung mehrerer Suchanfragen verbessert die Sucheffizienz und eignet sich für Szenarien, die eine Stapelverarbeitung von Abfragen erfordern.
- API empfehlen: Bereitstellung spezieller Empfehlungs-APIs für den Aufbau von Empfehlungssystemen und Vereinfachung des Entwicklungsprozesses von Empfehlungssystemen.
- Operationen gruppieren: Die Gruppierung von Suchergebnissen verbessert die Vielfalt der Ergebnisse für Szenarien, die eine Vielfalt von Ergebnissen erfordern.
Andere von Qdrant unterstützte Suchmethoden::
Die Kernpositionierung von Qdrant ist eine Vektorsuchmaschine, die eine begrenzte Unterstützung für die Volltextsuche bietet, um grundlegende Anforderungen an die Volltextfilterung zu erfüllen, ohne die Leistung der Vektorsuche zu beeinträchtigen.
- Suche mit Volltextfilterung: Vektordaten können mit Hilfe von Volltextfiltern gefiltert werden, z. B. um Vektordaten zu finden, die bestimmte Schlüsselwörter enthalten, was eine einfache Volltextsuche ermöglicht.
- Volltextfilter mit Vektorsuche: Führt Vektorsuchen in Datensätzen mit bestimmten Schlüsselwörtern durch, um genauere Suchergebnisse zu erzielen, wobei Volltextfilterung und Vektorsuche kombiniert werden, um die Genauigkeit der Suche zu verbessern.
- Präfix-Suche und semantische Sofortsuche: Unterstützung der Präfix-Suche und der semantischen Sofortsuche, um eine benutzerfreundlichere Erfahrung, unscharfe Suche und Echtzeitsuche zu bieten.
Geplante zukünftige Funktionen von Qdrant::
- Sparsame Vektoren werden unterstützt: Beispielsweise verbessern spärliche Vektoren, die in SPLADE oder ähnlichen Modellen verwendet werden, die Fähigkeit, mit spärlichen Daten umzugehen und die Effizienz und Genauigkeit des Vektorabrufs zu verbessern.
Funktionen, die von Qdrant nicht unterstützt werden sollen::
- BM25 oder andere nicht vektorbasierte Retrieval- oder Ranking-Funktionen (nicht vektorbasiertes Retrieval): Qdrant besteht auf der Vektorsuche als Kernstück und hat nicht die Absicht, traditionelle schlagwortbasierte Suchmethoden zu unterstützen, um die Architektur einfach und effizient zu halten.
- Eingebaute Ontologie oder Wissensgrafik, Query Analyser und andere NLP-Tools (Eingebaute Ontologie oder Wissensgrafik): Qdrant konzentriert sich auf die zugrundeliegende Infrastruktur der Vektorsuche und lässt die Anwendungen der oberen Schicht und die NLP-Funktionalität außen vor, so dass die Kernfunktionalität im Mittelpunkt steht und die Leistung optimiert wird.
Was ist der Unterschied zwischen BM25 und einer einfachen Stichwortsuche? Ein detaillierter Blick auf die Relevanzbewertung
Im Bereich der Schlagwortsuche ist der BM25-Algorithmus (Best Matching 25) eine fortschrittlichere und effektivere Methode der Relevanzbewertung als der einfache Schlagwortabgleich. Wenn Sie den Unterschied zwischen beiden verstehen, können Sie besser die richtige Suchstrategie wählen, insbesondere in Szenarien, in denen eine Stichwortsuche oder eine gemischte Suche erforderlich ist.
1. ein Mechanismus zur Bewertung der Relevanz:
- Einfache Schlüsselwortsuche: Die Bewertung basiert in der Regel auf der Termfrequenz (TF - Term Frequency), d. h. je öfter ein Schlüsselwort in einem Dokument vorkommt, desto relevanter ist das Dokument. Diese Methode ist einfach und geradlinig, aber sie tendiert dazu, die Länge des Dokuments und die Bedeutung der Schlüsselwörter zu ignorieren, was zu einer Überbewertung langer Dokumente sowie zu Störungen der Ergebnisse durch häufig verwendete und deaktivierte Wörter führen kann.
- BM25 (Best Matching 25): Mit Hilfe eines komplexeren Algorithmus, der die Worthäufigkeit (TF), die inverse Dokumenthäufigkeit (IDF - Inverse Document Frequency) und die Dokumentlänge berücksichtigt, um die Relevanz von Dokumenten zu bewerten, kann BM25 die Relevanz eines Dokuments für eine Suchanfrage genauer messen und die Beschränkungen einfacher Stichwortsuchen wirksam umgehen.
2. die Verarbeitung der Dokumentenlänge:
- Einfache Stichwortsuche: Die Länge des Dokuments wird möglicherweise nicht berücksichtigt, was dazu führt, dass lange Dokumente mit größerer Wahrscheinlichkeit als relevant eingestuft werden, da lange Dokumente mit höherer Wahrscheinlichkeit Schlüsselwörter enthalten, was zu einer Verzerrung bei langen Dokumenten führt.
- BM25: Durch die Einführung eines Normalisierungsfaktors für die Dokumentlänge wird das Problem der Verzerrung durch lange Dokumente gelöst, um die Fairness der Relevanzbewertung zwischen langen und kurzen Dokumenten zu gewährleisten und zu vermeiden, dass lange Dokumente aufgrund des Längenvorteils zu hohe Punktzahlen erhalten.
3. die Bedeutung der Suchbegriffe:
- Einfache Stichwortsuche: Es ist üblich, alle Schlüsselwörter als gleich wichtig zu behandeln und dabei die Seltenheit der Schlüsselwörter in der Dokumentensammlung zu ignorieren, wodurch häufige und deaktivierte Wörter die Ergebnisse beeinträchtigen.
- BM25: Die Wichtigkeit von Schlüsselwörtern wird anhand der inversen Dokumentenhäufigkeit (IDF) gemessen. Schlüsselwörter mit höheren IDF-Werten (d. h. seltenere Schlüsselwörter in der Dokumentensammlung) tragen stärker zur Bewertung der Dokumentrelevanz bei, wodurch die Wichtigkeit von Schlüsselwörtern effektiv differenziert und die Qualität der Suchergebnisse verbessert wird.
4. die Einstellbarkeit der Parameter:
- Einfache Stichwortsuche: In der Regel gibt es weniger Parameter, was eine Feinabstimmung erschwert und weniger flexibel ist.
- BM25: Die einstellbaren Parameter (z. B. k1 und b) ermöglichen es dem Benutzer, die Algorithmen auf spezifische Anwendungsszenarien und Datenmerkmale abzustimmen, die Suchergebnisse zu optimieren und die Flexibilität und Anpassbarkeit der Suche zu verbessern.
Zusammenfassung:
Im Vergleich zur einfachen Schlagwortsuche ist der BM25-Algorithmus in Bezug auf die Relevanzbewertung, die Verarbeitung der Dokumentenlänge, die Messung der Bedeutung von Suchbegriffen und die Abstimmbarkeit der Parameter überlegen und kann genauere und vom Benutzer erwartete Suchergebnisse liefern. Daher ist der BM25-Algorithmus in Szenarien mit hohen Anforderungen an die Suchqualität die bessere Wahl. Insbesondere in Szenarien, in denen eine Schlagwortsuche oder eine hybride Suche erforderlich ist, ist der BM25-Algorithmus eine Schlüsseltechnologie zur Verbesserung der Suchergebnisse.
7 Leistungsvergleiche und Metriken im Detail: quantitative Bewertung der Stärken und Schwächen von Vektordatenbanken
Die Leistung ist ein wichtiger Faktor bei der Auswahl einer Vektordatenbank. Benchmarking ist ein wirksames Mittel zur Bewertung der Leistung von Vektordatenbanken. Es ist jedoch zu beachten, dass die Benchmarking-Ergebnisse von einer Vielzahl von Faktoren beeinflusst werden. Daher müssen die Benchmarking-Ergebnisse für eine umfassende Analyse mit spezifischen Anwendungsszenarien und Anforderungen kombiniert werden.
7. anhang
7.1 ANN Benchmarks: Die maßgebliche Plattform zur Leistungsbewertung
ANN-Benchmarks Approximate Nearest Neighbors Benchmarks (ANN-Benchmarks) ist eine maßgebliche Leistungsbewertungsplattform für Approximate Nearest Neighbour-Algorithmen, die von Erik Bernhardsson erstellt und gepflegt wird. ANN-Benchmarks ist eine wichtige Referenz für die Leistungsbewertung von Vektordatenbanken und ist ein wichtiges Instrument zum Verständnis der Leistungsunterschiede zwischen verschiedenen Vektordatenbanken.
Einflussfaktoren für das Benchmarking:
- Suchart: Gefilterte Suche vs. reguläre Suche, verschiedene Sucharten haben unterschiedliche Auswirkungen auf die Leistung.
- Konfigurationseinstellungen: Datenbankkonfigurationsparameter, wie z. B. Indextypen, Indexparameter, Cache-Einstellungen usw., können die Leistung erheblich beeinflussen.
- Indizierungsalgorithmen: Verschiedene Indizierungsalgorithmen (z.B. IVF, HNSW, PQ) haben unterschiedliche Leistungsmerkmale und sind für verschiedene Datenverteilungs- und Abfrageszenarien geeignet.
- Dateneinbettung: Die Qualität und Dimensionalität der Dateneinbettung wirkt sich auf die Leistung und Genauigkeit der Vektordatenbank aus.
- Hardware-Umgebung: CPU, Arbeitsspeicher, Festplatte, Netzwerk und andere Hardwareressourcen wirken sich direkt auf die Leistung der Datenbank aus.
Wichtige Faktoren, die bei der Auswahl eines Modells zusätzlich zum Benchmarking zu beachten sind:
- Verteilte Fähigkeiten: Ob es eine verteilte Bereitstellung unterstützt und horizontal skaliert werden kann, um mit massiven Daten und hoher Gleichzeitigkeit fertig zu werden.
- Datenkopien und Zwischenspeicherung: Unterstützung von Datenkopier- und Caching-Mechanismen zur Gewährleistung der Datensicherheit und Verbesserung der Systemleistung.
- Indizierungsalgorithmen: Welche Art von Indizierungsalgorithmus verwendet wird, die Leistungsmerkmale und Anwendungsszenarien des Algorithmus und ob mehrere Indizierungsalgorithmen unterstützt werden.
- Fähigkeit zur Suche nach Vektorähnlichkeit: Unterstützung von hybrider Suche, Filterung, mehreren Ähnlichkeitsmetriken und anderen erweiterten Suchfunktionen, um den Anforderungen komplexer Abfragen gerecht zu werden.
- Segmentierungsmechanismus: Unterstützung von Data Slicing, Durchführung von Data Slicing und Management sowie Verbesserung der Effizienz von Datenmanagement und -abfrage.
- Cluster-Ansatz: Aufbau von Clustern, Skalierbarkeit und Stabilität von Clustern, Gewährleistung einer hohen Verfügbarkeit und Skalierbarkeit des Systems.
- Skalierbarkeitspotenzial: Die Obergrenze der Skalierbarkeit des Systems, die Frage, ob es den Anforderungen des künftigen Unternehmenswachstums gerecht werden kann, und die Vorhersage der Erweiterungsfähigkeit des Systems.
- Datenkonsistenz: Wie lassen sich Datenkonsistenz und -zuverlässigkeit gewährleisten, insbesondere in einer verteilten Umgebung?
- Allgemeine Systemverfügbarkeit: Stabilität und Zuverlässigkeit des Systems, d. h. ob es einen stabilen 7x24-Stunden-Betrieb gewährleisten und die Anforderungen an die Geschäftskontinuität erfüllen kann.
Eckige Metriken vs. euklidische Metriken: Schlüsselmetriken für die Textsuche
Im Bereich der Textsuche werden Vektordatenbanken inWinkeldistanz Die Leistung auf ist in der Regel besser alsEuklidischer Abstand mehr Bedeutung. Dies liegt daran, dass die Winkelmetrik stärker auf die semantische Ähnlichkeit von Textdokumenten reagiert, während sich die euklidische Metrik mehr auf die Länge und den Umfang von Dokumenten konzentriert.
- Winkelmaß (z. B. Kosinusabstand): Fokus auf die Richtung des Vektors, nicht empfindlich auf die Länge des Vektors, besser geeignet für die Messung der semantischen Ähnlichkeit des Textes, geeignet für Text Retrieval, Dokumentenklassifizierung und andere Szenarien.
- Euklidische Metrik (z. B. Euklidischer Abstand): Es berücksichtigt auch die Größe und Richtung von Vektoren, reagiert empfindlich auf die Länge von Vektoren und eignet sich besser für die Messung des absoluten Abstands von Vektoren, was für Szenarien wie die Bild- und Spracherkennung geeignet ist.
Daher sollten wir uns bei der Auswahl des RAG-Systems auf die Vektordatenbank in verschiedenen Dimensionen desWinkeldatensatzLeistung, zum Beispiel bei den Datensätzen glove-100-angular und nytimes-256-angular.
Leistungsanalyse (Handschuh-100-Winkel-Datensatz):
- Abfragen pro Sekunde (QPS): Milvus weist den höchsten Durchsatz auf, wenn der Recall unter 0,95 liegt, was bedeutet, dass Milvus in der Lage ist, eine höhere Abfragekonkurrenz mit besserer Leistung zu bewältigen und gleichzeitig einen bestimmten Recall zu garantieren. Wenn der Rückruf 0,95 übersteigt, verringert sich der Durchsatzunterschied zwischen den Datenbanken, und der Leistungsunterschied ist bei einem hohen Rückruf nicht offensichtlich.
- Indexaufbauzeit: Vespa hat die längste Indexaufbauzeit, Weaviate und Milvus haben ähnliche Aufbauzeiten, aber Milvus ist etwas länger. Die Indexaufbauzeit wirkt sich direkt auf die Geschwindigkeit des Datenbankstarts und die Effizienz der Datenaktualisierung aus: je kürzer die Aufbauzeit, desto schneller der Start der Datenbank und die Datenaktualisierung.
- Indexgröße: Weaviate hat den kleinsten Index und Milvus den größten. Die Indexgröße wirkt sich auf die Speicherkosten und die Speichernutzung aus. Je kleiner der Index ist, desto geringer sind die Speicherkosten und die Speichernutzung. Obwohl der Index von Milvus groß ist, beträgt die Indexgröße für einen Datensatz mit 1,2 Millionen 100-dimensionalen Vektoren weniger als 1,5 GB, was immer noch akzeptabel ist, und die Auswirkungen der Indexgröße sollten entsprechend der Datengröße in praktischen Anwendungen bewertet werden.
7.1.2 leistung des nytimes-256-angular-datensatzes
Leistungsanalyse (nytimes-256-angular-Datensatz):
Die Leistung dieses Datensatzes ist ähnlich wie die des glove-100-angular-Datensatzes, mit einem einheitlichen Gesamttrend.
- Indexaufbauzeit: Weaviate hat die längste Indexerstellungszeit, Milvus und Qdrant sind relativ kurz, und die Reihenfolge der Erstellungszeiten stimmt mit dem glove-100-angular-Datensatz überein.
- Indexgröße: Der Index von Weaviate ist der kleinste, der Index von Milvus ist der größte, aber nur 440 MB groß (ein Datensatz mit 290.000 256-dimensionalen Vektoren), und die Reihenfolge der Indexgrößen stimmt mit dem glove-100-angularen Datensatz überein.
Zusammenfassung:
ANN-Benchmarks liefern wertvolle Leistungsreferenzdaten, die uns helfen, die Leistungsmerkmale verschiedener Vektordatenbanken zu verstehen. Milvus zeichnet sich durch einen hohen Durchsatz aus und eignet sich für hochgradig konkurrierende Abfrageszenarien; Weaviate hat einen Vorteil bei der Indexgröße und spart Speicherplatz; Vespa hat eine relativ lange Aufbauzeit und muss hinsichtlich der Effizienz des Indexaufbaus berücksichtigt werden.
Bei der tatsächlichen Auswahl eines Modells müssen für eine umfassende Bewertung spezifische Anwendungsszenarien, Datenmerkmale und Leistungsanforderungen kombiniert werden, wobei man sich nicht nur auf Benchmark-Testergebnisse verlassen kann.
7.2 Vektorähnlichkeitsmetriken: Auswahl der richtigen Metriken zur Verbesserung der Abfrageergebnisse
Vektorähnlichkeitsmetriken werden verwendet, um den Grad der Ähnlichkeit zwischen zwei Vektoren zu messen, und verschiedene Ähnlichkeitsmetriken sind für unterschiedliche Datentypen und Anwendungsszenarien geeignet. Die Wahl der richtigen Ähnlichkeitsmetrik wirkt sich direkt auf die Genauigkeit und den Effekt des Vektorabrufs aus. Da verschiedene Vektordatenbanken unterschiedliche Ähnlichkeitsmetriken unterstützen, müssen Sie die richtige Datenbank und die richtigen Ähnlichkeitsmetriken je nach den tatsächlichen Anforderungen auswählen.
Norm | Beschreibungen | Schneidkante | minderwertig | Anwendbare Szenarien | Unterstützte Datenbanken |
---|---|---|---|---|---|
Kosinusabstand | Messung des Kosinus des Winkels zwischen zwei Vektoren | Fokus auf die Vektorrichtung, nicht empfindlich gegenüber der Vektorlänge; geeignet für hochdimensionale spärliche Daten | Unempfindlich gegenüber Vektorlängeninformationen; nicht anwendbar auf nicht-konvexe Datensätze | Textähnlichkeitsberechnung, Dokumentenklassifizierung, Empfehlungssysteme | pgvector, Pinecone, Weaviate, Qdrant, Milvus, Vespa |
Euklidischer Abstand (L2) | Berechnen des geradlinigen Abstands zwischen zwei Vektoren in einem mehrdimensionalen Raum | Intuitiv und leicht verständlich; berücksichtigt sowohl den Betrag als auch die Richtung eines Vektors | Leistungsverschlechterung in hochdimensionalen Räumen aufgrund von "Dimensionskatastrophen"; Empfindlichkeit gegenüber Ausreißern | Bilderkennung, Spracherkennung, Handschriftenanalyse | pgvector, Pinecone, Qdrant, Milvus, Vespa |
Punktförmiges Produkt | Berechnen Sie die Summe der Produkte der entsprechenden Komponenten des Vektors | Schnelle Berechnung; gibt sowohl die Größe als auch die Richtung des Vektors wieder | Empfindlich gegenüber der Vektorskala; kann eine Normalisierung der Daten erfordern | Empfehlungssysteme, kollaborative Filterung, Matrix-Zerlegung | pgvector, Pinecone, Weaviate, Qdrant, Milvus |
L2 Quadratischer Euklidischer Abstand | Euklidscher Abstand zum Quadrat | Bestraft große Unterschiede zwischen Vektorelementen; in einigen Fällen effektiver | Die Quadrierung kann Abstände verzerren; empfindlicher gegenüber Ausreißern | Bildverarbeitung, Erkennung von Anomalien | Weaviate |
Hamming-Abstand | Messung der Anzahl der verschiedenen Werte, die der Position eines binären Vektors entsprechen | Geeignet für binäre oder kategoriale Daten; schnelle Berechnungen | Nicht anwendbar auf kontinuierliche numerische Daten | Fehlererkennung und -korrektur, DNA-Sequenzabgleich | Weaviate, Milvus, Vespa |
Manhattan Entfernung (L1) | Messen der Summe der Abstände zwischen zwei Vektoren in Richtung der Koordinatenachsen | Robuster gegenüber Ausreißern als der euklidische Abstand | Geometrische Bedeutung ist weniger intuitiv als der euklidische Abstand | Berechnung der Tafelentfernung, Berechnung der Entfernung von Stadtteilen | Weaviate |
7.2.1 Kosinusabstand: Die erste Wahl für die Berechnung der Textähnlichkeit
Der Kosinusabstand misst die Ähnlichkeit von Vektoren, indem er den Kosinus des Winkels zwischen zwei Vektoren berechnet. Je näher der Kosinuswert bei 1 liegt, desto ähnlicher sind die Vektoren; je näher der Kosinuswert bei -1 liegt, desto weniger ähnlich sind die Vektoren; und bei einem Kosinuswert von 0 sind die Vektoren orthogonal, was bedeutet, dass sie nicht miteinander verbunden sind.
- Blickwinkel::
- Konzentrieren Sie sich auf die Vektorrichtung und ignorieren Sie die Vektorlänge: Die Cosinus-Distanz konzentriert sich auf die Richtung des Vektors und ist nicht empfindlich gegenüber der Länge des Vektors. Dadurch eignet sie sich gut für die Verarbeitung von Textdaten, da die Länge eines Dokuments bei der Berechnung der Textähnlichkeit oft nicht der entscheidende Faktor ist, während das Thema und die semantische Richtung des Dokuments wichtig sind.
- Für hochdimensionale spärliche Daten: In Szenarien mit hochdimensionalen spärlichen Daten kann die Kosinusdistanz immer noch eine gute Leistung erbringen und eignet sich für die Ähnlichkeitsberechnung von hochdimensionalen spärlichen Daten wie Text und Nutzerverhalten.
- Nachteile::
- Unempfindlich gegenüber Informationen zur Vektorlänge: In einigen Szenarien kann auch die Längeninformation der Vektoren wichtig sein, z. B. in einem Empfehlungssystem kann das Aktivitätsniveau des Benutzers (Vektorlänge) ein wichtiges Merkmal sein. Der Kosinusabstand ignoriert diese Information und kann zu Informationsverlusten führen.
- Nicht anwendbar auf nicht-konvexe Datensätze: Handelt es sich bei der Datenverteilung nicht um eine konvexe Menge, ist der Kosinusabstand möglicherweise kein genaues Ähnlichkeitsmaß, und es muss eine geeignete Ähnlichkeitsmetrik auf der Grundlage der Datenverteilung ausgewählt werden.
- Anwendbare Szenarien::
- Berechnung der Textähnlichkeit: Die Berechnung der semantischen Ähnlichkeit von zwei Artikeln, zwei Sätzen oder zwei Absätzen ist beispielsweise eine gängige Metrik zur Berechnung der Textähnlichkeit.
- Dokumentenkategorisierung: Die Dokumente werden auf der Grundlage der Ähnlichkeit der Dokumentvektoren in verschiedene Kategorien eingeteilt.
- Empfohlene Systeme: Die Empfehlungen basieren auf dem Verhalten des Nutzers oder den Merkmalen des Artikels, und die Ähnlichkeit zwischen den Vektoren des Nutzers und des Artikels wird für personalisierte Empfehlungen berechnet.
- Hochdimensionale spärliche Datenszenarien: Zum Beispiel die Ähnlichkeitsberechnung von hochdimensionalen, spärlichen Daten wie Nutzerverhaltensdaten und Produktmerkmalsdaten.
7.2.2 Euklidischer Abstand (L2): intuitiv und einfach zu verstehen, aber in höherdimensionalen Räumen ist die Leistung begrenzt.
Der euklidische Abstand, auch bekannt als L2-Norm, berechnet den geradlinigen Abstand zwischen zwei Vektoren in einem mehrdimensionalen Raum. Je kleiner der Abstand, desto ähnlicher sind die Vektoren; je größer der Abstand, desto weniger ähnlich sind die Vektoren.
- Blickwinkel::
- Intuitiv und leicht zu verstehen: Das Konzept des euklidischen Abstands ist einfach und intuitiv, leicht zu verstehen und zu verwenden und gehört zu den von Menschen am häufigsten verwendeten Abstandsmaßen.
- Berücksichtigen Sie sowohl den Betrag als auch die Richtung des Vektors: Der euklidische Abstand berücksichtigt sowohl den Betrag als auch die Richtung der Vektoren, was ein vollständigeres Bild der Unterschiede zwischen den Vektoren liefert und sich für Szenarien eignet, in denen sowohl der Betrag als auch die Richtung der Vektoren berücksichtigt werden müssen.
- Nachteile::
- Die Leistung des höherdimensionalen Raums wird durch eine "dimensionale Katastrophe" beeinträchtigt: In hochdimensionalen Räumen sind die euklidischen Abstände zwischen allen Punkten tendenziell gleich, was zu einer Abnahme der Differenzierung führt, die die Genauigkeit der Ähnlichkeitssuche beeinträchtigt und die Leistung in hochdimensionalen Datenszenarien einschränkt.
- Empfindlich gegenüber Ausreißern: Der euklidische Abstand ist empfindlich gegenüber Ausreißern, die die Ergebnisse der Abstandsberechnung erheblich beeinflussen und weniger robust sind.
- Anwendbare Szenarien::
- Image Recognition: Zum Beispiel Gesichtserkennung, Objekterkennung usw., Ähnlichkeitsvergleich auf der Grundlage des euklidischen Abstands von Bildmerkmalsvektoren.
- Erkennung von Sprache: Der Abgleich von Sprachmerkmalen beispielsweise führt Ähnlichkeitsvergleiche auf der Grundlage des euklidischen Abstands von Sprachmerkmalvektoren durch.
- Analyse der Handschrift: Zum Beispiel die Erkennung handschriftlicher Zeichen, der Ähnlichkeitsvergleich auf der Grundlage des euklidischen Abstands der Merkmalsvektoren handschriftlicher Zeichen.
- Niedrigdimensionale Datenszenarien: In Szenarien mit niedrigdimensionalen Daten ist der euklidische Abstand immer noch eine effektive Ähnlichkeitsmetrik für die Ähnlichkeitssuche in niedrigdimensionalen Daten.
7.2.3 Punktprodukt: Effiziente Berechnung, geeignet für Empfehlungssysteme
Das innere Produkt, auch bekannt als Punktprodukt, berechnet die Summe der Produkte der entsprechenden Komponenten zweier Vektoren. Je größer das innere Produkt ist, desto ähnlicher sind die Vektoren; je kleiner das innere Produkt ist, desto weniger ähnlich sind die Vektoren.
- Blickwinkel::
- Die Berechnungen sind schnell: Das innere Produkt ist sehr schnell, vor allem wenn die Vektordimension hoch ist, der Leistungsvorteil ist offensichtlich, geeignet für große Daten und hohe Gleichzeitigkeit Szenarien.
- Spiegelt sowohl die Größe als auch die Richtung des Vektors wider: Das innere Produkt berücksichtigt sowohl den Betrag als auch die Richtung der Vektoren, was die Gesamtähnlichkeit der Vektoren widerspiegelt, und eignet sich für Szenarien, in denen Betrag und Richtung der Vektoren berücksichtigt werden müssen.
- Nachteile::
- Empfindlich gegenüber Vektorskalen: Der Wert des inneren Produkts wird durch den Maßstab der Vektoren beeinflusst, und wenn die Vektoren einen großen Maßstabsunterschied aufweisen, kann das Ähnlichkeitsmaß des inneren Produkts verzerrt sein und empfindlich auf den Maßstab der Vektoren reagieren.
- Eine Normalisierung der Daten kann erforderlich sein: Um den Effekt von Vektorskalenunterschieden zu eliminieren, ist es oft notwendig, die Daten zu normalisieren, z. B. durch Normierung der Vektoren auf Einheitslänge, um die Genauigkeit des Ähnlichkeitsmaßes des inneren Produkts zu gewährleisten.
- Anwendbare Szenarien::
- Empfohlene Systeme: Um beispielsweise die Ähnlichkeit zwischen Nutzervektoren und Objektvektoren für personalisierte Empfehlungen zu berechnen, ist das innere Produkt eine in Empfehlungssystemen häufig verwendete Ähnlichkeitsmetrik.
- Kollaboratives Filtern: Empfehlungen werden auf der Grundlage der Ähnlichkeit von Nutzern oder Artikeln ausgesprochen, wobei das innere Produkt zur Berechnung der Ähnlichkeit zwischen Nutzern oder Artikeln verwendet wird.
- Matrix-Zerlegung: für die Dimensionalitätsreduktion und die Merkmalsextraktion verwendet werden, und das innere Produkt kann zur Messung der Ähnlichkeit zwischen Vektoren und zur Unterstützung bei der Implementierung von Matrixzerlegungsalgorithmen verwendet werden.
- Szenarien, die eine hohe Rechenleistung erfordern: Zum Beispiel große Online-Empfehlungssysteme, Echtzeit-Retrieval-Systeme und andere Szenarien, die eine schnelle Berechnung der Vektorähnlichkeit erfordern.
7.2.4 L2 Quadratischer Euklidischer Abstand: verstärkt die Unterschiede, wirksam für bestimmte Szenen
L2 Der quadratische Abstand ist das Quadrat des euklidischen Abstands und wird als Quadratwert des euklidischen Abstands berechnet.
- Blickwinkel::
- Große Unterschiede zwischen den Elementen des Strafvektors: Die Quadrierungsoperation vergrößert die Unterschiede zwischen den Vektorelementen und macht die Abstandswerte empfindlicher für Unterschiede. In einigen Fällen kann diese Eigenschaft bei der Unterscheidung von Ähnlichkeiten und der Hervorhebung von Unterschieden von Vorteil sein.
- Die Vermeidung von Quadratwurzelberechnungen verbessert die Effizienz der Berechnungen: In einigen Berechnungsszenarien können Quadratwurzelberechnungen vermieden werden, um die Effizienz zu verbessern und den Berechnungsprozess zu vereinfachen.
- Nachteile::
- Quadrierungsvorgänge können Entfernungen verfälschen: Durch die Quadrierung ändert sich der Maßstab des Abstands, was dazu führen kann, dass die Bedeutung des Abstands weniger intuitiv ist als der euklidische Abstand.
- Empfindlicher gegenüber Ausreißern: Durch die Quadrierung werden die Auswirkungen von Ausreißern noch verstärkt, wodurch der quadrierte L2-Abstand empfindlicher auf Ausreißer reagiert und weniger robust ist.
- Anwendbare Szenarien::
- Bildverarbeitung: Um beispielsweise zwei Bilder auf Pixelebene zu vergleichen, vergrößert der quadrierte L2-Abstand die Pixelunterschiede und vergleicht die Nuancen der Bilder effektiver.
- Erkennung von Anomalien: Die Verstärkung der Auswirkungen von Ausreißern erleichtert die Erkennung anormaler Daten und eignet sich für ausreißerempfindliche Anomalieerkennungsszenarien.
- Spezifische Szenarien, in denen die Unterschiede verstärkt werden müssen: Der quadratische L2-Abstand kann in bestimmten Szenarien, in denen die Differenzierung hervorgehoben werden muss, effektiver sein als der euklidische Abstand.
7.2.5 Hamming-Distanz: eine exklusive Metrik für binäre Daten
Die Hamming-Distanz misst die Anzahl der unterschiedlichen Werte an den entsprechenden Positionen zweier gleich langer binärer Vektoren und wird verwendet, um den Grad der Differenz zwischen binären Vektoren zu messen.
- Blickwinkel::
- Für binäre oder kategoriale Daten: Die Hamming-Distanz wird speziell zur Messung von Unterschieden in binären oder kategorialen Daten verwendet und eignet sich für Ähnlichkeitsberechnungen bei binären Vektoren.
- Die Berechnungen sind schnell: Die Berechnung der Hamming-Distanz ist sehr einfach und effizient und erfordert lediglich den Vergleich der entsprechenden Positionen der binären Vektoren und die Zählung der Anzahl unterschiedlicher Werte.
- Nachteile::
- Nicht anwendbar auf kontinuierliche numerische Daten: Die Hamming-Distanz kann nur für binäre oder kategoriale Daten verwendet werden, nicht aber für kontinuierliche numerische Daten, was den Anwendungsbereich einschränkt.
- Anwendbare Szenarien::
- Fehlererkennung und -korrektur: In der Kommunikationscodierung beispielsweise wird die Hamming-Distanz zur Messung der Differenz zwischen Codewörtern für die Fehlererkennung und -korrektur verwendet und ist ein wichtiges Konzept in der Codierungstheorie.
- DNA-Sequenzvergleich: Die DNA-Sequenzen wurden in eine binäre Darstellung umgewandelt, und der Sequenzvergleich wurde mit Hilfe der Hamming-Distanz für die bioinformatische Analyse durchgeführt.
- Berechnung der Ähnlichkeit von Untertypdaten: Es eignet sich für die Ähnlichkeitsberechnung von untertypisierten Daten, z. B. für die Ähnlichkeitsberechnung von kategorisierten Daten wie Benutzerkennzeichen und Produktattributen.
7.2.6 Manhattan-Distanz (L1): robustere Distanzmetrik, resistent gegen Ausreißer
Die Manhattan-Distanz, auch bekannt als L1-Norm oder City-Block-Distanz, wird als Summe der absoluten Differenzen zwischen zwei Vektoren in allen Dimensionen berechnet.
- Blickwinkel::
- Ist robuster gegenüber Ausreißern als der euklidische Abstand: Der Manhattan-Abstand ist weniger empfindlich gegenüber Ausreißern als der euklidische Abstand, da er nur die absolute Differenz und nicht die quadrierte Differenz berechnet und robuster und widerstandsfähiger gegen Ausreißer ist.
- Die Berechnungen sind relativ schnell: Der Manhattan-Abstand ist etwas schneller als der euklidische Abstand und eignet sich für Szenarien, in denen der Abstand schnell berechnet werden muss.
- Nachteile::
- Die geometrische Bedeutung ist weniger intuitiv als der euklidische Abstand: Die geometrische Bedeutung des Manhattan-Abstands ist weniger intuitiv als die des euklidischen Abstands, weniger leicht verständlich und weniger geometrisch interpretierbar.
- Anwendbare Szenarien::
- Berechnung der Brettentfernung: Um beispielsweise den Abstand zwischen zwei Feldern auf einem Schachbrett zu berechnen, wird üblicherweise die Manhattan-Distanz verwendet, um den Brettabstand zu ermitteln.
- Entfernungsberechnungen für Stadtviertel: Um beispielsweise die Entfernung zwischen zwei Orten in einer Stadt zu berechnen, wird die Manhattan-Distanz auch als Blockdistanz bezeichnet, wobei Entfernungen in diagonaler Richtung nicht berücksichtigt werden.
- Das Problem des kürzesten Weges in der Logistikplanung: Die Manhattan-Distanz kann zur Bewertung von Weglängen in der Logistikplanung verwendet werden und hilft bei der Implementierung von Algorithmen für kürzeste Wege.
- Szenarien, die weniger anfällig für Ausreißer sind: In Szenarien, in denen die Auswirkungen von Ausreißern reduziert werden müssen, ist der Manhattan-Abstand besser geeignet und robuster als der euklidische Abstand.
8. referenzen
- https://github.com/milvus-io/milvus
- Leistungsstarke KI mit Vektordatenbanken: Ein Benchmark - Teil I - Daten - Blog - F-Tech
- Grundlagen - Qdrant
- Milvus-Dokumentation
- Startseite | Weaviate - Vektor-Datenbank
- Qdrant-Dokumentation - Qdrant
- Anwendungsfälle der Vektordatenbank - Qdrant
- Vektordatenbanken: Einführung, Anwendungsfälle, Top 5 Vektor-DBs
- ANN-Benchmarks
- Abstandsmetriken in der Vektorsuche - Weaviate
- BM25 - Baidu Enzyklopädie