Frage: Wissensgraphen sind wichtig, das DeepSeek-Sprachmodell ist in aller Munde. Kann es verwendet werden, um Wissensgraphen schnell zu erstellen? Ich möchte es ausprobieren. DeepSeek um zu sehen, wie gut es Informationen extrahieren, Wissen integrieren und Diagramme aus dem Nichts erstellen kann.
Methoden: Ich habe drei Experimente durchgeführt, um die Fähigkeiten von DeepSeek zur Erstellung von Wissensgraphen zu testen:
- Einzelne Artikel bauen Mapping: Geben Sie DeepSeek einen Artikel und sehen Sie, ob es die Informationen genau erfassen und ein Diagramm erstellen kann.
- Kartierung mehrerer Artikel durch Fusion: Geben Sie DeepSeek mehrere Artikel, um zu sehen, ob es neues Wissen zu einem bestehenden Graphen hinzufügen kann.
- Thema Generation Mapping: Sagen Sie DeepSeek einfach das Thema des Atlasses, nicht den Artikel, und sehen Sie, ob es von selbst einen Atlas erstellen kann.
Ergebnisse: Experimente zeigen, dass DeepSeek Wissensgraphen gut aufbaut und zusammenführt, aber es gibt noch Raum für Verbesserungen.
Hier sind der genaue Ablauf und die Ergebnisse des Experiments, die ich in einfacheren Worten erläutern werde.
I. Extraktion von Wissen aus einem einzelnen Artikel zur Erstellung einer Karte
Zweck: Testen der Fähigkeit von DeepSeek, Wissen aus einem Artikel zu extrahieren und einen Wissensgraphen zu erstellen.
Prozess: Ich fand einen Artikel über NebulaGraph-Graph-Datenbanken und ließ DeepSeek den Artikel lesen, die wichtigsten Informationen extrahieren und dann NebulaGraph-Datenbankcode (nGQL) generieren, um einen Wissensgraphen zu erstellen.
Anweisungen: "Können Sie mir helfen, einen Wissensgraphen zu erstellen? Ich gebe Ihnen den Artikel, Sie extrahieren die wichtigsten Informationen und erstellen den Wissensgraphen mit nGQL-Code."
Betrieb: Kopieren Sie den Inhalt des Artikels und fügen Sie ihn direkt in DeepSeek ein.
DeepSeek erzeugt nGQL-Code:
# Schema-Definition (TAG-Typ)
CREATE TAG IF NOT EXISTS produkt (
name STRING,
Beschreibung STRING
); CREATE TAG IF NOT EXISTS product
CREATE TAG IF NOT EXISTS Unternehmen (
Name STRING
); CREATE TAG IF NOT EXISTS company
CREATE TAG IF NOT EXISTS Merkmal (
Name STRING
); CREATE TAG IF NOT EXISTS Unternehmen ( name STRING )
CREATE TAG IF NOT EXISTS Werkzeug (
Name STRING
); CREATE TAG IF NOT EXISTS
CREATE TAG IF NOT EXISTS scenario (
Name STRING
); CREATE TAG IF NOT EXISTS
CREATE TAG IF NOT EXISTS Sprache (
name STRING
); CREATE TAG IF NOT EXISTS
CREATE TAG IF NOT EXISTS auth_service (
name STRING
); TAG ERSTELLEN, WENN NICHT VORHANDEN
CREATE TAG IF NOT EXISTS ecosystem (
name STRING
); CREATE TAG IF NOT EXISTS ecosystem ( name STRING ).
# Schema-Definition (Typ EDGE)
CREATE EDGE IF NOT EXISTS has_feature (); CREATE EDGE IF NOT EXISTS used ( name STRING )
CREATE EDGE IF NOT EXISTS used_by (); CREATE EDGE IF NOT EXISTS used_by ()
CREATE EDGE IF NOT EXISTS provides_tool ().
CREATE EDGE IF NOT EXISTS unterstützt_Sprache (); CREATE EDGE IF NOT EXISTS unterstützt_Sprache ().
CREATE EDGE IF NOT EXISTS applicable_scenario (); CREATE EDGE IF NOT EXISTS supports_language ()
CREATE EDGE IF NOT EXISTS compatible_with ();; CREATE EDGE IF NOT EXISTS compatible_with ()
CREATE EDGE IF NOT EXISTS supports_auth (); CREATE EDGE IF NOT EXISTS supports_auth ()
CREATE EDGE IF NOT EXISTS integrates_with ().
# Dateneinfügung - Kernprodukt
INSERT VERTEX product(name, description) VALUES
"NebulaGraph": ("NebulaGraph", "Verteilte Open-Source-Graphdatenbank, die Hunderte von Milliarden Punkten und Billionen von Kanten unterstützt");; # Data Insertion - Kernprodukt INSERT VERTEX product(name, description) VALUES
# Dateneinfügung - Produktmerkmale
INSERT VERTEX merkmal(name) VALUES
"hoch_leistungsfähig": ("hoch_leistungsfähig"), "open_source": ("open_source")
"flexible_modellierung": ("flexible Datenmodellierung"), "read_write_balance": ("read_write_balance")
"read_write_balance": ("Read/Write Balance"), "compatibility": ("Kompatibilität")
"compatibility": ("Query language compatibility");; /* ...
/* ... Weitere Daten hier weglassen ... */
Ergebnisse: Der DeepSeek-Code ist in Ordnung, die Syntax ist korrekt, und er ist effizient, da er mehrere Daten in einer einzigen Anweisung kombiniert. Der Code wird zur Ausführung in NebulaGraph eingefügt, und der Graph sieht wie folgt aus:
Die Grafik ist auf den NebulaGraph zentriert und zeigt die relevanten Informationen an.
II. die Integration von Wissen über mehrere Artikel hinweg
Zweck: Test der Fähigkeit von DeepSeek, Wissen aus mehreren Artikeln zu fusionieren, um einen bestehenden Graphen zu erweitern.
Prozess: Zuerst wird der Graph mit einem Artikel erstellt, dann gibt DeepSeek weitere Artikel über NebulaGraph (aus Baidus Enzyklopädie) ein, um das neue Wissen in den bestehenden Graphen einzubauen.
Anweisungen: "Als nächstes ein weiterer Artikel für Sie. Versuchen Sie, das Mapping mit der aktuellen Tabellenstruktur zu vereinen. Um die Tabellenstruktur zu ändern, verwenden Sie den ALTER-Befehl."
Betrieb: Zusammenfassungen von NebulaGraph und 360 Enzyklopädieeinträgen wurden an DeepSeek weitergegeben.
Der von DeepSeek generierte nGQL-Code (NebulaGraph-Lexikon):
# Strukturänderung 1: Hinzufügen von Versions- und Zeitattributen zum Produkt-Tag
ALTER TAG product ADD (
lizenz STRING,
aktuelle_version STRING,
release_date STRING, last_updated STRING
letzte_Aktualisierung STRING
STRING, letzte_Aktualisierung STRING).
# Strukturänderung 2: Neu entwickelter Beziehungstyp
CREATE EDGE IF NOT EXISTS developed_by();
#-Datenaktualisierung - Produktattribute hinzufügen
INSERT VERTEX product(name, description, licence, current_version, release_date, last_updated)
VALUES
"NebulaGraph": ("NebulaGraph", "Distributed Graph Database", "Apache 2.0", "v3.3.0", "2019-05-15", "2022-11-14");
# Entwicklungsunternehmen hinzufügen (Firmen-Tag wiederverwenden)
INSERT VERTEX Firma(Name)
VALUES
"Yueshu": ("Hangzhou Yueshu Technology Co.)
# Neues Merkmal (Merkmal-Tag wiederverwenden)
INSERT VERTEX Merkmal(Name)
VALUES
"acl_mechanism": ("ACL-Mechanismus"), "linear_scaling": ("ACL_mechanism"), "linear_scaling": ("ACL_mechanism")
"linear_scaling": ("lineare Skalierung"), "data_recovery": ("data_recovery")
"data_recovery": ("Datenwiederherstellung"), "htap": ("htap"), "htap": ("htap"), "htap": ("htap")
"nGQL_language": ("nGQL Abfragesprache").
# Relationship Establishment (Wiederverwendung bestehender Beziehungstypen)
INSERT EDGE has_feature()
VALUES
"NebulaGraph"->"acl_mechanism":(),
"NebulaGraph"->"linear_scaling":(),
"NebulaGraph"->"Daten_Wiederherstellung":(),
NebulaGraph"->"htap":(), "NebulaGraph"->"htap":(),
"NebulaGraph"->"nGQL_language":();
# Hinzufügen einer neuen entwickelten Beziehung
INSERT EDGE developed_by()
VALUES
"NebulaGraph"->"Yueshu":();
Von DeepSeek generierter nGQL-Code (360 Wörter):
# Strukturänderung 1: Hinzufügen der Attribute founder, founded_date und revenue zum Tag company
ALTER TAG company ADD (founder STRING, founded_date STRING, revenue DOUBLE);
# Strukturänderung 2: Ereignistyp TAG hinzufügen
CREATE TAG IF NOT EXISTS event (
Typ STRING, Datum STRING, Ereignis (
Datum STRING,
Betrag STRING, Datum STRING, Betrag DOUBLE, Details STRING
Einzelheiten STRING
STRING, Datum STRING, Betrag DOUBLE, Details STRING).
# Datenaktualisierung: Hinzufügen von 360 Unternehmensinformationen
INSERT VERTEX Unternehmen(Name, Gründer, Gründungsdatum, Umsatz)
VALUES
"360": ("Qihoo360", "Zhou Hongyi", "2005-09", 116,15);
# Dateneinfügung: Produktökologie (Wiederverwendung des Produkt-Tags)
INSERT VERTEX produkt(name)
VALUES
"360_Security_Guard": ("360 Security Guard"), "360_Browser".
"360_Cloud": ("360 Security Cloud").
# Dateneinfügung: wichtige Ereignisse (unter Verwendung des neuen Ereignis-Tags)
INSERT VERTEX event(Typ, Datum, Betrag, Details)
VALUES
"acquisition_360.com": ("Domain Acquisition", "2015-02-04", 1700.0, "RMB 110 million acquisition of 360.com"),
"Privatisierung": ("Privatisierung", "2015-12", 9300.0, "9,3 Mrd. $ Privatisierungsgeschäft"), ).
# Beziehungsaufbau: Multiplexing von nebeneinander entwickelten Produkten
Ergebnisse: DeepSeek kann die Tabellenstruktur auf der Grundlage des neuen Artikels ändern (z. B. indem es Produkt im Gesang antworten Unternehmen Tabelle plus Felder) und fügte auch einen neuen Beziehungstyp hinzu. Dies geschieht wie erforderlich mit dem ALTER um die Tabellenstruktur zu ändern. Das kleine Problem ist, dass der Kommentar die --nGQL nicht erkannt wird, ändern Sie es manuell. # Auf der Linie.
Der Code wird zur Ausführung in die Datenbank eingegeben, und das Fused Mapping funktioniert:
Zusammenfassung: DeepSeek ist gut für die Erstellung von Graphen und die Zusammenführung von Wissen geeignet. Allerdings ist der Server manchmal langsam, und NebulaGraph ändert das Schema asynchron und braucht eine Weile, um wirksam zu werden.
III. Themengenerierung: Agrarkartierung aus dem Nichts
Zweck: Test der Fähigkeit von DeepSeek, Wissensgraphen auf der Grundlage von Themen ohne Artikel zu erstellen.
Prozess: Erstellen Sie einen neuen Dialog und lassen Sie DeepSeek den Mapping-Code direkt zum Thema "Landwirtschaft" generieren. Es wird kein Artikel vorgegeben, es ist ein "free-for-all".
Anweisungen: "Ich möchte einen landwirtschaftlichen Wissensgraphen erstellen. Verwenden Sie die NebulaGraph-Datenbank und erzeugen Sie ein nGQL-Skript. Tabellennamen sind große Buckel, Attributnamen sind kleine Buckel. Schemanamen sind mit `` umschlossen um Konflikte zu vermeiden. Erzeugen Sie mindestens 3000 Knoten."
Von DeepSeek erzeugter nGQL-Code (teilweise):
# ======================================= #
# Erstellen eines Diagrammraums
# ======================================= #
CREATE SPACE `Landwirtschaft` (vid_type = FIXED_STRING(32));
USE `Landwirtschaft`.
# ======================================= #
# Definition von Etiketten Schema (Big Hump Benennung)
# ======================================= #
CREATE TAG IF NOT EXISTS `Crop` (
ErntegutId" int, "Erntegutname" string
Feldfruchtname` string, `Wachstumsperiode
Wachstumszeitraum` int, `suitableTemp` string
geeignetesTemp` string, `ErtragPerMu
`ErtragPerMu` float
);
# ======================================= #
# Hier werden viele Skripte weggelassen
# ======================================= #
Probleme und Verbesserungen:
- Begrenzung der Knotenanzahl: Ich begann mit 3000 Knoten, DeepSeek verweigerte den Import des CSV-Codes und gab Python vor. Ich wollte Python nicht verwenden, also habe ich die Anzahl der Knoten reduziert.
- Die Frage der Kommentierung stellt sich erneut: Die Code-Kommentare sind wieder --Ich möchte noch einmal auf das Problem hinweisen.
Verbesserungshinweise: "Verwenden Sie # für Kommentare, keinen Python-Code, 3000 Knoten sind zu viel. Geben Sie mir einfach das ngql-Skript für 50 Knoten."
Nachfassender Dialog und Anweisungen: Um die Karte zu verfeinern, sprach ich weiter mit DeepSeek und bat es, Daten hinzuzufügen, die Assoziationen zu verstärken, die Karte nach Klassifizierung (Stamm, Ordnung, Familie, Gattung und Art) zu organisieren und auch Daten zur Fruchtfolge zu generieren.
Zum Beispiel meine Anweisungen:
- "Ergänzende Daten für stärkere Datenverknüpfungen".
- "Erstellen Sie einen Atlas mit diesen Klassifizierungen [von Phylonen, Ordnungen, Familien, Gattungen und Arten].
- "Identifizieren Sie Kontraindikationen und bauen Sie Kulturen in die Fruchtfolge ein.
- "Kombinieren Sie die kartierten Daten des Pflanzengewebes, um das nGQL-Skript im gleichen Format wie zuvor zu erstellen".
Experimentelles Intermezzo: DeepSeek, einmal. INSERT Anweisung verwendet die Cypher-Syntax, die von nGQL nicht unterstützt wird, und wurde darauf hingewiesen und geändert.
Anweisungen: "Diese Einfügeanweisung entspricht nicht der nGQL-Syntax. Ändern Sie sie so, dass DDL an erster Stelle steht und DML an zweiter Stelle."
Endgültige Datenmenge: Nach einigen Dialogrunden wird die Menge der Daten angezeigt:
Mapping-Effekte: Erweitern Sie ein paar zufällige Knoten, um zu sehen:
Beispiele für ertragssteigernde Kombinationen von Rotationsarten: Ertragssteigernde kombinatorische Effekte der Adventivbepflanzung:
IV. Zusammenfassung
Schlussfolgerung: DeepSeek zeichnet sich durch die Konstruktion und Fusion von Wissensgraphen aus, und Experimente belegen seine Fähigkeiten:
- Die Extraktion von Informationen erfolgt schnell und präzise: DeepSeek extrahiert schnell Schlüsselinformationen aus Texten, generiert konforme nGQL-Skripte und verfügt über ein ausgeprägtes Sprachverständnis, um Entitäten, Beziehungen und Ereignisse zu erkennen.
- Ausgeprägte Fähigkeit, Wissen zu integrieren: DeepSeek führt Wissen aus mehreren Artikeln zusammen, erweitert und aktualisiert den Graphen auf der Grundlage neuer Artikel und gewährleistet die Vollständigkeit und Genauigkeit des Graphen.
- Sie können eine Karte aus dem Nichts erstellen: Keine Artikel können Diagramme nach Thema erstellen. Es gibt einige Syntaxprobleme bei der Generierung, aber die Anpassungen ergeben brauchbare Skripte.
- Die Details müssen optimiert werden: Von DeepSeek generierte Skripte weisen gelegentlich Syntaxprobleme auf, wie z. B. falsche Kommentare. Bei der Generierung einer großen Anzahl von Knoten kann es vorkommen, dass der Server nur langsam reagiert. Achten Sie auf diese Probleme, wenn Sie das Programm tatsächlich verwenden.