ปัญญาประดิษฐ์
LlamaIndex: เพิ่มประสิทธิภาพ LLM Applications ด้วยข้อมูลที่กำหนดเองได้อย่างง่ายดาย

โมเดลภาษาขนาดใหญ่ (LLMs) เช่น GPT ของ OpenAI ได้รับการฝึกฝนจากข้อมูลที่หลากหลายและสามารถเข้าถึงได้จากสาธารณะ โดยแสดงให้เห็นถึงความสามารถที่น่าประทับใจในการสร้างข้อความ สรุปคำถาม และวางแผน尽管มีความสามารถที่หลากหลาย แต่คำถามที่ถูกถามบ่อยๆ คือการรวมโมเดลเหล่านี้เข้ากับข้อมูลส่วนบุคคลหรือข้อมูลที่เป็นกรรมสิทธิ์ได้อย่างไร
ธุรกิจและบุคคลมีข้อมูลที่เป็นเอกลักษณ์และข้อมูลส่วนบุคคลซึ่งบ่อยครั้งจะถูกเก็บไว้ในแอปพลิเคชันต่างๆ เช่น Notion, Slack และ Salesforce หรือเก็บไว้ในไฟล์ส่วนบุคคล เพื่อให้ใช้ประโยชน์จาก LLMs สำหรับข้อมูลนี้ วิธีการต่างๆ ได้ถูกเสนอและทดลอง
การปรับแต่ง เป็นวิธีการหนึ่ง ซึ่งเกี่ยวข้องกับการปรับเปลี่ยนน้ำหนักของโมเดลเพื่อรวมความรู้จากชุดข้อมูลเฉพาะ อย่างไรก็ตาม การดำเนินการนี้ไม่ใช่เรื่องง่าย ต้องใช้ความพยายามมากในการเตรียมข้อมูล และกระบวนการปรับให้เหมาะสมที่ยาก ต้องใช้ความเชี่ยวชาญด้านการเรียนรู้ของเครื่องจักร และอาจมีค่าใช้จ่ายสูง โดยเฉพาะอย่างยิ่งเมื่อทำงานกับชุดข้อมูลขนาดใหญ่
การเรียนรู้ในบริบทได้ปรากฏขึ้นเป็นวิธีการทดแทน โดยให้ความสำคัญกับการสร้างอินพุตและคำสั่งให้เหมาะสมเพื่อให้ LLM มีข้อมูลที่จำเป็นในการสร้างอินพุตที่ถูกต้อง วิธีการนี้ช่วยลดความจำเป็นในการฝึกโมเดลใหม่ และให้วิธีการที่มีประสิทธิภาพและเข้าถึงได้ง่ายยิ่งขึ้นในการรวมข้อมูลส่วนบุคคล
แต่ข้อเสียของวิธีนี้คือขึ้นอยู่กับทักษะและความเชี่ยวชาญของผู้ใช้ในการ การออกแบบคำสั่ง นอกจากนี้ การเรียนรู้ในบริบทอาจไม่แม่นยำหรือเชื่อถือได้เสมอไป โดยเฉพาะอย่างยิ่งเมื่อทำงานกับข้อมูลที่มีความเชี่ยวชาญหรือเทคนิคสูง โมเดลที่ได้รับการฝึกฝนจากข้อความบนอินเทอร์เน็ตอาจไม่เข้าใจภาษาเฉพาะหรือบริบทที่เฉพาะเจาะจง ซึ่งอาจนำไปสู่การสร้างอินพุตที่ไม่ถูกต้องหรือไม่เกี่ยวข้อง
นอกจากนี้ จำนวนบริบทที่สามารถให้ได้ในคำสั่งเดียวมีจำกัด และประสิทธิภาพของ LLM อาจลดลงเมื่อความซับซ้อนของงานเพิ่มขึ้น ยังมีความท้าทายด้านความเป็นส่วนตัวและความปลอดภัยของข้อมูล เนื่องจากข้อมูลที่ให้ไว้ในคำสั่งอาจมีความละเอียดอ่อนหรือเป็นข้อมูลที่ต้องรักษาความลับ
ในขณะที่ชุมชนกำลังสำรวจเทคนิคเหล่านี้ เครื่องมืออย่าง LlamaIndex ได้เริ่มได้รับความสนใจ
มันถูกเริ่มต้นโดย Jerry Liu นักวิจัยจาก Uber ในขณะที่ทดลองกับ GPT-3 เมื่อฤดูใบไม้ร่วงปีที่แล้ว Liu สังเกตเห็นข้อจำกัดของโมเดลในการจัดการข้อมูลส่วนบุคคล เช่น ไฟล์ส่วนบุคคล ซึ่งนำไปสู่การเริ่มต้นโครงการ LlamaIndex ที่เปิดให้ใช้งาน
โครงการนี้ได้รับความสนใจจากนักลงทุน และได้รับเงินทุน 8.5 ล้านเหรียญสหรัฐฯ ในรอบการให้ทุนเริ่มต้นล่าสุด
LlamaIndex ช่วยให้ผู้ใช้สามารถเพิ่มประสิทธิภาพ LLMs ด้วยข้อมูลที่กำหนดเองได้อย่างง่ายดาย โดยเชื่อมช่องว่างระหว่างโมเดลที่ได้รับการฝึกฝนแล้วและกรณีการใช้งานข้อมูลที่กำหนดเอง ผู้ใช้สามารถใช้ข้อมูลของตนเองกับ LLMs ได้อย่างราบรื่น ส่งเสริมสภาพแวดล้อมที่การสร้างความรู้และการให้เหตุผลมีความเป็นส่วนตัวและให้ข้อมูลเชิงลึก
ผู้ใช้สามารถให้ LLMs มีข้อมูลของตนเองได้อย่างราบรื่น ส่งเสริมสภาพแวดล้อมที่การสร้างความรู้และการให้เหตุผลมีความเป็นส่วนตัวและให้ข้อมูลเชิงลึก LlamaIndex จัดการกับข้อจำกัดของการเรียนรู้ในบริบทโดยการให้แพลตฟอร์มที่มีความเป็นส่วนตัวและปลอดภัยยิ่งขึ้นสำหรับการโต้ตอบกับข้อมูล โดยทำให้แน่ใจว่าผู้ใช้ที่มีประสบการณ์ด้านการเรียนรู้ของเครื่องจักรที่จำกัดสามารถใช้ประโยชน์จาก LLMs กับข้อมูลส่วนบุคคลได้อย่างเต็มที่
แนวคิดระดับสูงและข้อมูลเชิงลึกบางประการ
1. การสร้างแบบจำลองที่เพิ่มประสิทธิภาพ (RAG):
RAG เป็นกระบวนการที่มีสองส่วนที่ออกแบบมาเพื่อรวม LLMs กับข้อมูลที่กำหนดเอง โดยเพิ่มความสามารถของโมเดลในการให้คำตอบที่แม่นยำและให้ข้อมูลเชิงลึก กระบวนการนี้ประกอบด้วย:
- ขั้นตอนการสร้างดัชนี: นี่คือขั้นตอนการเตรียมการ โดยที่พื้นฐานสำหรับการสร้างฐานความรู้ถูกสร้างขึ้น
- ขั้นตอนการค้นหา: ที่นี่ ฐานความรู้ถูกค้นหาเพื่อหาข้อมูลที่เกี่ยวข้องเพื่อช่วย LLMs ในการตอบคำถาม
การเดินทางด้วย LlamaIndex:
- ตัวเชื่อมต่อข้อมูล: ตัวเชื่อมต่อข้อมูลคือ “พาสปอร์ต” ของข้อมูลของคุณสู่ LlamaIndex ช่วยให้นำเข้าข้อมูลจากแหล่งต่างๆ และรูปแบบต่างๆ และแปลงเป็น “เอกสาร” ที่เรียบง่าย ตัวเชื่อมต่อข้อมูลสามารถพบได้ใน LlamaHub ซึ่งเป็นที่เก็บข้อมูลที่เปิดให้ใช้งานซึ่งมีตัวโหลดข้อมูลที่ออกแบบมาเพื่อการรวมเข้าด้วยกันอย่างง่ายดาย
- เอกสาร/โหนด: เอกสารคือ “กระเป๋าเดินทาง” ที่สามารถบรรจุประเภทข้อมูลที่หลากหลาย เช่น PDF, ออกพุต API หรือรายการฐานข้อมูล ในทางกลับกัน โหนดคือ “ชิ้นส่วน” ของเอกสารที่มีข้อมูลที่เพิ่มขึ้นและความสัมพันธ์กับโหนดอื่นๆ เพื่อให้แน่ใจว่ามีพื้นฐานที่แข็งแกร่งสำหรับการค้นหาข้อมูลที่แม่นยำในภายหลัง
- ดัชนีข้อมูล: หลังจากการนำเข้าข้อมูล LlamaIndex ช่วยให้สามารถสร้างดัชนีข้อมูลที่สามารถค้นหาได้ ในเบื้องหลัง มันจะแยกเอกสารที่ไม่ได้ประมวลผลออกเป็นรูปแบบระหว่างกลาง คำนวณการฝังเวกเตอร์ และอนุมานข้อมูลที่เกี่ยวข้อง ในบรรดาดัชนี “VectorStoreIndex” มักเป็นตัวเลือกที่นิยม
ประเภทของดัชนีใน LlamaIndex: กุญแจสู่ข้อมูลที่จัดระเบียบ
LlamaIndex มีดัชนีหลายประเภท แต่ละประเภทมีจุดประสงค์และการใช้งานที่แตกต่างกัน ที่แก่นกลางของดัชนีเหล่านี้คือ “โหนด” ที่กล่าวถึงข้างต้น มาทำความเข้าใจดัชนีของ LlamaIndex และกลไกการทำงานของมันกัน
1. ดัชนีแบบรายการ:
- กลไก: ดัชนีแบบรายการจัดโหนดเรียงลำดับเหมือนรายการ หลังจากที่ข้อมูลเข้ามาถูกแบ่งออกเป็นโหนดแล้ว โหนดเหล่านั้นจะถูกจัดเรียงในลักษณะเชิงเส้นและพร้อมสำหรับการค้นหาเชิงลำดับหรือผ่านคำค้นหาหรือเวกเตอร์
- ข้อดี: ประเภทดัชนีนี้มีประโยชน์เมื่อต้องการค้นหาเชิงลำดับ LlamaIndex จะใช้ข้อมูลเข้าของคุณทั้งหมด แม้ว่าจะเกินขีดจำกัดโทเค็นของ LLM ก็ตาม โดยการค้นหาข้อความจากโหนดแต่ละอันและปรับคำตอบเมื่อเลื่อนลงไปในรายการ
2. ดัชนีเวกเตอร์:
- กลไก: ที่นี่ โหนดจะถูกแปลงเป็นเวกเตอร์ฝังและเก็บไว้ทั้งแบบท้องถิ่นหรือในฐานข้อมูลเวกเตอร์เช่น Milvus เมื่อมีการค้นหา จะดึงโหนดที่คล้ายกันที่สุด top_k มาและส่งไปยังตัวสร้างคำตอบ
- ข้อดี: หากกระบวนการทำงานของคุณต้องใช้การค้นหาเวกเตอร์สำหรับความคล้ายคลึงทางคำนึงถึงความหมายเชิงคำนึง คุณสามารถใช้ดัชนีนี้
3. ดัชนีแบบต้นไม้:
- กลไก: ในดัชนีแบบต้นไม้ ข้อมูลเข้าจะพัฒนาเป็นโครงสร้างต้นไม้ โดยสร้างจากโหนดใบ (ชิ้นส่วนข้อมูลเดิม) ขึ้นไปเป็นโหนดพ่อที่สร้างโดยใช้ GPT ในระหว่างการค้นหา ดัชนีแบบต้นไม้สามารถเดินทางจากโหนดรากไปยังโหนดใบหรือสร้างคำตอบโดยตรงจากโหนดใบที่เลือก
- ข้อดี: ดัชนีแบบต้นไม้ช่วยให้การค้นหาชิ้นส่วนข้อความยาวมีประสิทธิภาพมากขึ้น และทำให้การดึงข้อมูลจากส่วนต่างๆ ของข้อความง่ายขึ้น
4. ดัชนีคำค้นหา:
- กลไก: ดัชนีคำค้นหาจะสร้างแผนที่คำค้นหาสู่โหนด เมื่อมีการค้นหา คำค้นหาจะถูกดึงออกมาจากคำถาม และโหนดที่ถูกแมปจะถูกนำมาใช้
- ข้อดี: เมื่อคุณมีคำถามของผู้ใช้ที่ชัดเจน คุณสามารถใช้ดัชนีคำค้นหาได้ ตัวอย่างเช่น การค้นหาเอกสารด้านสุขภาพที่เกี่ยวข้องกับ COVID-19 จะมีประสิทธิภาพมากขึ้น
การติดตั้ง LlamaIndex
การติดตั้ง LlamaIndex เป็นกระบวนการที่ตรงไปตรงมา คุณสามารถเลือกติดตั้งโดยตรงจาก Pip หรือจากแหล่งที่มา (โปรดแน่ใจว่าคุณมี Python ติดตั้งในระบบของคุณหรือคุณสามารถใช้ Google Colab)
1. การติดตั้งจาก Pip:
- ดำเนินการคำสั่งต่อไปนี้:
pip install llama-index
- หมายเหตุ: ในระหว่างการติดตั้ง LlamaIndex อาจดาวน์โหลดและเก็บไฟล์สำหรับแพ็คเกจบางอย่าง เช่น NLTK และ HuggingFace เพื่อกำหนดไดเร็กทอรีสำหรับไฟล์เหล่านี้ คุณสามารถใช้ตัวแปรสิ่งแวดล้อม “LLAMA_INDEX_CACHE_DIR”
2. การติดตั้งจากแหล่งที่มา:
- ก่อนอื่น ให้โคลนรีポจิทอรี LlamaIndex จาก GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- เมื่อโคลนแล้ว ให้เข้าไปในไดเร็กทอรีโครงการ
- คุณจะต้องใช้ Poetry สำหรับการจัดการความสัมพันธ์ของแพ็คเกจ
- สร้างสภาพแวดล้อมเสมือนโดยใช้ Poetry:
poetry shell - สุดท้าย ติดตั้งแพ็คเกจหลักโดยใช้:
poetry install
การตั้งค่าสภาพแวดล้อมของคุณสำหรับ LlamaIndex
1. การกำหนดค่า OpenAI:
- โดยค่าเริ่มต้น LlamaIndex ใช้
gpt-3.5-turboของ OpenAI สำหรับการสร้างข้อความและtext-embedding-ada-002สำหรับการดึงและฝังเวกเตอร์ - เพื่อใช้การกำหนดค่านี้ คุณจะต้องมี
OPENAI_API_KEYลงทะเบียนที่เว็บไซต์ของ OpenAI และสร้างโทเค็น API ใหม่ - คุณมีความยืดหยุ่นในการปรับเปลี่ยนโมเดลภาษาขนาดใหญ่ (LLM) ที่ใช้ตามความต้องการของโครงการของคุณ ขึ้นอยู่กับผู้ให้บริการ LLM ของคุณ คุณอาจต้องใช้โทเค็นและคีย์สิ่งแวดล้อมเพิ่มเติม
2. การกำหนดค่าสภาพแวดล้อมท้องถิ่น:
- หากคุณไม่ต้องการใช้ OpenAI LlamaIndex จะเปลี่ยนไปใช้โมเดลท้องถิ่นโดยอัตโนมัติ –
LlamaCPPและllama2-chat-13Bสำหรับการสร้างข้อความ และBAAI/bge-small-enสำหรับการดึงและฝังเวกเตอร์ - เพื่อใช้
LlamaCPPติดตามคำแนะนำการติดตั้งที่ให้มา ตรวจสอบให้แน่ใจว่าคุณติดตั้งแพ็คเกจllama-cpp-pythonซึ่งควรจะถูก编译เพื่อสนับสนุน GPU ของคุณ การตั้งค่านี้จะใช้หน่วยความจำประมาณ 11.5GB ทั่ว CPU และ GPU - สำหรับการฝังเวกเตอร์ท้องถิ่น ให้ดำเนินการ
pip install sentence-transformersการตั้งค่าท้องถิ่นนี้จะใช้หน่วยความจำประมาณ 500MB
ด้วยการตั้งค่าเหล่านี้ คุณสามารถปรับแต่งสภาพแวดล้อมของคุณให้ใช้พลังของ OpenAI หรือรันโมเดลท้องถิ่น ซึ่งสอดคล้องกับความต้องการและทรัพยากรของโครงการของคุณ
กรณีการใช้งานง่ายๆ: การค้นหาเว็บเพจด้วย LlamaIndex และ OpenAI
นี่คือสคริปต์ Python ที่เรียบง่ายเพื่อแสดงวิธีการค้นหาเว็บเพจสำหรับข้อมูลเชิงลึกที่เฉพาะเจาะจง:
!pip install llama-index html2text
<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>
<p># ใส่คีย์ OpenAI ของคุณด้านล่าง:
os.environ["OPENAI_API_KEY"] = ""</p>
<p># URL ที่คุณต้องการโหลดเข้าสู่เวกเตอร์สโตร์:
url = "http://www.paulgraham.com/fr.html"</p>
<p># โหลด URL เข้าสู่เอกสาร (สามารถโหลดเอกสารหลายๆ ได้)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>
<p># สร้างเวกเตอร์สโตร์จากเอกสาร
index = VectorStoreIndex.from_documents(documents)</p>
<p># สร้างเครื่องมือค้นหาที่คุณสามารถถามคำถามได้:
query_engine = index.as_query_engine()</p>
<p># ถามคำถามที่คุณต้องการกับข้อมูลที่โหลด:
response = query_engine.query("What are the 3 best advise by Paul to raise money?")
print(response)
คำแนะนำที่ดีที่สุด 3 ข้อของ Paul สำหรับการระดมทุนคือ: 1. เริ่มต้นด้วยตัวเลขที่ต่ำเมื่อระดมทุนครั้งแรก สิ่งนี้ช่วยให้คุณมีความยืดหยุ่นและเพิ่มโอกาสในการระดมทุนในระยะยาว 2. มุ่งเป้าไปที่การทำกำไรหากเป็นไปได้ การมีแผนในการทำกำไรโดยไม่พึ่งพาการระดมทุนเพิ่มเติมจะทำให้ธุรกิจของคุณน่าสนใจสำหรับนักลงทุนมากขึ้น 3. อย่าเพิ่มมูลค่าให้กับการระดมทุน การระดมทุนมีความสำคัญ แต่ไม่ใช่ปัจจัยที่สำคัญที่สุดในการระดมทุน ให้ความสำคัญกับการได้รับเงินทุนที่จำเป็นและค้นหานักลงทุนที่ดีแทน
ด้วยสคริปต์นี้ คุณได้สร้างเครื่องมือที่ทรงพลังในการดึงข้อมูลเฉพาะจากเว็บเพจโดยการถามคำถามเพียงเท่านั้น นี่เป็นเพียงภาพรวมเล็กๆ ของสิ่งที่สามารถทำได้ด้วย LlamaIndex และ OpenAI เมื่อค้นหาเว็บเพจ
LlamaIndex เทียบกับ Langchain: การเลือกตามเป้าหมายของคุณ
การเลือกของคุณระหว่าง LlamaIndex และ Langchain จะขึ้นอยู่กับวัตถุประสงค์ของโครงการของคุณ หากคุณต้องการพัฒนาเครื่องมือค้นหาที่ฉลาด LlamaIndex เป็นตัวเลือกที่ดี โดยมีความเชี่ยวชาญในการจัดเก็บข้อมูลที่ชาญฉลาด ในทางกลับกัน หากคุณต้องการสร้างระบบเช่น ChatGPT ที่มีความสามารถในการเชื่อมต่อ Langchain เป็นตัวเลือกของคุณ มันไม่เพียงแต่รองรับหลายๆ ตัวของ ChatGPT และ LlamaIndex แต่ยังขยายฟังก์ชันการทำงานโดยการสร้างตัวแทนหลายงานได้ ตัวอย่างเช่น ด้วย Langchain คุณสามารถสร้างตัวแทนได้ที่สามารถดำเนินการโค้ด Python ในขณะที่ทำการค้นหา Google ได้โดยพร้อมๆ กัน ในสรุป ในขณะที่ LlamaIndex มีความเชี่ยวชาญในการจัดการข้อมูล Langchain จัดการเครื่องมือหลายๆ ชิ้นเพื่อนำเสนอโซลูชันที่ครอบคลุม


















