cari
Rumahpembangunan bahagian belakangTutorial PythonMenavigasi dunia Harry Potter dengan Graf Pengetahuan

Matlamat

Adakah anda peminat Harry Potter yang ingin mempunyai segala-galanya tentang alam semesta Harry Potter di hujung jari anda? Atau adakah anda hanya mahu menarik perhatian rakan anda dengan carta yang menarik tentang bagaimana watak-watak yang berbeza dalam Harry Potter bersatu? Jangan lihat lebih jauh daripada graf pengetahuan.

Panduan ini akan menunjukkan kepada anda cara untuk mendapatkan graf pengetahuan dalam Neo4J hanya dengan komputer riba dan buku kegemaran anda.

Apakah itu graf pengetahuan

Menurut Wikipedia:

Graf pengetahuan ialah pangkalan pengetahuan yang menggunakan model data atau topologi berstruktur graf untuk mewakili dan mengendalikan data.

Apa yang anda perlukan

Dari segi perkakasan, anda hanya perlukan komputer, sebaik-baiknya yang mempunyai kad grafik Nvidia. Untuk berdikari sepenuhnya, saya akan menggunakan persediaan LLM tempatan, tetapi seseorang juga boleh menggunakan API OpenAI dengan mudah untuk tujuan yang sama.

Langkah-langkah dalam menyediakan

Anda memerlukan yang berikut:

  1. Ollama, dan model LLM kegemaran anda
  2. persekitaran ular sawa
  3. Neo4J

Ollama

Ketika saya mengekod pada Ubuntu 24.04 dalam WSL2, agar sebarang beban kerja GPU dapat dilalui dengan mudah, saya menggunakan Ollama docker. Menjalankan Ollama sebagai bekas docker adalah semudah memasang kit alat kontena Nvidia dahulu, dan kemudian yang berikut:

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Jika anda tidak mempunyai GPU Nvidia, anda boleh menjalankan Ollama CPU sahaja menggunakan arahan berikut dalam CLI:

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Setelah selesai, anda boleh menarik model LLM kegemaran anda ke dalam Ollama. Senarai model yang tersedia di Ollama ada di sini. Contohnya jika saya ingin menarik qwen2.5, saya boleh menjalankan arahan berikut dalam CLI:

docker exec -it ollama ollama run qwen2.5

Dan anda sudah selesai dengan Ollama!

Persekitaran Python

Anda mula-mula ingin mencipta persekitaran maya ular sawa, supaya mana-mana pakej yang anda pasang, atau sebarang perubahan konfigurasi yang anda buat, dihadkan dalam persekitaran, dan bukannya menggunakannya secara global. Perintah berikut akan mencipta persekitaran maya harry-potter-rag:

python -m venv harry-potter-rag

Anda kemudian boleh mengaktifkan persekitaran maya menggunakan arahan berikut:

source tutorial-env/bin/activate

Seterusnya, gunakan pip untuk memasang pakej yang berkaitan, terutamanya daripada LangChain:

%pip install --upgrade --quiet  langchain langchain-community langchain-openai langchain-experimental neo4j

Menyediakan Neo4J

Kami akan menyediakan Neo4J sebagai bekas docker. Untuk memudahkan penyediaan dengan konfigurasi tertentu, kami menggunakan karang docker. Anda hanya boleh menyalin yang berikut ke dalam fail yang dipanggil docker-compose.yaml, dan kemudian jalankan docker-compose up -d dalam direktori yang sama untuk menyediakan Neo4J.

Persediaan ini juga memastikan data, log dan pemalam dikekalkan dalam folder tempatan, iaitu /data. /log dan pemalam.

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Membina Graf Pengetahuan

Kini kita boleh mula membina Graf Pengetahuan dalam Buku Nota Jupyter! Kami mula-mula menyediakan tika Ollama LLM menggunakan yang berikut:

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Seterusnya, kami menyambungkan LLM kami ke Neo4J:

docker exec -it ollama ollama run qwen2.5

Sekarang, tiba masanya untuk mengambil teks Harry Potter kegemaran anda, atau mana-mana buku kegemaran, dan kami akan menggunakan LangChain untuk membahagikan teks itu kepada beberapa bahagian. Chunking ialah strategi untuk memecahkan teks yang panjang kepada bahagian, dan kami kemudiannya boleh menghantar setiap bahagian ke LLM untuk menukarnya menjadi nod dan tepi, dan memasukkan setiap nod dan tepi bongkah dalam Neo4J. Hanya asas ringkas, nod ialah bulatan yang anda lihat pada graf dan setiap tepi bergabung dua nod bersama-sama.

Kod ini juga mencetak bongkah pertama untuk pratonton pantas tentang rupa ketulan itu.

python -m venv harry-potter-rag

Sekarang, tiba masanya untuk membiarkan GPU kami melakukan tugas berat dan menukar teks kepada Graf Pengetahuan! Sebelum kita menyelami keseluruhan buku, mari kita bereksperimen dengan gesaan untuk membimbing LLM dengan lebih baik dalam mengembalikan graf mengikut cara yang kita mahukan.

Gesaan pada asasnya ialah contoh perkara yang kami jangkakan atau arahan tentang perkara yang kami mahu dipaparkan dalam respons. Dalam konteks graf pengetahuan, kami boleh mengarahkan LLM untuk hanya mengekstrak orang dan organisasi sebagai nod, dan hanya menerima jenis perhubungan tertentu yang diberikan entiti. Sebagai contoh, kita boleh membenarkan hubungan pasangan hanya berlaku antara seseorang dengan orang lain, dan bukannya antara seseorang dan organisasi.

Kami kini boleh menggunakan LLMGraphTransformer pada bahagian pertama teks untuk melihat bagaimana graf itu boleh berubah. Ini adalah peluang yang baik untuk kita mengubah suai gesaan sehingga hasilnya mengikut citarasa kita.

Contoh berikut menjangkakan nod yang boleh menjadi Orang atau Organisasi, dan perhubungan_yang dibenarkan menentukan jenis perhubungan yang dibenarkan. Untuk membolehkan LLM menangkap kepelbagaian teks asal, saya juga menetapkan strict_mode kepada False, supaya sebarang perhubungan atau entiti lain yang tidak ditakrifkan di bawah juga boleh ditangkap. Jika anda sebaliknya menetapkan strict_mode kepada True, entiti dan perhubungan yang tidak mematuhi perkara yang dibenarkan boleh sama ada digugurkan atau dipaksa ke dalam perkara yang dibenarkan (yang mungkin tidak tepat).

source tutorial-env/bin/activate

Setelah anda berpuas hati dengan memperhalusi gesaan anda, kini tiba masanya untuk memasukkan ke dalam Graf Pengetahuan. Ambil perhatian bahawa percubaan - kecuali adalah untuk mengendalikan secara eksplisit sebarang respons yang tidak dapat dimasukkan dengan betul ke dalam Neo4J -- kod direka bentuk supaya sebarang ralat dilog, tetapi tidak menyekat gelung daripada meneruskan dengan menukar ketulan berikutnya kepada graf.

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Gelung di atas mengambil masa kira-kira 46 minit untuk menelan Harry Potter and the Philosopher's Stone, Harry Potter and the Chamber of Secrets, dan Harry Potter and the Prisoner of Azkaban. Saya mempunyai 4868 nod unik! Pratonton pantas tersedia di bawah. Anda dapat melihat bahawa graf itu benar-benar sesak dan sukar untuk membezakan siapa yang berkaitan dengan siapa lagi, dan dalam cara apa.

Navigating the world of Harry Potter with Knowledge Graphs

Kami kini boleh memanfaatkan pertanyaan cypher untuk melihat katakan, Dumbledore!

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Navigating the world of Harry Potter with Knowledge Graphs

Ok sekarang kita dapat Dumbledore sendiri. Mari lihat bagaimana dia berkaitan dengan Harry Potter.

docker exec -it ollama ollama run qwen2.5

Navigating the world of Harry Potter with Knowledge Graphs

Ok, sekarang kami berminat dengan perkara yang telah diperkatakan oleh Harry dan Dumbledore.

python -m venv harry-potter-rag

Navigating the world of Harry Potter with Knowledge Graphs

Kami dapat melihat bahawa graf masih benar-benar mengelirukan, dengan banyak dokumen perlu dilalui untuk benar-benar mencari apa yang kami cari. Kita dapat melihat bahawa pemodelan dokumen sebagai nod tidak sesuai dan kerja lanjut boleh dilakukan pada LLMGraphTransformer untuk menjadikan graf lebih intuitif untuk digunakan.

Kesimpulan

Anda boleh melihat betapa mudahnya untuk menyediakan Graf Pengetahuan pada komputer tempatan anda sendiri, tanpa perlu menyambung ke Internet.

Repo github, yang juga mengandungi keseluruhan Graf Pengetahuan alam semesta Harry Potter, tersedia di sini.

Postscript

Untuk mengimport fail harry_potter.graphml ke dalam Neo4J, salin fail graphml ke dalam folder neo4j /import dan jalankan yang berikut pada penyemak imbas Neo4J:

source tutorial-env/bin/activate

Atas ialah kandungan terperinci Menavigasi dunia Harry Potter dengan Graf Pengetahuan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs C: Aplikasi dan kes penggunaan dibandingkanPython vs C: Aplikasi dan kes penggunaan dibandingkanApr 12, 2025 am 12:01 AM

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Rancangan Python 2 jam: Pendekatan yang realistikRancangan Python 2 jam: Pendekatan yang realistikApr 11, 2025 am 12:04 AM

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python: meneroka aplikasi utamanyaPython: meneroka aplikasi utamanyaApr 10, 2025 am 09:41 AM

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Berapa banyak python yang boleh anda pelajari dalam 2 jam?Berapa banyak python yang boleh anda pelajari dalam 2 jam?Apr 09, 2025 pm 04:33 PM

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam?Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah?Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apa yang perlu saya lakukan jika modul '__builtin__' tidak dijumpai apabila memuatkan fail acar di Python 3.6?Apa yang perlu saya lakukan jika modul '__builtin__' tidak dijumpai apabila memuatkan fail acar di Python 3.6?Apr 02, 2025 am 07:12 AM

Memuatkan Fail Pickle di Python 3.6 Kesalahan Laporan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...

Bagaimana untuk meningkatkan ketepatan segmentasi kata Jieba dalam analisis komen tempat yang indah?Bagaimana untuk meningkatkan ketepatan segmentasi kata Jieba dalam analisis komen tempat yang indah?Apr 02, 2025 am 07:09 AM

Bagaimana untuk menyelesaikan masalah segmentasi kata Jieba dalam analisis komen tempat yang indah? Semasa kami mengadakan komen dan analisis tempat yang indah, kami sering menggunakan alat segmentasi perkataan jieba untuk memproses teks ...

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.