Rumah pembangunan bahagian belakang Tutorial Python Menavigasi dunia Harry Potter dengan Graf Pengetahuan

Menavigasi dunia Harry Potter dengan Graf Pengetahuan

Dec 22, 2024 am 12:13 AM

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Anda kemudian boleh mengaktifkan persekitaran maya menggunakan arahan berikut:

source tutorial-env/bin/activate
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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

%pip install --upgrade --quiet  langchain langchain-community langchain-openai langchain-experimental neo4j
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, kami menyambungkan LLM kami ke Neo4J:

docker exec -it ollama ollama run qwen2.5
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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 Laman Web ini
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

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1272
29
Tutorial C#
1252
24
Python vs C: Aplikasi dan kes penggunaan dibandingkan Python vs C: Aplikasi dan kes penggunaan dibandingkan Apr 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.

Python: Permainan, GUI, dan banyak lagi Python: Permainan, GUI, dan banyak lagi Apr 13, 2025 am 12:14 AM

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Apr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Python vs C: Meneroka Prestasi dan Kecekapan Python vs C: Meneroka Prestasi dan Kecekapan Apr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Yang merupakan sebahagian daripada Perpustakaan Standard Python: Senarai atau Array? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary, sementara

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Pembelajaran Python: Adakah 2 jam kajian harian mencukupi? Apr 18, 2025 am 12:22 AM

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

See all articles