


Ziel
Sind Sie ein Harry-Potter-Fan und möchten alles über das Harry-Potter-Universum immer zur Hand haben? Oder möchten Sie Ihre Freunde einfach mit einer coolen Grafik beeindrucken, die zeigt, wie die verschiedenen Charaktere in Harry Potter zusammenkommen? Suchen Sie nicht weiter als nach Wissensgraphen.
Diese Anleitung zeigt Ihnen, wie Sie nur mit Ihrem Laptop und Ihrem Lieblingsbuch ein Wissensdiagramm in Neo4J erstellen.
Was ist ein Wissensgraph?
Laut Wikipedia:
Ein Wissensgraph ist eine Wissensdatenbank, die ein graphstrukturiertes Datenmodell oder eine Topologie verwendet, um Daten darzustellen und zu verarbeiten.
Was brauchen Sie
An Hardware benötigen Sie lediglich einen Computer, am besten einen mit einer Nvidia-Grafikkarte. Um völlig autark zu sein, werde ich ein lokales LLM-Setup verwenden, aber man könnte für den gleichen Zweck auch problemlos eine OpenAI-API verwenden.
Schritte zur Einrichtung
Sie benötigen Folgendes:
- Ollama und dein Lieblings-LLM-Modell
- eine Python-Umgebung
- Neo4J
Ollama
Da ich auf Ubuntu 24.04 in WSL2 programmiere, verwende ich Ollama Docker, damit jede GPU-Arbeitslast problemlos weitergeleitet werden kann. Das Ausführen von Ollama als Docker-Container ist so einfach wie die Installation des Nvidia-Container-Toolkits und dann Folgendes:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Wenn Sie keine Nvidia-GPU haben, können Sie ein reines CPU-Ollama mit dem folgenden Befehl in der CLI ausführen:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Sobald Sie fertig sind, können Sie Ihr Lieblings-LLM-Modell in Ollama ziehen. Die Liste der auf Ollama verfügbaren Modelle finden Sie hier. Wenn ich beispielsweise qwen2.5 abrufen möchte, kann ich den folgenden Befehl in der CLI ausführen:
docker exec -it ollama ollama run qwen2.5
Und du bist fertig mit Ollama!
Python-Umgebung
Sie möchten zunächst eine virtuelle Python-Umgebung erstellen, damit alle von Ihnen installierten Pakete oder von Ihnen vorgenommenen Konfigurationsänderungen auf die Umgebung beschränkt sind, anstatt sie global anzuwenden. Der folgende Befehl erstellt eine virtuelle Umgebung Harry-Potter-Rag:
python -m venv harry-potter-rag
Sie können die virtuelle Umgebung dann mit dem folgenden Befehl aktivieren:
source tutorial-env/bin/activate
Als nächstes installieren Sie mit pip die relevanten Pakete, hauptsächlich von LangChain:
%pip install --upgrade --quiet langchain langchain-community langchain-openai langchain-experimental neo4j
Neo4J einrichten
Wir werden Neo4J als Docker-Container einrichten. Um die Einrichtung mit bestimmten Konfigurationen zu vereinfachen, verwenden wir Docker Compose. Sie können einfach Folgendes in eine Datei namens docker-compose.yaml kopieren und dann docker-compose up -d im selben Verzeichnis ausführen, um Neo4J einzurichten.
Dieses Setup stellt außerdem sicher, dass Daten, Protokolle und Plugins in lokalen Ordnern, d. h. /data, gespeichert bleiben. /logs und Plugins.
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Aufbau des Wissensgraphen
Wir können jetzt mit dem Aufbau des Knowledge Graph im Jupyter Notebook beginnen! Wir richten zunächst eine Ollama LLM-Instanz mit folgendem Befehl ein:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Als nächstes verbinden wir unser LLM mit Neo4J:
docker exec -it ollama ollama run qwen2.5
Jetzt ist es an der Zeit, sich Ihren Lieblingstext von Harry Potter oder ein beliebiges Lieblingsbuch zu schnappen, und wir werden LangChain verwenden, um den Text in Abschnitte aufzuteilen. Chunking ist eine Strategie, um einen langen Text in Teile zu zerlegen. Anschließend können wir jeden Teil an das LLM senden, um ihn in Knoten und Kanten umzuwandeln und die Knoten und Kanten jedes Chunks in Neo4J einzufügen. Nur eine kurze Einführung: Knoten sind Kreise, die Sie in einem Diagramm sehen, und jede Kante verbindet zwei Knoten miteinander.
Der Code druckt auch den ersten Block aus, um eine schnelle Vorschau darauf zu erhalten, wie die Blöcke aussehen.
python -m venv harry-potter-rag
Jetzt ist es an der Zeit, die schwere Arbeit unserer GPU zu überlassen und den Text in Knowledge Graph umzuwandeln! Bevor wir tief in das gesamte Buch eintauchen, experimentieren wir mit Eingabeaufforderungen, um den LLM besser dabei zu unterstützen, ein Diagramm in der von uns gewünschten Weise zurückzugeben.
Eingabeaufforderungen sind im Wesentlichen Beispiele dafür, was wir erwarten, oder Anweisungen dafür, was in der Antwort erscheinen soll. Im Zusammenhang mit Wissensgraphen können wir das LLM anweisen, nur Personen und Organisationen als Knoten zu extrahieren und nur bestimmte Arten von Beziehungen angesichts der Entitäten zu akzeptieren. Beispielsweise können wir zulassen, dass die Ehegattenbeziehung nur zwischen einer Person und einer anderen Person stattfindet und nicht zwischen einer Person und einer Organisation.
Wir können jetzt den LLMGraphTransformer auf den ersten Textblock anwenden, um zu sehen, wie das Diagramm aussehen könnte. Dies ist eine gute Gelegenheit für uns, die Eingabeaufforderung zu optimieren, bis das Ergebnis unseren Wünschen entspricht.
Das folgende Beispiel erwartet Knoten, die eine Person oder eine Organisation sein können, und die erlaubten_Beziehungen geben die Arten von Beziehungen an, die zulässig sind. Damit LLM die Vielfalt des Originaltextes erfassen kann, habe ich strict_mode außerdem auf False gesetzt, sodass auch alle anderen Beziehungen oder Entitäten erfasst werden können, die unten nicht definiert sind. Wenn Sie strict_mode stattdessen auf „True“ setzen, können Entitäten und Beziehungen, die nicht den zulässigen Anforderungen entsprechen, entweder gelöscht oder in die zulässigen Werte gezwungen werden (was möglicherweise ungenau ist).
source tutorial-env/bin/activate
Sobald Sie mit der Feinabstimmung Ihrer Eingabeaufforderung zufrieden sind, ist es nun an der Zeit, sie in einen Knowledge Graph einzubinden. Beachten Sie, dass der Versuch – mit der Ausnahme, explizit jede Antwort zu verarbeiten, die nicht ordnungsgemäß in Neo4J eingefügt werden konnte – der Code so konzipiert ist, dass jeder Fehler protokolliert wird, die Schleife jedoch nicht daran gehindert wird, mit der Konvertierung nachfolgender Blöcke in Diagramme fortzufahren.
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Für die obige Schleife habe ich etwa 46 Minuten gebraucht, um „Harry Potter und der Stein der Weisen“, „Harry Potter und die Kammer des Schreckens“ und „Harry Potter und der Gefangene von Askaban“ aufzunehmen. Am Ende habe ich 4868 eindeutige Knoten! Eine kurze Vorschau finden Sie unten. Sie können sehen, dass die Grafik sehr überfüllt ist und es schwierig ist zu unterscheiden, wer mit wem sonst auf welche Weise verwandt ist.
Wir können jetzt Chiffrierabfragen nutzen, um uns beispielsweise Dumbledore anzusehen!
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Ok, jetzt haben wir nur noch Dumbledore selbst. Mal sehen, wie er mit Harry Potter verwandt ist.
docker exec -it ollama ollama run qwen2.5
Ok, jetzt interessiert uns, was Harry und Dumbledore gesprochen haben.
python -m venv harry-potter-rag
Wir können sehen, dass die Grafik immer noch sehr verwirrend ist und viele Dokumente durchgehen müssen, um wirklich zu finden, wonach wir suchen. Wir können sehen, dass die Modellierung von Dokumenten als Knoten nicht ideal ist, und es könnten weitere Arbeiten am LLMGraphTransformer durchgeführt werden, um die Verwendung des Diagramms intuitiver zu gestalten.
Abschluss
Sie können sehen, wie einfach es ist, einen Knowledge Graph auf Ihrem eigenen lokalen Computer einzurichten, ohne dass eine Verbindung zum Internet erforderlich ist.
Das Github-Repo, das auch den gesamten Knowledge Graph des Harry-Potter-Universums enthält, ist hier verfügbar.
Nachtrag
Um die harry_potter.graphml-Datei in Neo4J zu importieren, kopieren Sie die graphml-Datei in den neo4j-Ordner /import und führen Sie Folgendes im Neo4J-Browser aus:
source tutorial-env/bin/activate
Das obige ist der detaillierte Inhalt vonMit Knowledge Graphs durch die Welt von Harry Potter navigieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Laden Sie Gurkendateien in Python 3.6 Umgebungsbericht Fehler: ModulenotFoundError: Nomodulennamen ...

Wie löste ich das Problem der Jiebeba -Wortsegmentierung in der malerischen Spot -Kommentaranalyse? Wenn wir malerische Spot -Kommentare und -analysen durchführen, verwenden wir häufig das Jieba -Word -Segmentierungstool, um den Text zu verarbeiten ...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.