Haben Sie jemals nach „alten Schwarz-Weiß-Komödien“ gesucht, die dann mit einer Mischung aus modernen Actionfilmen bombardiert wurden? Frustrierend, oder? Das ist die Herausforderung bei herkömmlichen Suchmaschinen – sie haben oft Schwierigkeiten, die Nuancen unserer Suchanfragen zu verstehen, sodass wir uns durch irrelevante Ergebnisse kämpfen müssen.
Hier kommt Smart Filtering ins Spiel. Es ist ein Game-Changer, der Metadaten und Vektorsuche nutzt, um Suchergebnisse zu liefern, die wirklich Ihrer Absicht entsprechen. Stellen Sie sich vor, Sie finden ohne großen Aufwand genau die klassischen Komödien, nach denen Sie sich sehnen.
Wir werden uns damit befassen, was Smart Filtering ist, wie es funktioniert und warum es für den Aufbau besserer Sucherlebnisse unerlässlich ist. Lassen Sie uns die Magie hinter dieser Technologie entdecken und erkunden, wie sie Ihre Suche revolutionieren kann.
Die Vektorsuche ist ein leistungsstarkes Tool, das Computern hilft, die Bedeutung von Daten und nicht nur die Wörter selbst zu verstehen. Anstatt passende Schlüsselwörter zu finden, konzentriert es sich auf die zugrunde liegenden Konzepte und Beziehungen. Stellen Sie sich vor, Sie suchen nach „Hund“ und erhalten Ergebnisse, die „Welpe“, „Hund“ und sogar Bilder von Hunden umfassen. Das ist die Magie der Vektorsuche!
Wie funktioniert es? Nun, es wandelt Daten in mathematische Darstellungen um, die Vektoren genannt werden. Diese Vektoren ähneln Koordinaten auf einer Karte, und ähnliche Datenpunkte liegen in diesem Vektorraum näher beieinander. Wenn Sie nach etwas suchen, findet das System die Vektoren, die Ihrer Suchanfrage am nächsten kommen, und liefert Ihnen semantisch ähnliche Ergebnisse.
Während die Vektorsuche beim Verstehen des Kontexts hervorragend ist, reicht sie bei einfachen Filteraufgaben manchmal nicht aus. Um beispielsweise alle Filme zu finden, die vor dem Jahr 2000 veröffentlicht wurden, ist eine präzise Filterung und nicht nur ein semantisches Verständnis erforderlich. Hier kommt Smart Filtering als Ergänzung zur Vektorsuche ins Spiel.
Während Vector uns dem Verständnis der wahren Bedeutung von Suchanfragen näher bringt, besteht immer noch eine Lücke zwischen dem, was Benutzer wollen, und dem, was Suchmaschinen liefern. Komplexe Suchanfragen wie „früheste Komödien vor 2000“ können immer noch eine Herausforderung sein. Die semantische Suche versteht möglicherweise die Konzepte „Komödie“ und „Filme“, hat jedoch möglicherweise Schwierigkeiten mit den Besonderheiten „am frühesten“ und „vor 2000“.
Hier beginnen die Ergebnisse unübersichtlich zu werden. Wir könnten eine Mischung aus alten und neuen Komödien oder sogar Dramen bekommen, die fälschlicherweise enthalten waren. Um die Nutzer wirklich zufrieden zu stellen, müssen wir diese Suchergebnisse verfeinern und präziser gestalten. Hier kommen Vorfilter ins Spiel.
Smart Filtering ist die Lösung für diese Herausforderung. Dabei handelt es sich um eine Technik, die die Metadaten eines Datensatzes verwendet, um spezifische Filter zu erstellen, Suchergebnisse zu verfeinern und sie genauer und effizienter zu machen. Durch die Analyse der Informationen zu Ihren Daten, wie z. B. Struktur, Inhalt und Attribute, kann Smart Filtering relevante Kriterien zum Filtern Ihrer Suche identifizieren.
Stellen Sie sich vor, Sie suchen nach „Komödien, die vor dem Jahr 2000 veröffentlicht wurden“. Smart Filtering würde Metadaten wie Genre, Veröffentlichungsdatum und möglicherweise sogar Handlungsschlüsselwörter verwenden, um einen Filter zu erstellen, der nur Filme enthält, die diesen Kriterien entsprechen. Auf diese Weise erhalten Sie eine Liste mit genau dem, was Sie wollen, ohne irrelevantes Rauschen.
Lassen Sie uns im nächsten Abschnitt tiefer in die Funktionsweise von Smart Filtering eintauchen.
Smart Filtering ist ein mehrstufiger Prozess, bei dem Informationen aus Ihren Daten extrahiert, analysiert und spezifische Filter basierend auf Ihren Anforderungen erstellt werden. Lassen Sie es uns aufschlüsseln:
Metadatenextraktion: Der erste Schritt besteht darin, relevante Informationen über Ihre Daten zu sammeln. Dazu gehören Details wie:
Vorfiltergenerierung: Sobald Sie über die Metadaten verfügen, können Sie mit der Erstellung von Vorfiltern beginnen. Hierbei handelt es sich um bestimmte Bedingungen, die Daten erfüllen müssen, um in die Suchergebnisse aufgenommen zu werden. Wenn Sie beispielsweise nach Komödien suchen, die vor dem Jahr 2000 veröffentlicht wurden, könnten Sie Vorfilter für Folgendes erstellen:
Integration mit der Vektorsuche: Der letzte Schritt besteht darin, diese Vorfilter mit Ihrer Vektorsuche zu kombinieren. Dadurch wird sichergestellt, dass die Vektorsuche nur Datenpunkte berücksichtigt, die Ihren vordefinierten Kriterien entsprechen.
Wenn Sie diese Schritte befolgen, verbessert Smart Filtering die Genauigkeit und Effizienz Ihrer Suchergebnisse erheblich.
Metadatenextraktion: Zur Vereinfachung verwenden wir Beispieldaten und definieren die Metadaten manuell. Siehe: get_docs_metadata in prepare_test_data.py
.
Vorfilter-Generierung: Wir werden die Vorfilter in zwei Schritten generieren.
Schritt 1: Metadatenbasierter Filter
Dieser Schritt umfasst die Generierung eines Filters basierend auf den Metadaten. Wir übergeben die Benutzerabfrage und die Metadaten an einen LLM und generieren den Metadatenfilter.
Wir werden den query_constructor verwenden, der mit diesem DEFAULT_SCHEMA_PROMPT initialisiert wird.
Hinweis: Aktualisieren Sie die Eingabeaufforderung und die wenigen Schussbeispiele entsprechend Ihrem Anwendungsfall.
Beispiel: Wenn die Metadaten genre
und release_date
enthalten und der Benutzer nach action
Genrefilmen fragt, die vor 2020 veröffentlicht wurden, können wir LLM verwenden, um einen Filter wie den folgenden zu generieren:
{"$and": [{"genre": {"$in": ["anime"]}}, {"release_date": {"$lt": "2024-01-01"}}]}
Schritt 2: Zeitbasierte Filterung
In diesem Schritt behandeln wir die Fälle, in denen der Benutzer nach den latest
, most recent
und earliest
Informationen fragt. Um diese Informationen abzurufen, müssen wir die tatsächlichen Daten abfragen. In diesem Schritt verwenden wir den LLM-Agenten, um die Mongodb-Sammlung mit dem Executor-Tool abzufragen: QueryExecutorMongoDBTool. Wir generieren den zeitbasierten Filter in generic_time_based_filter. Wir werden auch den im ersten Schritt generierten pre_filter im $match
in der Aggregationsphase verwenden. Beispiel: Wenn der Benutzer den neuesten Film möchte, führt der LLM-Agent die folgende Aggregationsabfrage mit dem Executor-Tool aus:
Invoking: `mongo_db_executor` with `{'pipeline': '[{"$match": {"$and": [{"genre": {"$in": ["anime"]}}, {"release_date": {"$lt": "2024-01-01"}}]}}, { "$sort": { "release_date": -1 } }, { "$limit": 1 }, { "$project": { "release_date": 1 } }]'}`
Integration mit der Vektorsuche: Der generierte Vorfilter wird mit dem MongoDBAtlasVectorSearch-Retriever verwendet:
retriever = vectorstore.as_retriever(
search_kwargs={ ' pre_filter ' : pre_filter}
)
Erstellen Sie eine neue Python-Umgebung
python3 -m venv env
source env/bin/activate
Installieren Sie die Anforderungen
pip3 install -r requirements.txt
Legen Sie die Konfigurationen in config.yaml fest
database_name: < your database name >
collection_name: < your collection name >
vector_index_name: default
embedding_model_dimensions: 1536
similarity: cosine
model: gpt-4o
embedding_model: text-embedding-ada-002
Legen Sie die Umgebungsvariablen fest
export OPEN_AI_API_KEY = " "
export OPEN_API_BASE = " "
# headers are optional
export OPEN_API_DEFAULT_HEADERS= " "
export MONGO_URI= " "
Initialisieren Sie die Mongodb-Sammlung mit Beispieldaten. Dieser Befehl indiziert einige Beispieldaten und erstellt auch einen Vektorsuchindex für die Sammlung.
python3 rag/initialize_mongo_collection.py
python3 rag/main.py --queries < list of queries in json format >
python3 rag/main.py --queries ' ["I want to watch an anime genre movie", "Recommend a thriller or action movie release after Feb, 2010", "Recommend an anime movie released before 2023 with the latest release date"] '
Generierte Vorfilter:
Eingabeabfrage: "I want to watch an anime genre movie", "Recommend a thriller or action movie release after Feb, 2010"
Ausgabe:
Eingabeabfrage: "Recommend a thriller or action movie release after Feb, 2010"
Ausgabe:
Eingabeabfrage: "Recommend an anime movie released before 2023 with the latest release date"
Ausgabe:
Smart Filtering bringt eine Vielzahl von Vorteilen mit sich und macht es zu einem wertvollen Werkzeug zur Verbesserung des Sucherlebnisses:
Verbesserte Suchgenauigkeit: Durch die präzise Ausrichtung auf die Daten, die Ihrer Suchanfrage entsprechen, erhöht Smart Filtering die Wahrscheinlichkeit, relevante Ergebnisse zu finden, erheblich. Kein Durchwühlen durch irrelevante Informationen mehr.
Schnellere Suchergebnisse: Da Smart Filtering den Suchumfang einschränkt, kann das System Informationen effizienter verarbeiten, was zu schnelleren Ergebnissen führt.
Verbesserte Benutzererfahrung: Wenn Benutzer schnell und einfach finden, wonach sie suchen, führt dies zu höherer Zufriedenheit und einem besseren Gesamterlebnis.
Vielseitigkeit: Smart Filtering kann auf verschiedene Domänen angewendet werden, von der Suche nach E-Commerce-Produkten bis hin zu Inhaltsempfehlungen, was es zu einem vielseitigen Tool macht.
Durch die Nutzung von Metadaten und die Erstellung gezielter Vorfilter ermöglicht Ihnen Smart Filtering die Bereitstellung von Suchergebnissen, die den Erwartungen der Benutzer wirklich entsprechen.
Smart Filtering ist ein leistungsstarkes Tool, das Erfahrungen verändert, indem es die Lücke zwischen Benutzerabsicht und Ergebnissen schließt. Durch die Nutzung der Leistungsfähigkeit von Metadaten und Vektorsuche liefert es genauere, relevantere und effizientere Suchergebnisse.
Unabhängig davon, ob Sie eine E-Commerce-Plattform, ein Content-Empfehlungssystem oder eine andere Anwendung erstellen, die auf einer effektiven Suche basiert, kann die Integration von Smart Filtering die Benutzerzufriedenheit erheblich steigern und zu besseren Ergebnissen führen.
Wenn Sie die Grundlagen von Smart Filtering verstehen, sind Sie in der Lage, dessen Potenzial zu erkunden und in Ihren Projekten umzusetzen. Warum also warten? Nutzen Sie noch heute die Leistungsfähigkeit von Smart Filtering und revolutionieren Sie Ihr Suchspiel!
Inspiriert vom Self Query Retriever von LangChain.