Finden Sie die richtige Stelle in Ihrem 4D Write Pro Dokument mit AI

Automatisch übersetzt von Deepl

In 4D-Anwendungen sind umfangreiche Dokumente an der Tagesordnung: Finanzberichte, interne Richtlinien, technische Handbücher… Die Suche nach einem exakten Schlüsselwort ist oft nicht ausreichend. Das Blättern durch 30-seitige Berichte, um einen Absatz zu finden, ist nicht nur zeitaufwändig, sondern auch fehleranfällig. An dieser Stelle kann KI helfen.

Der in 4D 20 R10 eingeführte semantische Ansatz, der auf Vektoren basiert, ermöglicht es bereits, ein relevantes 4D Write Pro Dokument zu finden, selbst wenn unterschiedliche Formulierungen verwendet werden (z. B. „Bild einfügen“ vs. „Bild hinzufügen“).

Aber was passiert, wenn ein Dokument über mehrere Seiten geht und verschiedene Unterthemen abdeckt? Auch wenn der gesamte Text in einen einzigen Vektor umgewandelt werden kann, sind die Ergebnisse oft besser, wenn wir in einem feineren Maßstab arbeiten. Das ist die Idee hinter dem Chunking: die Aufteilung eines Dokuments in kohärente Segmente, die jeweils durch einen eigenen Vektor dargestellt werden.

Das ist genau das, was es uns ermöglicht, weiter zu gehen: nicht nur das richtige Dokument zu finden, sondern auch die genaue Passage, die der Suche entspricht.

HDI_4DWP_AI_VectorWithChunk

Aufteilen, um besser zu suchen: die Chunking-Strategie

Anstatt ein ganzes Dokument als einen einzigen Vektor zu indizieren, teilen wir es in zusammenhängende Segmente (Chunks) auf, typischerweise einen Absatz oder einen Block von 400 bis 800 Zeichen.

Jeder Chunk wird gespeichert mit:

  • einem eindeutigen Chunk-Bezeichner,
  • dem Dokumentenkennzeichen,
  • seiner Position im Text (startOffset, endOffset), die zur genauen Hervorhebung verwendet wird,
  • seine Vektoreinbettung,
  • und optional einen kurzen Textauszug zur schnellen Überprüfung.

 

Dieser Grad an Granularität eröffnet neue Möglichkeiten:

  • Präzisere Suche,
  • Direkte Auswahl der relevanten Passage,
  • kontextuelle Hervorhebung in 4D Write Pro.

Illustrierter Workflow: Von der Suche zur automatischen Hervorhebung

Hier sehen Sie, wie der Suchprozess aus der Sicht des Benutzers abläuft:

1. Benutzerabfrage
Der Benutzer gibt einen Text ein (z. B. „Berufsausbildung“) und löst eine Dokumentensuche aus.

2. Vektorsuche
Der Text wird vektorisiert und mit den gespeicherten Einbettungen verglichen. Das System gibt die k nächstgelegenen Chunks zurück (z.B. docID=42, chunkID=3, startOffset=1200, endOffset=1600).

3. Anzeige relevanter Absätze
Die Anwendung zeigt eine Liste relevanter Absätze an, zusammen mit dem Dokumentnamen und dem Snippet.

4. Automatische Anzeige und Auswahl des Absatzes
Durch Anklicken eines Ausschnitts in der Liste wird der Benutzer zum vollständigen Dokument weitergeleitet und sieht die Passage hervorgehoben, umgeben von den benachbarten Absätzen. Dank der gespeicherten Textabstände kann der genaue Teil des Dokuments ausgewählt werden.

Warum dieser Ansatz effektiv ist

  • Leistung: Die Einbettung ist bei kurzen Fragmenten genauer als bei einem ganzen Text.
  • Benutzerfreundlichkeit: Der Benutzer wird direkt zu der Stelle geführt, die ihn interessiert, was Zeit spart und das Scrollen durch Dutzende von Seiten vermeidet.
  • Flexibilität: Das Chunking kann angepasst werden (feste Größe, absatzweise, mit oder ohne 10-15 % Überlappung).
  • Skalierbarkeit: Diese Methode funktioniert auch bei Hunderten oder Tausenden von Dokumenten effizient.

Technische Einzelheiten

Eine Demo-Datenbank veranschaulicht diese Funktion anhand mehrerer 4D Write Pro Dokumente.

1. Aufteilung eines Dokuments in Chunks

Jeder Chunk entspricht einem Textintervall innerhalb eines Dokuments.

Für jeden Chunk speichern wir:

  • seine Vektoreinbettung: Einbettung,
  • seine Dokumentenreferenz: ID_Document,
  • einen eindeutigen Bezeichner: ID,
  • seine Textgrenzen: startOffset, endOffset.

 

Show the database structure for splitting a 4D Write Pro document into chunks.

Beim Speichern eines 4D Write Pro Dokuments berechnet 4D die verschiedenen Vektoren, aus denen das Dokument besteht:

$colRange:=WP Get elements($doc.WP; wk type paragraph)
// For each paragraph, create a chunk
For each ($paragraph; $colRange)
$chunk :=ds.Chunk.new()
$chunk .ID_Document:=$doc.ID
$chunk .startOffset:=WP Paragraph range($paragraph).start
$chunk.endOffset:=WP Paragraph range($paragraph).end
$chunk.textExtract:=WP Get text($paragraph)
// Generate vector embedding using AIManagement
$chunk .embedding:=cs.AIManagement.new($apiKey).generateVector($chunk.textExtract)
$chunk .save()
End for each

2. Vektorsuche innerhalb von Chunks

Wir vergleichen die Eingabeaufforderung des Benutzers mit allen Vektoren in der Chunk-Tabelle:

// Generate a vector from the custom prompt using the AIManagement class
var $vector:=cs.AIManagement.new($apiKey).generateVector($prompt)
// Sort entity by cosine similarity
return ds.Chunk.all().orderByFormula(Formula(This.embedding.cosineSimilarity($vector)); dk descending).slice(0; 5)

Wir beschränken die Ergebnisse auf die fünf relevantesten Absätze.

3. Auswahl des gefundenen Absatzes in 4D Write Pro

Wenn der Benutzer eine Passage in der Listbox auswählt, zeigt 4D das Dokument im 4D Write Pro Bereich an und hebt den entsprechenden Absatz hervor:

Case of
: (Form event code=On Selection Change)
// Load the selected document in the 4D Write Pro area
WParea :=WP New(Form.currentItem.document.WP)
GOTO OBJECT (WParea)
// Select the text range defined by startOffset and endOffset
WP SELECT (WParea; Form.currentItem.startOffset; Form.currentItem.endOffset)
End case

Schlussfolgerung

Dieser Ansatz kombiniert das Beste aus beiden Welten: Die semantische Suche identifiziert die relevanten Dokumente, während die Granularität der Chunks es ermöglicht, die genaue Passage zu lokalisieren. Das Ergebnis ist ein 4D Write Pro Suchassistent, der nicht nur ein gutes Dokument findet, sondern den Nutzer direkt zu der Antwort führt, die er braucht.

Stellen Sie sich die Zeitersparnis und das verbesserte Benutzererlebnis vor, wenn Ihr Team direkt zu der relevanten Passage springen kann. Wie könnte dieses Maß an Präzision die Art und Weise verändern, wie Sie oder Ihre Nutzer Ihre Inhalte erkunden und mit ihnen interagieren? Teilen Sie Ihre Gedanken im 4D Forum mit!

Vanessa Talbot
Product Owner - Vanessa Talbot kam im Juni 2014 zum 4D Programmteam. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Seit ihrer Ankunft hat sie an der Definition der wichtigsten Funktionen in 4D gearbeitet. Sie hat an den meisten der neuen Funktionen für präemptives Multi-Threading gearbeitet und auch an einem sehr komplexen Thema: der neuen Architektur für erstellte Anwendungen. Vanessa hat einen Abschluss von der Telecom Saint-Etienne. Sie begann ihre Karriere am Criminal Research Institute als Entwicklerin für die audiovisuelle Abteilung. Sie hat auch in den Bereichen Medien und Medizin als Expertin für technischen Support, Produktion und die Dokumentation neuer Funktionen gearbeitet.