中文版文档
Teknologi Retrieval Augmentation Generation (RAG) mendorong integrasi aplikasi domain dengan model bahasa besar. Namun, RAG memiliki masalah seperti kesenjangan besar antara kesamaan vektor dan korelasi penalaran pengetahuan, dan ketidakpekaan terhadap logika pengetahuan (seperti nilai numerik, hubungan waktu, aturan ahli, dll.), yang menghambat implementasi layanan pengetahuan profesional.
Pada tanggal 24 Oktober 2024, OpenSPG merilis v0.5, secara resmi merilis kerangka layanan pengetahuan domain profesional Knowledge Augmented Generation (KAG). KAG bertujuan untuk memanfaatkan sepenuhnya keunggulan Grafik Pengetahuan dan pengambilan vektor, dan secara dua arah meningkatkan model bahasa besar dan grafik pengetahuan melalui empat aspek untuk memecahkan tantangan RAG: (1) representasi pengetahuan yang ramah LLM, (2) Grafik Pengetahuan dan teks asli Indeks timbal balik antar fragmen, (3) mesin penalaran hibrid yang dipandu oleh bentuk-bentuk logis, (4) keselarasan pengetahuan dengan penalaran semantik.
KAG secara signifikan lebih baik daripada NaiveRAG, HippoRAG dan metode lain dalam tugas tanya jawab multi-hop. Skor F1 di hotpotQA relatif meningkat sebesar 19,6%, dan skor F1 di 2wiki relatif meningkat sebesar 33,5%. Kami telah berhasil menerapkan KAG pada dua tugas tanya jawab pengetahuan profesional Ant Group, termasuk tanya jawab e-Government dan tanya jawab e-health, dan profesionalismenya telah meningkat secara signifikan dibandingkan dengan metode RAG.
Kerangka kerja KAG mencakup tiga bagian: kg-builder, kg-solver, dan kag-model. Rilis ini hanya melibatkan dua bagian pertama, kag-model akan dirilis secara bertahap open source di masa depan.
kg-builder mengimplementasikan representasi pengetahuan yang ramah terhadap model bahasa skala besar (LLM). Berdasarkan struktur hierarki DIKW (data, informasi, pengetahuan dan kebijaksanaan), TI meningkatkan kemampuan representasi pengetahuan SPG, dan kompatibel dengan ekstraksi informasi tanpa batasan skema dan konstruksi pengetahuan profesional dengan batasan skema pada tipe pengetahuan yang sama (seperti tipe entitas dan jenis peristiwa), ini juga mendukung representasi indeks timbal balik antara struktur grafik dan blok teks asli, yang mendukung pengambilan tahap tanya jawab penalaran secara efisien.
kg-solver menggunakan mesin pemecahan dan penalaran hibrida yang dipandu simbol logis yang mencakup tiga jenis operator: perencanaan, penalaran, dan pengambilan, untuk mengubah masalah bahasa alami menjadi proses pemecahan masalah yang menggabungkan bahasa dan simbol. Dalam proses ini, setiap langkah dapat menggunakan operator yang berbeda, seperti pengambilan pencocokan tepat, pengambilan teks, perhitungan numerik atau penalaran semantik, sehingga mewujudkan integrasi empat proses pemecahan masalah yang berbeda: Pengambilan, Penalaran Grafik Pengetahuan, penalaran bahasa dan perhitungan numerik .
Dalam konteks basis pengetahuan swasta, data tidak terstruktur, informasi terstruktur, dan pengalaman pakar bisnis sering kali muncul bersamaan. KAG mereferensikan hierarki DIKW untuk meningkatkan SPG ke versi yang ramah terhadap LLM. Untuk data tidak terstruktur seperti berita, peristiwa, log, dan buku, serta data terstruktur seperti transaksi, statistik, dan persetujuan, serta pengalaman bisnis dan aturan pengetahuan domain, KAG menggunakan teknik seperti analisis tata letak, ekstraksi pengetahuan, normalisasi properti, dan penyelarasan semantik untuk mengintegrasikan data bisnis mentah dan aturan pakar ke dalam grafik pengetahuan bisnis terpadu.
Hal ini membuatnya kompatibel dengan ekstraksi informasi bebas skema dan konstruksi keahlian terbatas skema pada tipe pengetahuan yang sama (misalnya, tipe entitas, tipe peristiwa), dan mendukung representasi lintas indeks antara struktur grafik dan blok teks asli . Representasi indeks timbal balik ini berguna untuk pembuatan indeks terbalik berdasarkan struktur grafik, dan mendorong representasi terpadu dan penalaran bentuk logis.
KAG mengusulkan solusi hibrida dan mesin inferensi terpandu yang formal dan logis. Mesin ini mencakup tiga jenis operator: perencanaan, penalaran, dan pengambilan, yang mengubah masalah bahasa alami menjadi proses pemecahan masalah yang menggabungkan bahasa dan notasi. Dalam proses ini, setiap langkah dapat menggunakan operator yang berbeda, seperti pengambilan pencocokan tepat, pengambilan teks, perhitungan numerik atau penalaran semantik, sehingga mewujudkan integrasi empat proses pemecahan masalah yang berbeda: Pengambilan, Penalaran Grafik Pengetahuan, penalaran bahasa dan perhitungan numerik .
Setelah optimasi, kami tidak hanya memverifikasi kemampuan adaptasi KAG di bidang vertikal, tetapi juga membandingkannya dengan metode RAG yang ada dalam kumpulan data umum Tanya Jawab multi-hop. Kami menemukan bahwa ini jelas lebih baik daripada metode SOTA, dengan F1 meningkat sebesar 33,5% di 2wiki dan 19,6% di hotpotQA. Kami terus menyempurnakan kerangka kerja ini dan telah menunjukkan efektivitasnya melalui eksperimen menyeluruh dan metrik eksperimen ablasi. Kami menunjukkan validitas kerangka ini melalui penalaran yang didorong oleh logika dan penyelarasan konseptual.
definisi aturan identifikasi "APLIKASI perjudian".
tentukan aturan riskAppTaxo
Define (s:App)-[p:belongTo]->(o:`TaxOfRiskApp`/`GamblingApp`) {
Structure {
(s)
}
Constraint {
R1("risk label marked as gambling") s.riskMark like "%Gambling%"
}
}
tentukan aturan identifikasi "Pengembang aplikasi".
tentukan aturan pengembang aplikasi
Define (s:Person)-[p:developed]->(o:App) {
Structure {
(s)-[:hasDevice]->(d:Device)-[:install]->(o)
}
Constraint {
deviceNum = group(s,o).count(d)
R1("device installed same app"): deviceNum > 5
}
}
menetapkan aturan untuk identifikasi "pengembang Aplikasi perjudian"
menentukan aturan aplikasi perjudian Pengguna Risiko
Define (s:Person)-[p:belongTo]->(o:`TaxOfRiskUser`/`DeveloperOfGamblingApp`) {
Structure {
(s)-[:developed]->(app:`TaxOfRiskApp`/`GamblingApp`)
}
Constraint {
}
}
Langkah-langkah kunci dalam proses penalaran adalah sebagai berikut.
Ubah masalah bahasa alami menjadi ekspresi logis yang dapat dieksekusi, yang mengandalkan Pemodelan Konseptual dalam proyek, dan mengacu pada dokumen penambangan produk Hitam.
Kirimkan ekspresi logika yang dikonversi ke alasan OpenSPG untuk dieksekusi guna mendapatkan hasil klasifikasi pengguna.
Hasilkan jawaban atas hasil klasifikasi pengguna.
Dikombinasikan dengan pemodelan konsep OpenSPG, KAG dapat mengurangi kesulitan kueri grafik konversi bahasa alami, mengubah konversi berorientasi data menjadi konversi berorientasi konsep klasifikasi, dan dengan cepat mewujudkan penerapan lapangan tanya jawab bahasa alami pada proyek OpenSPG asli.
Merekomendasikan Versi Sistem:
macOS User:macOS Monterey 12.6 or later
Linux User:CentOS 7 / Ubuntu 20.04 or later
Windows User:Windows 10 LTSC 2021 or later
Persyaratan Perangkat Lunak:
macOS / Linux User:Docker,Docker Compose
Windows User:WSL 2 / Hyper-V,Docker,Docker Compose
Gunakan perintah berikut untuk mengunduh file docker-compose.yml dan meluncurkan layanan dengan Docker Compose.
# atur variabel lingkungan HOME (hanya pengguna Windows yang perlu menjalankan perintah ini)# set HOME=%USERPROFILE%curl -sSL https://raw.githubusercontent.com/OpenSPG/openspg/refs/heads/master/dev/release/ docker-compose.yml -o docker-compose.yml buruh pelabuhan menulis -f docker-compose.yml naik -d
Arahkan ke url default produk KAG dengan browser Anda: http://127.0.0.1:8887
Lihat Panduan Produk untuk pengenalan mendetail.
Lihat bagian 3.1 untuk menyelesaikan instalasi mesin & gambar dependen.
pengembang macOS / Linux
# Create conda env: conda create -n kag-demo python=3.10 && conda activate kag-demo
# Clone code: git clone https://github.com/OpenSPG/KAG.git
# Install KAG: cd KAG && pip install -e .
Pengembang Windows
# Install the official Python 3.8.10 or later, install Git.
# Create and activate Python venv: py -m venv kag-demo && kag-demoScriptsactivate
# Clone code: git clone https://github.com/OpenSPG/KAG.git
# Install KAG: cd KAG && pip install -e .
Silakan merujuk ke panduan Mulai Cepat untuk pengenalan rinci tentang toolkit ini. Kemudian Anda dapat menggunakan komponen bawaan untuk mereproduksi hasil kinerja kumpulan data bawaan, dan menerapkan komponen tersebut ke skenario bisnis baru.
Jika komponen bawaan yang disediakan oleh KAG tidak memenuhi kebutuhan Anda, Anda dapat memperluas implementasi kag-builder dan kag-solver sendiri. Silakan merujuk ke Ekstensi KAG-Builder dan Ekstensi KAG-Solver.
KAG menggunakan BuilderChain untuk menggabungkan komponen seperti pembaca, splitter, pemetaan, ekstraktor, pelurus, dan vektorizer. Pengembang dapat menggunakan BuilderChain yang telah ditentukan sebelumnya oleh kag untuk menyelesaikan konstruksi grafik, atau merakit komponen yang telah ditentukan sebelumnya dan mendapatkan BuilderChain.
Pada saat yang sama, pengembang dapat menyesuaikan komponen di pembuat dan menyematkannya di BuilderChain untuk dieksekusi.
kag
├──interface
│ ├── builder
│ │ ├── aligner_abc.py
│ │ ├── extractor_abc.py
│ │ ├── mapping_abc.py
│ │ ├── reader_abc.py
│ │ ├── splitter_abc.py
│ │ ├── vectorizer_abc.py
│ │ └── writer_abc.py
Kag-solver mengeksekusi solver-pipeline yang terdiri dari komponen Reasoner, Generator, dan Reflector. KAG menyediakan pemikir default, generator, dan reflektor. Pengembang juga dapat menyediakan implementasi khusus berdasarkan API berikut:
kag
├── solver
│ ├── logic
│ │ └── solver_pipeline.py
├── interface
├── retriever
│ ├── chunk_retriever_abc.py
│ └── kg_retriever_abc.py
└── solver
├── kag_generator_abc.py
├── kag_memory_abc.py
├── kag_reasoner_abc.py
├── kag_reflector_abc.py
└── lf_planner_abc.py
KAG mendukung docking dengan API MaaS yang kompatibel dengan layanan OpenAI seperti Qwen/DeepSeek/GPT, dan juga mendukung docking dengan model lokal yang diterapkan oleh vLLM/Olama. Pengembang dapat menambahkan dukungan untuk layanan model khusus berdasarkan antarmuka llm_client.
kag
├── common
├── llm
├── client
│ ├── llm_client.py
│ ├── ollama_client.py
│ ├── openai_client.py
│ ├── vllm_client.py
KAG mendukung pemanggilan model representasi OpenAI dan sejenisnya, termasuk layanan penyematan OpenAI, model bge-m3 yang diterapkan oleh Ollama. Ini juga mendukung pemuatan dan penggunaan model penyematan lokal.
kag
├── common
├── vectorizer
│ ├── vectorizer.py
│ ├── openai_vectorizer.py
│ ├── local_bge_m3_vectorizer.py
│ ├── local_bge_vectorizer.py
Ketika diintegrasikan dengan kerangka kerja lain, data bisnis eksternal & pengetahuan pakar dapat digunakan sebagai masukan untuk memanggil saluran kag-builder guna menyelesaikan konstruksi grafik pengetahuan. Anda juga dapat menghubungi pemecah kag untuk menyelesaikan proses penalaran Tanya Jawab, dan hasil penalaran serta proses perantara diungkapkan ke sistem bisnis.
Cara framework lain mengintegrasikan kag secara sederhana dapat digambarkan sebagai:
injeksi pengetahuan domain untuk mewujudkan perpaduan grafik konsep domain dan grafik entitas
optimasi model kag untuk meningkatkan efisiensi konstruksi KG dan Q&A
penghambatan halusinasi kendala logika pengetahuan
Jika Anda menggunakan perangkat lunak ini, harap kutip seperti di bawah ini:
KAG: Meningkatkan LLM di Domain Profesional melalui Knowledge Augmented Generation
KGFabric: Gudang Grafik Pengetahuan yang Dapat Diskalakan untuk Interkoneksi Data Perusahaan
@article{liang2024kag, title={KAG: Meningkatkan LLM di Domain Profesional melalui Knowledge Augmented Generation}, author={Liang, Lei dan Sun, Mengshu dan Gui, Zhengke dan Zhu, Zhongshu dan Jiang, Zhouyu dan Zhong, Ling dan Qu, Yuan dan Zhao, Peilong dan Bo, Zhongpu dan Yang, Jin dan lainnya}, journal={arXiv preprint arXiv:2409.13731}, year={2024}}@article{yikgfabric, title={KGFabric: Gudang Grafik Pengetahuan yang Dapat Diskalakan untuk Perusahaan Interkoneksi Data}, penulis={Yi, Peng dan Liang, Lei dan Da Zhang, Yong Chen dan Zhu, Jinye dan Liu, Xiangyu dan Tang, Kun dan Chen, Jialin dan Lin, Hao dan Qiu, Leijie dan Zhou, Jun}}
Lisensi Apache 2.0