Dieser Leitfaden erklärt, wie PDF-Verarbeitungsfunktionen in discourse-ai implementiert und genutzt werden können, einschließlich grundlegender Textextraktion und erweiterter Verarbeitung mit LLM-Unterstützung.
Erforderliches Benutzerniveau: Administrator
Zusammenfassung
Das discourse-ai-Plugin unterstützt die PDF-Verarbeitung für RAG (Retrieval-Augmented Generation) in zwei verschiedenen Modi:
Grundlegende Textextraktion
Erweiterte Verarbeitung mit LLM-Analyse
Grundlegende Textextraktion
Dieser Modus bietet grundlegende PDF-Verarbeitungsfunktionen:
Extrahiert Textinhalte mit dem pdf-reader-Gem
Unterstützt Dateien bis zu 100 MB
Funktioniert sofort nach der Plugin-Installation
Verarbeitet nur Textinhalte (ignoriert visuelle Elemente)
Erweiterte Verarbeitung mit LLM-Verbesserungen
Dieser Modus erfordert eine spezifische Konfiguration und bietet fortschrittlichere Funktionen.
Voraussetzungen:
Abonnement eines Enterprise-Plans oder selbst gehostetes Discourse
ImageMagick mit Ghostscript-Unterstützung im Container installiert
Das sind wirklich erstaunliche Nachrichten. Danke, Team! Ich kann es kaum erwarten, bis die verbesserte Verarbeitung abgeschlossen ist. Das wird entscheidend sein für die Forschung zu LLMs und wissenschaftlichen Papieren.
[Zitat=“Sam Saffron, Beitrag:22, Thema:335804, Benutzername:sam”]
Diejenigen, die auf die verbesserte Verarbeitung warten, gebt uns ein paar Wochen
[/Zitat]
Außerdem, gibt es einen Plan, um das RAG “chat-mit-deinen-PDFs”-Feature zu ermöglichen, indem man PDFs in einem KI-BOT-PM oder einem Thema/Post hochlädt und den Bot erwähnt?
@sam Können Sie ein einfaches Video bereitstellen, um diese großartige Option zu erklären, da das, was Sie erwähnt haben, nicht klar genug ist, um es umzusetzen
Es ist eine versteckte Einstellung, Sie müssen die Konsole verwenden, aber Sie müssen auch den Container konfigurieren. Es wird empfohlen, noch ein paar Wochen zu warten.
Auf meiner Website (Arabisches Forum) habe ich einen Test auf Arabisch durchgeführt, indem ich Gesetzestexte in den ersten Beitrag (“Thema”) eingefügt und dann Fragen mit KI gestellt habe. Die Antworten waren jedoch nicht korrekt, und ich glaube, das liegt daran, dass kein kontextbezogenes RAG (Retrieval-Augmented Generation) verwendet wird.
Zuerst einmal vielen Dank für Ihre großartige Arbeit. Sie gefällt mir sehr gut.
Nachdem ich mit den Einstellungen herumgespielt und das KI-Modell auf Gemini-Flash-2.0 umgestellt hatte, funktionierte es für mich hervorragend. Hier ist die Situation, die ich habe:
Wir sind eine Gemeinschaft von Wirtschaftsprüfern, Steuerberatern und Steuerberatern und benötigten ein Werkzeug, um relevante Gesetze zu teilen und Diskussionen darüber anzustoßen. Diese Diskussion sollte für Besucher sehr nützlich sein, da wir Fachleute auf unserem Gebiet sind. Wir zielen darauf ab, dass das KI-Modell Gesetzestexte prüft und analysiert und unsere Fragen beantwortet. Das große Experiment führte zu dem Schluss, dass wir den im ersten Beitrag hinzugefügten Kontext wirklich diskutieren können und, wenn das KI-Modell intelligent genug ist, unsere Fragen mit sehr hochwertigen Ergebnissen beantworten wird.
Vielen Dank nochmals und ich freue mich auf die PDF-Unterstützung, da sie Discourse zur besten Forensoftware machen wird.
Muss es über die Konsole aktiviert werden? Ich sehe keine erweiterten Modusoptionen über die Benutzeroberfläche.
Außerdem erhalte ich einen Fehler, wenn ich versuche, diese PDF-Datei hochzuladen. Sie ist 34 MB groß, aber meine maximale Anhangsgröße ist auf 100 MB eingestellt (sowohl in den Admin-Einstellungen als auch in app.yml). Seltsam ist, dass ich eine komprimierte Version habe, die 16 MB groß ist und problemlos hochgeladen wird. Aber vielleicht ist die größere PDF-Datei im Moment einfach zu komplex? Es gibt viele Bilder, Gleichungen usw.
Hallo @sam
Ich habe derzeit Probleme beim Hochladen und Indizieren der PDFs mit diesem Fehler: Job exception: undefined method `length’ for nil.
Ich frage mich, ob der Fehler mit den oben besprochenen Einstellungen zusammenhängt.
Die Benutzeroberfläche bleibt bei der Indizierung bei 0 % hängen und bewegt sich nicht.
Die Ausnahmedetails sind wie folgt:
/var/www/discourse/plugins/discourse-ai/app/jobs/regular/digest_rag_upload.rb:81:in `chunk_document'
/var/www/discourse/plugins/discourse-ai/app/jobs/regular/digest_rag_upload.rb:40:in `block in execute'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-ai/app/jobs/regular/digest_rag_upload.rb:39:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
Ich bin neu bei Discourse AI, aber ein alter Hase bei Discourses im Allgemeinen.
Ich bin wirklich daran interessiert, dies in diesem Stadium in Demoform für einen bestimmten Anwendungsfall auszuprobieren.
Ich habe die versteckte Website-Einstellung aktiviert.
Ich sehe nichts in SideKiq. Wie kann ich sehen, ob es überhaupt funktioniert?
Mir ist bewusst, dass dies eine Vorabversion ist und noch nicht für den breiten Einsatz bereit ist, aber es wäre großartig, sie erleben und ausprobieren zu können.
Ich bin wirklich an Hinweisen, Tipps, Screenshots oder Rezepten von Leuten interessiert, die dies ausprobieren.
Ich erhalte diese Fehlermeldung, wenn ich den Bot bitte, den Inhalt einiger PDFs auf meiner Website zusammenzufassen. Ich habe die erweiterte Verarbeitung nicht aktiviert und verwende GPT 4.1. Haben Sie eine Idee, was ich falsch mache?
Entschuldigung, es scheint, dass unser System bei dem Versuch, zu antworten, auf ein unerwartetes Problem gestoßen ist.
Fehlerdetails
{
„error“: {
„message“: „Eine Assistentennachricht mit ‚tool_calls‘ muss von Tool-Nachrichten gefolgt werden, die auf jede ‚tool_call_id‘ antworten. Die folgenden tool_call_ids hatten keine Antwortnachrichten: call_nrDCba5mt83oavbXfPq2BtEV“,
„type“: „invalid_request_error“,
„param“: „messages.[2].role“,
„code“: null
}
}”}