中文版文档
เทคโนโลยีการสร้างเสริมการดึงข้อมูล (RAG) ส่งเสริมการรวมแอปพลิเคชันโดเมนเข้ากับโมเดลภาษาขนาดใหญ่ อย่างไรก็ตาม RAG มีปัญหา เช่น ช่องว่างขนาดใหญ่ระหว่างความคล้ายคลึงของเวกเตอร์และความสัมพันธ์ของเหตุผลของความรู้ และความอ่อนไหวต่อตรรกะของความรู้ (เช่น ค่าตัวเลข ความสัมพันธ์ของเวลา กฎของผู้เชี่ยวชาญ ฯลฯ) ซึ่งขัดขวางการดำเนินการบริการความรู้ทางวิชาชีพ
เมื่อวันที่ 24 ตุลาคม 2024 OpenSPG ได้เปิดตัวเวอร์ชัน 0.5 ซึ่งเผยแพร่เฟรมเวิร์กบริการความรู้โดเมนระดับมืออาชีพของ Knowledge Augmented Generation (KAG) อย่างเป็นทางการ KAG มุ่งหวังที่จะใช้ประโยชน์จากกราฟความรู้และการดึงข้อมูลเวกเตอร์อย่างเต็มที่ และปรับปรุงโมเดลภาษาขนาดใหญ่และกราฟความรู้แบบสองทิศทางผ่านสี่ด้านเพื่อแก้ปัญหาความท้าทายของ RAG: (1) การแสดงความรู้ที่เป็นมิตรกับ LLM (2) กราฟความรู้ และ ข้อความต้นฉบับ การจัดทำดัชนีร่วมกันระหว่างแฟรกเมนต์ (3) เอ็นจิ้นการใช้เหตุผลแบบผสมที่ถูกชี้นำโดยรูปแบบตรรกะ (4) การจัดแนวความรู้ด้วยการให้เหตุผลเชิงความหมาย
KAG ดีกว่า NaiveRAG, HippoRAG และวิธีการอื่นๆ อย่างมากในงานคำถามและคำตอบแบบมัลติฮอป คะแนน F1 บน hotpotQA เพิ่มขึ้นค่อนข้าง 19.6% และคะแนน F1 บน 2wiki เพิ่มขึ้นค่อนข้าง 33.5% เราประสบความสำเร็จในการนำ KAG ไปใช้กับงานคำถามและคำตอบความรู้ทางวิชาชีพสองงานของ Ant Group ซึ่งรวมถึงคำถามและคำตอบของรัฐบาลอิเล็กทรอนิกส์ และคำถามและคำตอบด้านสุขภาพอิเล็กทรอนิกส์ และความเป็นมืออาชีพได้รับการปรับปรุงอย่างมีนัยสำคัญเมื่อเทียบกับวิธี RAG
กรอบงาน KAG ประกอบด้วยสามส่วน: kg-builder, kg-solver และ kag-model การเปิดตัวครั้งนี้เกี่ยวข้องกับสองส่วนแรกเท่านั้น โดย kag-model จะค่อยๆ เปิดตัวเป็นโอเพ่นซอร์สในอนาคต
kg-builder ใช้การแสดงความรู้ที่เป็นมิตรกับโมเดลภาษาขนาดใหญ่ (LLM) ตามโครงสร้างลำดับชั้นของ DIKW (ข้อมูล สารสนเทศ ความรู้ และภูมิปัญญา) ไอทีจะอัปเกรดความสามารถในการเป็นตัวแทนความรู้ของ SPG และเข้ากันได้กับการดึงข้อมูลโดยไม่มีข้อจำกัดของสคีมาและการสร้างความรู้ทางวิชาชีพด้วยข้อจำกัดของสคีมาในประเภทความรู้เดียวกัน (เช่น ประเภทเอนทิตี และประเภทเหตุการณ์) นอกจากนี้ยังสนับสนุนการแสดงดัชนีร่วมกันระหว่างโครงสร้างกราฟและบล็อกข้อความต้นฉบับ ซึ่งสนับสนุนการดึงคำถามและคำตอบการใช้เหตุผลอย่างมีประสิทธิภาพ
kg-solver ใช้กลไกการแก้ปัญหาและการใช้เหตุผลแบบไฮบริดที่ใช้สัญลักษณ์นำทางเชิงตรรกะ ซึ่งประกอบด้วยตัวดำเนินการ 3 ประเภท ได้แก่ การวางแผน การใช้เหตุผล และการดึงข้อมูล เพื่อเปลี่ยนปัญหาภาษาธรรมชาติให้เป็นกระบวนการแก้ปัญหาที่รวมภาษาและสัญลักษณ์เข้าด้วยกัน ในกระบวนการนี้ แต่ละขั้นตอนสามารถใช้ตัวดำเนินการที่แตกต่างกัน เช่น การดึงข้อมูลการจับคู่แบบตรงทั้งหมด การดึงข้อความ การคำนวณเชิงตัวเลข หรือการให้เหตุผลเชิงความหมาย เพื่อให้ตระหนักถึงการบูรณาการของกระบวนการแก้ปัญหาที่แตกต่างกันสี่กระบวนการ: การดึงข้อมูล การใช้เหตุผลกราฟความรู้ การใช้เหตุผลทางภาษา และการคำนวณเชิงตัวเลข .
ในบริบทของฐานความรู้ส่วนตัว ข้อมูลที่ไม่มีโครงสร้าง ข้อมูลที่มีโครงสร้าง และประสบการณ์ของผู้เชี่ยวชาญทางธุรกิจมักจะอยู่ร่วมกัน KAG อ้างอิงลำดับชั้น DIKW เพื่ออัปเกรด SPG เป็นเวอร์ชันที่เป็นมิตรกับ LLM สำหรับข้อมูลที่ไม่มีโครงสร้าง เช่น ข่าวสาร กิจกรรม บันทึก และหนังสือ ตลอดจนข้อมูลที่มีโครงสร้าง เช่น ธุรกรรม สถิติ และการอนุมัติ พร้อมด้วยประสบการณ์ทางธุรกิจและกฎความรู้เกี่ยวกับโดเมน KAG ใช้เทคนิคต่างๆ เช่น การวิเคราะห์รูปแบบ การดึงข้อมูลความรู้ การทำให้เป็นมาตรฐานของคุณสมบัติ และการจัดตำแหน่งเชิงความหมายเพื่อรวมข้อมูลทางธุรกิจดิบและกฎของผู้เชี่ยวชาญลงในกราฟความรู้ทางธุรกิจแบบครบวงจร
ทำให้เข้ากันได้กับการดึงข้อมูลแบบไม่มีสคีมาและการสร้างความเชี่ยวชาญแบบจำกัดสคีมาในประเภทความรู้เดียวกัน (เช่น G. ประเภทเอนทิตี ประเภทเหตุการณ์) และสนับสนุนการแสดงดัชนีข้ามระหว่างโครงสร้างกราฟและบล็อกข้อความต้นฉบับ . การแสดงดัชนีร่วมนี้มีประโยชน์ในการสร้างดัชนีกลับหัวตามโครงสร้างกราฟ และส่งเสริมการแสดงและการให้เหตุผลแบบรวมศูนย์ของรูปแบบตรรกะ
KAG เสนอโซลูชันไฮบริดที่มีการนำทางอย่างเป็นทางการตามตรรกะและกลไกการอนุมาน กลไกประกอบด้วยตัวดำเนินการสามประเภท ได้แก่ การวางแผน การใช้เหตุผล และการดึงข้อมูล ซึ่งเปลี่ยนปัญหาภาษาธรรมชาติให้เป็นกระบวนการแก้ไขปัญหาที่รวมภาษาและสัญลักษณ์เข้าด้วยกัน ในกระบวนการนี้ แต่ละขั้นตอนสามารถใช้ตัวดำเนินการที่แตกต่างกัน เช่น การดึงข้อมูลการจับคู่แบบตรงทั้งหมด การดึงข้อความ การคำนวณเชิงตัวเลข หรือการให้เหตุผลเชิงความหมาย เพื่อให้ตระหนักถึงการบูรณาการของกระบวนการแก้ปัญหาที่แตกต่างกันสี่กระบวนการ: การดึงข้อมูล การใช้เหตุผลกราฟความรู้ การใช้เหตุผลทางภาษา และการคำนวณเชิงตัวเลข .
หลังจากการเพิ่มประสิทธิภาพ เราไม่เพียงแต่ตรวจสอบความสามารถในการปรับตัวของ KAG ในเขตข้อมูลแนวตั้งเท่านั้น แต่ยังเปรียบเทียบกับวิธี RAG ที่มีอยู่ในคำถามและคำตอบแบบมัลติฮอปของชุดข้อมูลทั่วไปอีกด้วย เราพบว่ามันดีกว่าวิธี SOTA อย่างเห็นได้ชัด โดย F1 เพิ่มขึ้น 33.5% บน 2wiki และ 19.6% บน hotpotQA เรากำลังปรับปรุงกรอบการทำงานนี้อย่างต่อเนื่อง และได้แสดงให้เห็นถึงประสิทธิผลผ่านการทดลองแบบ end-to-end และตัวชี้วัดการทดลองระเหย เราแสดงให้เห็นถึงความถูกต้องของกรอบการทำงานนี้โดยการใช้เหตุผลตามตรรกะและสัญลักษณ์และการจัดตำแหน่งแนวความคิด
คำจำกัดความของกฎการระบุ "แอปการพนัน"
กำหนดกฎ RiskAppTaxo
Define (s:App)-[p:belongTo]->(o:`TaxOfRiskApp`/`GamblingApp`) {
Structure {
(s)
}
Constraint {
R1("risk label marked as gambling") s.riskMark like "%Gambling%"
}
}
กำหนดกฎการระบุ "นักพัฒนาแอป"
กำหนดกฎของนักพัฒนาแอป
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
}
}
กำหนดหลักเกณฑ์การระบุตัว “ผู้พัฒนาแอปพนัน”
กำหนดผู้ใช้ความเสี่ยงของกฎแอปการพนัน
Define (s:Person)-[p:belongTo]->(o:`TaxOfRiskUser`/`DeveloperOfGamblingApp`) {
Structure {
(s)-[:developed]->(app:`TaxOfRiskApp`/`GamblingApp`)
}
Constraint {
}
}
ขั้นตอนสำคัญในกระบวนการให้เหตุผลมีดังนี้
แปลงปัญหาภาษาธรรมชาติเป็นนิพจน์เชิงตรรกะที่สามารถดำเนินการได้ ซึ่งอาศัยการสร้างแบบจำลองแนวคิดภายใต้โครงการ และอ้างอิงถึงเอกสารการขุดผลิตภัณฑ์ Black
ส่งนิพจน์โลจิคัลที่แปลงแล้วไปยังเหตุผลของ OpenSPG เพื่อดำเนินการเพื่อให้ได้ผลลัพธ์การจำแนกประเภทผู้ใช้
สร้างคำตอบให้กับผลการจัดหมวดหมู่ของผู้ใช้
เมื่อรวมกับการสร้างแบบจำลองแนวคิด OpenSPG แล้ว KAG สามารถลดความยากในการสืบค้นกราฟการแปลงภาษาธรรมชาติ เปลี่ยนการแปลงเชิงข้อมูลเป็นการแปลงเชิงแนวคิดการจัดหมวดหมู่ และตระหนักถึงการประยุกต์ใช้ภาคสนามของคำถามและคำตอบภาษาธรรมชาติในโครงการ OpenSPG ดั้งเดิมได้อย่างรวดเร็ว
แนะนำเวอร์ชันระบบ:
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
ข้อกำหนดซอฟต์แวร์:
macOS / Linux User:Docker,Docker Compose
Windows User:WSL 2 / Hyper-V,Docker,Docker Compose
ใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดไฟล์ docker-compose.yml และเปิดบริการด้วย Docker Compose
# ตั้งค่าตัวแปรสภาพแวดล้อม HOME (เฉพาะผู้ใช้ Windows เท่านั้นที่ต้องดำเนินการคำสั่งนี้)# set HOME=%USERPROFILE%curl -sSL https://raw.githubusercontent.com/OpenSPG/openspg/refs/heads/master/dev/release/ นักเทียบท่า-compose.yml -o นักเทียบท่า-compose.yml นักเทียบท่าเขียน -f นักเทียบท่า-compose.yml ขึ้น -d
นำทางไปยัง URL เริ่มต้นของผลิตภัณฑ์ KAG ด้วยเบราว์เซอร์ของคุณ: http://127.0.0.1:8887
ดูคู่มือผลิตภัณฑ์สำหรับการแนะนำโดยละเอียด
โปรดดูส่วน 3.1 เพื่อเสร็จสิ้นการติดตั้งเครื่องยนต์และอิมเมจที่เกี่ยวข้อง
นักพัฒนา 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 .
นักพัฒนาวินโดวส์
# 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 .
โปรดดูคู่มือเริ่มต้นใช้งานฉบับย่อสำหรับการแนะนำชุดเครื่องมืออย่างละเอียด จากนั้นคุณสามารถใช้ส่วนประกอบในตัวเพื่อสร้างผลลัพธ์ประสิทธิภาพของชุดข้อมูลในตัว และใช้ส่วนประกอบเหล่านั้นกับสถานการณ์ทางธุรกิจใหม่
หากส่วนประกอบในตัวที่ KAG มอบให้ไม่ตรงตามความต้องการของคุณ คุณสามารถขยายการใช้งาน kag-builder และ kag-solver ได้ด้วยตัวเอง โปรดดูส่วนขยาย KAG-Builder และส่วนขยาย KAG-Solver
KAG ใช้ BuilderChain เพื่อเชื่อมส่วนประกอบต่างๆ เช่น ตัวอ่าน ตัวแยก การทำแผนที่ ตัวแยก ตัวจัดตำแหน่ง และเวกเตอร์ไลเซอร์ นักพัฒนาสามารถใช้ BuilderChain ที่กำหนดไว้ล่วงหน้าโดย kag เพื่อสร้างกราฟให้เสร็จสมบูรณ์ หรือประกอบส่วนประกอบที่กำหนดไว้ล่วงหน้าและรับ BuilderChain
ในเวลาเดียวกัน นักพัฒนาสามารถปรับแต่งส่วนประกอบในตัวสร้างและฝังไว้ใน BuilderChain เพื่อดำเนินการได้
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 ดำเนินการโซลเวอร์ไปป์ไลน์ซึ่งประกอบด้วยส่วนประกอบเหตุผล ตัวสร้าง และตัวสะท้อน KAG จัดเตรียมเหตุผล ตัวสร้าง และตัวสะท้อนเริ่มต้น นักพัฒนายังสามารถจัดเตรียมการใช้งานแบบกำหนดเองตาม API ต่อไปนี้:
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 รองรับการเชื่อมต่อด้วย MaaS API ที่เข้ากันได้กับบริการ OpenAI เช่น Qwen / DeepSeek / GPT และยังรองรับการเชื่อมต่อด้วยโมเดลในตัวเครื่องที่ vLLM / Ollama ปรับใช้ นักพัฒนาสามารถเพิ่มการสนับสนุนบริการโมเดลแบบกำหนดเองตามอินเทอร์เฟซ llm_client
kag
├── common
├── llm
├── client
│ ├── llm_client.py
│ ├── ollama_client.py
│ ├── openai_client.py
│ ├── vllm_client.py
KAG รองรับการเรียกโมเดลการนำเสนอ OpenAI และอื่นๆ ที่คล้ายกัน รวมถึงบริการฝัง OpenAI โมเดล bge-m3 ที่ Ollama ใช้งาน นอกจากนี้ยังรองรับการโหลดและการใช้โมเดลการฝังในเครื่องอีกด้วย
kag
├── common
├── vectorizer
│ ├── vectorizer.py
│ ├── openai_vectorizer.py
│ ├── local_bge_m3_vectorizer.py
│ ├── local_bge_vectorizer.py
เมื่อรวมเข้ากับเฟรมเวิร์กอื่น ข้อมูลธุรกิจภายนอกและความรู้ของผู้เชี่ยวชาญสามารถใช้เป็นอินพุตเพื่อเรียกไปป์ไลน์ kag-builder เพื่อสร้างกราฟความรู้ให้เสร็จสมบูรณ์ คุณยังสามารถโทรหา kag-solver เพื่อดำเนินกระบวนการให้เหตุผลของคำถามและคำตอบให้เสร็จสิ้น และผลลัพธ์ของการใช้เหตุผลและกระบวนการระดับกลางจะถูกเปิดเผยต่อระบบธุรกิจ
วิธีที่เฟรมเวิร์กอื่นรวม kag สามารถอธิบายได้ง่ายๆ ดังนี้:
การแทรกความรู้โดเมนเพื่อให้เกิดการผสมผสานระหว่างกราฟแนวคิดโดเมนและกราฟเอนทิตี
การเพิ่มประสิทธิภาพแบบจำลอง kag เพื่อปรับปรุงประสิทธิภาพของการก่อสร้าง KG และการถามตอบ
การยับยั้งภาพหลอนของข้อ จำกัด ตรรกะความรู้
หากคุณใช้ซอฟต์แวร์นี้ โปรดอ้างอิงตามด้านล่างนี้:
KAG: การส่งเสริม LLM ในโดเมนระดับมืออาชีพผ่านการสร้างเสริมความรู้
KGFabric: คลังกราฟความรู้ที่ปรับขนาดได้สำหรับการเชื่อมต่อโครงข่ายข้อมูลองค์กร
@article{liang2024kag, title={KAG: Boosting LLMs in Professional Domains via Knowledge Augmented Generation}, author={Liang, Lei และ Sun, Mengshu และ Gui, Zhengke และ Zhu, Zhongshu และ Jiang, Zhouyu และ Zhong, Ling และ Qu, Yuan และ Zhao, Peilong และ Bo, Zhongpu และ Yang, Jin และคนอื่นๆ}, วารสาร={arXiv preprint arXiv:2409.13731}, year={2024}}@article{yikgfabric, title={KGFabric: A Scalable Knowledge Graph Warehouse for Enterprise Data Interconnection}, author={Yi, Peng และ Liang, Lei และ Da Zhang, Yong Chen และ Zhu , Jinye และ Liu, Xiangyu และ Tang, Kun และ Chen, Jialin และ Lin, Hao และ Qiu, Leijie และ Zhou, Jun}}
ใบอนุญาต Apache 2.0