Discourse AI - Einbettungen

:bookmark: Dieses Thema behandelt die Konfiguration des Embeddings-Moduls des Discourse AI-Plugins. Es erklärt, was Embeddings sind, wie sie verwendet werden und wie man sie einrichtet.

:person_raising_hand: Erforderliches Benutzerniveau: Administrator

Embeddings sind eine entscheidende Komponente des Discourse AI-Plugins und ermöglichen Funktionen wie Verwandte Themen und KI-Suche. Diese Anleitung führt Sie durch die Einrichtung und Verwendung von Embeddings in Ihrer Discourse-Instanz.

Was sind Embeddings?

Embeddings sind numerische Darstellungen von Text, die semantische Bedeutung erfassen. In Discourse werden sie verwendet, um:

  1. Verwandte Themen am Ende von Themenseiten zu generieren
  2. Semantische Suchfunktionen zu ermöglichen

Einrichtung von Embeddings

Für gehostete Kunden

Wenn Sie ein gehosteter Kunde sind, sind Embeddings vorkonfiguriert. Sie können einfach die KI-Funktionen aktivieren, die von ihnen abhängen.

Für selbst gehostete Instanzen

Wenn Sie selbst hosten, lesen Sie die Discourse AI Self-Hosted-Anleitung für detaillierte Einrichtungsanweisungen.

Konfiguration von Embeddings

Navigieren Sie zu AdminEinstellungenDiscourse AI und stellen Sie sicher, dass die folgenden Einstellungen aktiviert sind.

  1. ai embeddings enabled: Aktiviert oder deaktiviert das Embeddings-Modul
  2. ai embeddings selected model: Wählt das Modell aus, das zur Generierung von Embeddings verwendet werden soll

Optionale Einstellungen, die angepasst werden können…

  • AI embeddings generate for pms: Entscheidet, ob Embeddings für private Nachrichten generiert werden sollen
  • AI embeddings semantic related topics enabled: Aktiviert oder deaktiviert die Funktion „Verwandte Themen“
  • AI embeddings semantic related topics: Die maximale Anzahl der anzuzeigenden verwandten Themen
  • AI embeddings semantic related include closed topics: Einbeziehung geschlossener Themen in KI-Suchergebnisse
  • AI embeddings semantic search enabled: Aktiviert die Vollseiten-KI-Suche
  • AI embeddings semantic search hyde model: Modell, das zur Erweiterung von Schlüsselwörtern verwendet wird, um bessere Ergebnisse bei einer semantischen Suche zu erzielen

Anbieter

Navigieren Sie in den Admin-Einstellungen zum Tab AI-Plugin → Embeddings, um anbieterspezifische Einstellungen wie API-Schlüssel zu konfigurieren.

Discourse AI unterstützt mehrere Embedding-Anbieter:

  • Von Discourse gehostete Embeddings (empfohlen und Standard)
  • OpenAI
  • Google
  • Open-Source-Modelle über Hugging Face
  • Benutzerdefinierte Optionen

Funktionen

Verwandte Themen

Wenn aktiviert, erscheint am Ende von Themenseiten ein Abschnitt „Verwandte Themen“, der auf semantisch ähnliche Diskussionen verlinkt.

KI-Suche

Embeddings treiben die semantische Suchoption in der Vollseiten-Suchoberfläche an.

Die semantische Suche stützt sich auf HyDE (Hypothetical Document Embedding). Wir erweitern den Suchbegriff mit einem von Ihnen bereitgestellten großen Sprachmodell. Nach der Erweiterung wandeln wir die erweiterte Suche in einen Vektor um und suchen nach ähnlichen Themen. Diese Technik fügt der Suche Latenz hinzu und verbessert die Ergebnisse.

Wenn Sie ein Modell für HyDE über ai embeddings semantic search hyde model auswählen, stellen Sie sicher, dass Sie ein schnelles Modell wie Gemini Flash, Claude Haiku, GPT4o Mini oder die neuesten verfügbaren Modelle wählen.

Generierung von Embeddings

Embeddings werden automatisch für neue Beiträge generiert. Um Embeddings für vorhandene Inhalte zu generieren:

  1. Embeddings werden beim Aufrufen einer Seite erstellt, wenn sie fehlen.
  2. Discourse füllt automatisch ältere Themen mit Embeddings auf.

FAQs

F: Wie werden verwandte Themen bestimmt?
A: Verwandte Themen basieren ausschließlich auf Embeddings, die den Titel, die Kategorie, die Tags und den Inhalt der Beiträge umfassen.

F: Kann ich bestimmte Themen von verwandten Themen ausschließen?
A: Ja, es gibt eine Website-Einstellung, um geschlossene Themen aus den Ergebnissen zu entfernen.

F: Funktionieren Embeddings für historische Beiträge?
A: Ja, das System wird automatisch Embeddings für alle Ihre Inhalte nachfüllen.

Zusätzliche Ressourcen

17 „Gefällt mir“

Großartige Arbeit, vielen Dank im Voraus, aber ich kann keine ähnlichen Themen unter den Themen sehen, irgendwie sind meine Einstellungen so, ich habe einen OpenAI-Schlüssel hinzugefügt. Die semantische Suche funktioniert, aber wie kann ich ähnliche Artikel unter Themen anzeigen?

Wenn Sie OpenAI für Embeddings verwenden möchten, müssen Sie ai embeddings model auf text-embedding-ada-002 setzen.

3 „Gefällt mir“

Wie werden die Jobs zur Generierung von Embeddings geplant? Aus dem Code geht hervor, dass Embeddings nur generiert werden, wenn die Seite aufgerufen wird und Embeddings fehlen. Gibt es eine Möglichkeit, Embeddings für die gesamte Website zu generieren, wenn die Funktion aktiviert wird?

2 „Gefällt mir“

Sie können auch rake ai:embeddings:backfill ausführen, um Eagerly Embeddings für alle Themen zu generieren.

8 „Gefällt mir“

Vorschlag

Manchmal liest man ein Thema, von dem man den größten Teil des Hintergrunds kennt, aber es gibt auch einige Erwähnungen, die unbekannt sind. Während es eine Zusammenfassung gibt, um ein ganzes Thema bis zu diesem Zeitpunkt zusammenzufassen, wäre auch eine KI-Option hilfreich, die ein Glossar für das Thema als Beitrag nahe oben einfügt und es aktualisiert, wenn ein Benutzer ein Wort oder eine Phrase auswählt, die er in das Glossar aufnehmen möchte.


Heute habe ich beim Lesen dieses Themas eine Referenz nicht erkannt, sie nachgeschlagen und eine Antwort mit einer Referenz dafür hinzugefügt. Während ich die restlichen Referenzen kenne, bin ich sicher, dass es andere gibt, insbesondere diejenigen, die neu bei LLMs und ähnlichem sind, die viele der genannten Referenzen nicht kennen würden, und wenn die KI ihnen helfen könnte, würden sie die Seite viel öfter besuchen.

Während ich weiß, was RAG in diesem ersten Beitrag bedeutet, wissen das wirklich viele?

Was ist RAG (Klicken Sie auf das Dreieck zum Erweitern)

Wie funktionieren domänenspezifische Chatbots? Ein Überblick über Retrieval Augmented Generation (RAG)


Hinweis: Ich wusste nicht, zu welchem Thema ich dies posten sollte, aber da es Embeddings zum Funktionieren benötigte, habe ich es hier gepostet. Bitte verschieben Sie dies, wenn es woanders sinnvoller ist oder sich der Discourse AI-Plugin ändert.

1 „Gefällt mir“

Sind Embeddings die einzige Variable bei der Bestimmung von „verwandten Themen“? Oder werden andere Faktoren berücksichtigt (z. B. Autor, Thema-Score, Thema-Alter, Kategorie usw.)?

3 „Gefällt mir“

Nur die Einbettungen, aber diese enthalten den Titel, die Kategorie, die Tags und die Beiträge. Es gibt eine Website-Einstellung, um geschlossene Themen auch aus den Ergebnissen zu entfernen.

5 „Gefällt mir“

7 Beiträge wurden zu einem neuen Thema aufgeteilt: Ist die semantische Volltextsuche nur auf Englisch?

2 Beiträge wurden in ein neues Thema aufgeteilt: Unterschiede bei der Suchlatenz zwischen KI-semantischer und Stichwortsuche

Ich wünschte, ich hätte das schon vor ein paar Monaten gefunden. Ich habe bereits Embeddings mit bge-small-en-v1.5 erstellt und sie in einer externen Datenbank gehostet.

Ich werde sehen, ob es in diese ‘Standard’-Einrichtung eingepasst werden kann!

Ich habe einen kleinen Fehler in der neuesten Version gefunden, der dazu führt, dass rake ai:embeddings:backfill fehlschlägt:

root@nbg-webxj:/var/www/discourse# rake ai:embeddings:backfill
rake aborted!
NameError: uninitialized constant Parallel (NameError)

  Parallel.each(topics.all, in_processes: args[:concurrency].to_i, progress: "Topics") do |t|
  ^^^^^^
/var/www/discourse/plugins/discourse-ai/lib/tasks/modules/embeddings/database.rake:27:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => ai:embeddings:backfill
(See full trace by running task with --trace)

Ich vermute, dass die Ursache darin liegt, dass das parallel-Gem weder in diesem Plugin noch im Discourse-Kern installiert ist (ich finde nur eines im if ENV["IMPORT"] == "1"-Block: gem "parallel", require: false).

Ich habe festgestellt, dass auch das ruby-progressbar-Gem für die Ausführung von rake ai:embeddings:backfill benötigt wird.

Ich habe auf Github einen einfachen PR erstellt:

2 „Gefällt mir“

Hinweis an andere, dass diese Rake-Methode anscheinend herabgestuft/semi-veraltet ist, wie Falco auf GitHub mitteilte:

Danke für die PR @fokx, aber ich habe diese unbeabsichtigt weggelassen, da die Rake-Aufgabe in Ungnade gefallen ist und nur in seltenen Fällen von erfahrenen Betreibern verwendet werden sollte, die diese leicht außerhalb des Bandes installieren können.

Wird die semantische Suchoption nicht mehr in diesem Dropdown angezeigt und stattdessen durch den KI-Schalter verstanden oder aktiviert?

1 „Gefällt mir“

Können Sie mir bitte bestätigen, ob die Einbettungen nur nach der Installation für Beiträge funktionieren oder ob wir damit auch alle historischen Beiträge semantisch durchsuchen können? Ich hoffe auf Letzteres! Danke.

1 „Gefällt mir“

Es ist später, da es automatisch Einbettungen für alle Ihre Inhalte auffüllt.

4 „Gefällt mir“

Ich versuche, KI-Einbettungen mit Gemini Flash einzurichten, aber es funktioniert nicht. Ich kann keine guten Beschreibungen/Beispiele für alle Einstellungfelder finden, daher habe ich vielleicht ein oder zwei wichtige übersehen. Ich weiß nicht, ob die Einstellung ‘ai_embeddings_model’ erforderlich ist, aber wenn ich sie auf ‘gemini’ setze, erhalte ich die folgende Fehlermeldung…

Ich konnte die Einstellung ai_gemini_api_key nicht finden. Ich habe Gemini Flash als LLM mit einem API-Schlüssel eingerichtet und das funktioniert auch anderswo, z. B. bei der Zusammenfassung, aber ich gehe davon aus, dass hier der API-Schlüssel woanders eingegeben werden muss?

Ich nehme an, das würde auch mit OpenAI funktionieren, oder?

Es wäre großartig, wenn es ihre Batch-API (50% Rabatt) unterstützen könnte.

Ja, aber heutzutage füllen wir automatisch im Hintergrund auf, daher ist dies nicht zwingend erforderlich.

Für preisbewusste Leute unterstützen wir großartige Open-Weights-Modelle, die Sie auf Ihrer eigenen Hardware ausführen können.

1 „Gefällt mir“

Danke. Verstehe ich es richtig, dass Backfill bedeutet, dass die Vektorisierung stattfindet? Müssen die Vektoren beim Wechsel zwischen Modellen neu berechnet werden (Sind sie „proprietär“)? Ich nehme an, ja.

Es wäre nützlich zu wissen, wie sich die Kosten für die Nutzung des OpenAI API-Stacks im Vergleich zur Investition in einen GPU-gestützten Server mit Open-Source-Lösung darstellen. Gibt es eine Formel oder eine Möglichkeit, die Anzahl der verwendeten Tokens abzuschätzen? Wir verwenden die API nur zur Vektorisierung von Beiträgen, nicht zur Berechnung von Vektorabständen, richtig? Die Anzahl der verwendeten Tokens hängt also davon ab, wie viel Inhalt wir haben, korrekt?

Ich gehe davon aus, dass für beide verwandten Themen und die KI-gestützte Suche alle Beiträge nur einmal vektorisiert werden müssen, sodass ich die Gesamtzahl der Wörter in der Beitragstabelle berechnen und die benötigte Anzahl von Tokens ableiten kann. Der gleiche Prozess würde für die tägliche Hinzufügung von Beiträgen gelten. Ich vernachlässige die Suchphrasen vorerst.