AI Search

Effiziente Vektorsuchähnlichkeit mit Redis: Verbesserung der KI-gestützten Suche

A diagram illustrating efficient vector similarity search with Redis.

Suchergebnisse mit Vektor-Einbettungen und Redis verbessern

Die Möglichkeit, Informationen zu suchen, ist in der heutigen digitalen Landschaft entscheidend, da Benutzer in fast jeder Anwendung und Website nach Suchfunktionen erwarten. Für Architekten und Entwickler ist es unerlässlich, kontinuierlich neue Methoden und Architekturen zu erforschen, um die Suchergebnisse zu verbessern. Ein effektiver Ansatz ist die Nutzung von Vektor-Einbettungen, die von Deep-Learning-Modellen generiert werden und erheblich die Genauigkeit und Relevanz der Suchergebnisse verbessern.

Verstehen von Vektor-Einbettungen und Redis

Um die Suchfunktionalität zu verbessern, nutzen viele Organisationen Indizierungstechniken, die ihre Daten in einen Vektorraum umwandeln. Durch die Darstellung von Daten als Vektoren können Ähnlichkeitssuchen durchgeführt werden, um die relevantesten Ergebnisse zurückzugeben.

In diesem umfassenden Tutorial werden wir erläutern, wie Deep-Learning-Modelle Vektor-Einbettungen erstellen, die effizient indiziert werden, um genaue Suchfunktionen mit Redis zu ermöglichen. Durch das Verständnis dieses Ansatzes können Architekten und Entwickler das Potenzial von KI-gesteuerten Verbesserungen für die Benutzer-Such-Erfahrung nutzen.

Umfang dieses Tutorials

In diesem Tutorial werden wir die folgenden wichtigen Schritte behandeln:

  • Erstellen von Vektor-Einbettungen für einen Amazon-Produktdatensatz
  • Indizieren dieser Einbettungen mit Redis
  • Durchführen von Suchen nach ähnlichen Vektoren

Darüber hinaus werden wir die Vor- und Nachteile verschiedener Indizierungsmethoden analysieren und wie sie die Suchleistung optimieren können.

Erste Schritte

Beginnen Sie mit der Erstellung eines neuen Verzeichnisses und dem Start eines Jupyter-Notebooks. Erwerben Sie die CSV-Datei des Datensatzes aus einer Online-Quelle und speichern Sie sie im ./data/-Verzeichnis. Stellen Sie sicher, dass Sie Python 3.8 verwenden, und installieren Sie die benötigten Abhängigkeiten in der ersten Zelle:

pip install redis pandas sentence-transformers

Notwendige Bibliotheken importieren

Nachdem Sie die Abhängigkeiten eingerichtet haben, ist der nächste Schritt, die notwendigen Bibliotheken zu importieren und wichtige Klassen oder Funktionen zu definieren. In diesem Fall werden Sie importieren:

  • Redis-Bibliothek - Um mit Redis zu interagieren, bekannt für seine Geschwindigkeit und Flexibilität.
  • VectorField - Stellt Vektorfelder in Redis dar.
  • TextField - Stellt Textfelder in Redis dar.
  • TagField - Stellt Tagfelder in Redis dar.
  • Query - Erstellt Suchabfragen für Redis.
  • Result - Behandelt die von Redis zurückgegebenen Suchergebnisse.

Außerdem definieren wir eine einfache Farbklasse, die verwendet werden kann, um farbigen Text in der Konsole auszugeben.

Produktdaten laden

Der nächste Schritt besteht darin, Amazon-Produktdaten in ein Pandas DataFrame zu laden, während lange Textfelder auf maximal 512 Zeichen gekürzt werden. Dieses Limit unterstützt das vortrainierte SentenceTransformer-Modell. Hier ist ein Beispielcode-Snippet, um dies auszuführen:

import pandas as pd

df = pd.read_csv('./data/amazon_products.csv')
df['product_description'] = df['product_description'].str.slice(0, 512)
df = df.dropna(subset=['keywords'])

Verbindung zu Redis herstellen

Nachdem Sie die Produktdaten erfolgreich in das DataFrame geladen und relevante Artikel gefiltert haben, stellen Sie eine Verbindung zu Redis her, indem Sie sich für eine kostenlose Instanz über RedisLabs anmelden:

  • Starten Sie eine neue Redis-Instanz.
  • Kopieren Sie die Verbindungsdetails und stellen Sie sicher, dass Sie das Passwort für Ihre Redis-Instanz haben.

Einbettungen mit SentenceTransformer generieren

Als Nächstes generieren wir Einbettungen (Vektoren) für Artikel-Keywords mithilfe des vortrainierten distilroberta-v1 Sentence Transformer-Modells. Hier ist ein Beispielcode zur Einrichtung:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('distilroberta-v1')
embeddings = model.encode(df['keywords'].tolist())

Hilfsfunktionen zur Indizierung

Jetzt, da wir über Einbettungen für unsere Produkte verfügen, definieren wir Hilfsfunktionen, um den Prozess des Ladens von Daten und des Erstellens von Indizes für Vektorfelder zu optimieren:

def load_data():
   ... # Lade-Logik hier

def create_index():
   ... # Indizes-Erstellungs-Logik hier

Vergleich von Indizierungsmethoden

Wir werden zwei Indizierungsmethoden untersuchen: Flache Indizierung und HNSW (Hierarchical Navigable Small World). Jede hat einzigartige Vor- und Nachteile hinsichtlich der Leistung:

  • Flache Indizierung: Einfach, aber rechenintensiv für große Datensätze.
  • HNSW-Indizierung: Effizient mit guter Skalierbarkeit, nutzt eine komplexe Graphstruktur für schnelle Suchen.

Indizierung und Abfrage der Daten

Wir werden zuerst die Produktdaten mit flacher Indizierung laden und indizieren, gefolgt von einer Abfrage der fünf nächsten Nachbarn:

query_vector = ... # Definieren Sie hier Ihren Abfragevektor
result = redis_db.query(Query.Similarity(query_vector)).limit(5)

Abfrage mit HNSW

Jetzt, nachdem wir Produktdaten mit HNSW geladen und indiziert haben, kann die Abfrage ähnlicher durchgeführt werden:

result_hnsw = redis_db.query(Query.Similarity(query_vector)).limit(5)

Fazit

Durch die Verwendung von Vektor-Einbettungen und Redis können Organisationen die Sucherlebnisse für ihre Benutzer erheblich verbessern. Dieses Tutorial hat den Prozess der Erstellung und Indizierung von Vektor-Einbettungen für einen Amazon-Produktdatensatz sowie die Vorteile jeder Indizierungsmethode veranschaulicht.

Für den vollständigen Code und weitere Einblicke empfehlen wir, das GitHub-Repository für weitere Informationen zu besuchen.

Weiterlesen

Integrating ChatGPT and Whisper API into your project for enhanced functionality.
A screenshot showing Bing's new AI chatbot interface with features highlighted.

Hinterlasse einen Kommentar

Alle Kommentare werden vor der Veröffentlichung geprüft.

Diese Website ist durch hCaptcha geschützt und es gelten die allgemeinen Geschäftsbedingungen und Datenschutzbestimmungen von hCaptcha.