ค้นหาเว็บไซต์

การตั้งค่า LLM ในท้องถิ่น: วิธีการใช้ RAG และโมเดลฝังเพื่อหยุดการเสียบริบท


โมเดลภาษาขนาดใหญ่ท้องถิ่นน่าทึ่งมาก และมันก็พัฒนาขึ้นอย่างรวดเร็วอย่างน่าตกใจ ผมมีเหตุผลที่ไม่สามารถเจรจาได้สำหรับการเลือกใช้ระบบท้องถิ่นมากกว่าการพึ่งพายักษ์ใหญ่บนคลาวด์อย่าง Claude หรือ ChatGPT ด้วยเหตุนี้ ผมจึงพยายามอย่างต่อเนื่องในการรวมโมเดลท้องถิ่นเข้ากับการทำงานจริงในชีวิตประจำวันของผม

แต่สำหรับใครก็ตามที่เคยลองทำเองจะบอกคุณว่า การทำด้วยตัวเองมีข้อควรระวังและข้อเสียที่ชัดเจน

อุปสรรคที่ใหญ่ที่สุดอย่างแน่นอนก็คือหน้าต่างบริบท เพื่อให้ได้คำตอบที่ดีกว่าจาก LLM เราต้องให้มันมีบริบทมากขึ้น แต่บริบทนั้นมีค่าใช้จ่าย และทันทีที่หน้าต่างบริบทเริ่มเต็ม โมเดลก็เริ่มเสื่อมสภาพทั้งในด้านความเร็วและคุณภาพ แล้วเราควรทำอย่างไรดี?

ปัญหา, ที่ฉันตระหนัก, ไม่ใช่ตัว LLM เอง ปัญหาคือฉันใช้ LLM สำหรับงานที่มันไม่เคยถูกออกแบบมาให้ทำ และวิธีแก้คือตัวโมเดลเล็ก ๆ ที่ฉันเคยละเลยไปโดยสิ้นเชิง

โมเดลภาษาขนาดใหญ่และปัญหาของบริบท

มันจริง ๆ แพง

ครึ่งหนึ่งของประสบการณ์ของเรากับโมเดลภาษาเกิดจากสิ่งที่เราใส่ให้อยู่ตรงหน้า ถ้าเราให้พรอมต์ที่คลุมเครือและบาง ๆ เราก็จะได้คำตอบที่คลุมเครือและบาง ๆ เพื่อให้ได้คำตอบที่ดีขึ้น เราจำเป็นต้องให้บริบทมากขึ้นกับ LLM

ปัญหาคือบริบทมีค่าใช้จ่ายสูง ในโมเดลบนคลาวด์ บริบทมากขึ้นหมายถึงโทเค็นมากขึ้น และโทเค็นมากขึ้นหมายถึงค่าใช้จ่ายที่สูงขึ้น ในเครื่องหมายความว่าการประมาณผลช้าลง เพราะทุกโทเค็นในหน้าต่างบริบทนั้นต้องถูกประมวลผลระหว่างการสร้าง สำหรับโมเดลท้องถิ่นโดยเฉพาะ เรื่องนี้สำคัญยิ่งขึ้น

เรากำลังทำงานกับเครื่องจักรที่มีขนาดเล็กกว่าและข้อจำกัดที่เข้มงวดมากขึ้น การใส่เอกสารทั้งฉบับลงในหน้าต่างบริบททุกครั้งที่คุณถามคำถามจะลดคุณภาพของประสบการณ์ โมเดลใช้พลังงานมากเกินไปในการลากข้อมูลไปมา แทนที่จะใช้เหตุผลกับส่วนที่สำคัญจริงๆ

โมเดลฝังตัวคือสิ่งที่ทำให้ฉันแก้ปัญหานั้นได้

โมเดลฝังตัว

นักรบที่ไม่ได้รับการยกย่องของ LLMs ในพื้นที่

โมเดลขนาดเล็กที่กำลังพูดถึงคือโมเดลฝังตัว โมเดลฝังตัวมีหลายขนาด แต่เมื่อเทียบกับ LLM แล้ว พวกมันเล็กจริง ๆ สิ่งที่โมเดลฝังตัวทำค่อนข้างเป็นนามธรรมเล็กน้อย แต่ฉันจะพยายามอธิบายให้ดีที่สุด

โมเดลการฝังตัวจะนำข้อความมาชิ้นหนึ่งและแปลงมันเป็นรายการตัวเลขยาว รายการนั้นเรียกว่าเวกเตอร์ และมันแทนความหมายของข้อความในเชิงคณิตศาสตร์

สองประโยคที่มีความหมายคล้ายคลึงกันจะสร้างเวกเตอร์ที่อยู่ใกล้กันในพื้นที่นั้น สองประโยคที่ไม่มีความเกี่ยวข้องกันจะอยู่ไกลกัน

นี่ไม่ใช่การค้นหาด้วยคำหลัก โมเดลไม่ได้สนใจคำหลักที่ตรงกันในลักษณะเดียวกับกล่องค้นหาปกติ โมเดลการฝังเข้าใจความคล้ายคลึงทางความหมาย

ถ้าการอธิบายและแผนภูมิของฉันยังไม่ได้ผล วิดีโอสั้นของ YouTube ด้านล่างนี้จะสื่อสารเรื่องนี้ได้อย่างครบถ้วน:

รูปแบบนี้เรียกว่า RAG

RAG หรือ Retrieval-Augmented Generation แนวคิดคือ แทนที่จะฝังความรู้ทั้งหมดลงในโมเดลเอง คุณเก็บความรู้นั้นไว้ภายนอก ในฐานข้อมูลเวกเตอร์ และดึงเฉพาะชิ้นส่วนที่เกี่ยวข้องในเวลาที่คุณต้องการ งานของโมเดลยังคงเน้นไปที่สิ่งที่มันเก่ง ซึ่งก็คือการสร้างคำตอบ

ก่อนอื่น การฝังจะประมวลผลเอกสารของคุณและแปลงแต่ละส่วนของข้อความเป็นเวกเตอร์ เวกเตอร์เหล่านั้นจะถูกเก็บไว้ในฐานข้อมูลเฉพาะ (บางอย่างเช่น ChromaDB หรือ Qdrant ซึ่งทั้งสองสามารถรันบนเครื่องของคุณเอง) ส่วนนี้เกิดขึ้นเพียงครั้งเดียว

จากนั้น เมื่อคุณถามคำถาม โมเดลฝังตัวเดียวกันจะเปลี่ยนคำค้นหาของคุณให้เป็นเวกเตอร์ด้วย ฐานข้อมูลจะทำการค้นหาความคล้ายคลึงและแสดงส่วนที่ใกล้เคียงกับความหมายของสิ่งที่คุณถาม ส่วนเหล่านั้นจะถูกส่งไปยัง LLM ของคุณเป็นบริบทพร้อมกับคำถามดั้งเดิม LLM จะจัดการกับการตีความ

คุณได้ประโยชน์จากสิ่งนี้โดยไม่รู้ตัว NotebookLM ผู้ช่วยวิจัยของ Google ช่วยให้คุณใส่แหล่งข้อมูลที่มีค่าหลายพันคำลงในนั้นได้ฟรี Google ใจกว้างกับโทเค็นมากเป็นพิเศษหรือไม่?

ไม่ นั่นคือการทำงานของ embedding มันไม่ได้โหลดแหล่งข้อมูลทั้งหมดของคุณเข้าไปในโมเดลทุกครั้งที่มีการค้นหา — มันดึงเฉพาะสิ่งที่เกี่ยวข้องเท่านั้น อย่างรวดเร็วและประหยัด ซึ่งงานหนักถูกส่งต่อไปยังกระบวนการที่มีค่าใช้จ่ายแทบไม่มีเลยในการรัน

การตั้งค่าท้องถิ่นของฉันกับโมเดลฝัง

ของคุณอาจจะแตกต่างอย่างมาก แน่นอน

แม้ว่าการตั้งค่านี้จะทำงานได้อย่างสวยงาม แต่ฉันไม่มีภาพหน้าจอสวยงามมาแบ่งปันเพราะผลลัพธ์เป็นเพียงการตอบสนองของ LLM เท่านั้น

กรณีการใช้งานที่ใกล้ตัวที่สุดของ LLM ในเครื่องคือเอกสารของคุณ สำหรับเรื่องนี้ คุณสามารถสาธิตแนวคิดใน LM Studio ซึ่งเป็นอินเทอร์เฟซ LLM ในเครื่องยอดนิยมได้แล้ว โดยไม่ต้องตั้งค่ามากนัก LM Studio มี RAG ติดตั้งมาให้แล้ว นั่นคือสิ่งที่ข้อความ “embedding model updated ” หมายถึง ในการสนทนาใหม่กับ LLM ของคุณ ให้แน่ใจว่าได้เปิดใช้งาน RAG MCP แล้ว จากนั้นอัปโหลดเอกสารของคุณ นั่นแค่นั้นเอง

ฉันต้องการฝังบันทึกในสมุดบันทึก Obsidian ของฉันอย่างต่อเนื่อง และนี่ไม่เพียงพอที่จะต่อเนื่อง สำหรับสิ่งที่ถาวรมากขึ้น ฉันแนะนำให้ดาวน์โหลดโมเดลฝังและโฮสต์ไว้พร้อมกับ LLM ของคุณ

ฉันใช้ mxbai-embed-large-v1. ตัวเลือกอีกอย่างคือ embeddinggemma-300m. ทั้งหมดนี้เป็นโมเดล embedding ขนาด ใหญ่ แต่ในทางปฏิบัติ พวกมันใช้พื้นที่เก็บข้อมูลประมาณ 500MB และคุณสามารถถ่ายโอนทั้งหมดไปยัง GPU ของคุณได้อย่างง่ายดาย

จากตรงนี้ คุณมีตัวเลือก คุณสามารถใช้แอปสำเร็จรูปอย่าง OpenNotebook ซึ่งเป็นหลักๆ คล้ายกับ NotebookLM ที่โฮสต์เอง จากนั้นชี้ไปที่ LLM และโมเดล embedding ที่คุณโฮสต์ไว้ จากนั้นคุณสามารถอัปโหลดแหล่งข้อมูลของคุณและใช้งานภายในแอปนั้นได้

แต่ก็อีกครั้ง นั่นต้องให้คุณใช้ OpenNotebook สำหรับการค้นหา ฉันต้องการความยืดหยุ่นมากกว่า

ดังนั้นฉันจึงตั้งค่า Qdrant เป็นฐานข้อมูลเวกเตอร์ การตั้งค่าง่ายมาก (ขอบคุณ Docker) จากนั้นด้วยสคริปต์ Python ง่าย ๆ ฉันสามารถโต้ตอบกับโมเดล embedding และให้มันฝังไฟล์ของฉันลงในฐานข้อมูล Qdrant ได้

จากตรงนั้น ฉันบรรจุทั้งหมดนี้ลงในเซิร์ฟเวอร์ MCP เชื่อมต่อมันกับ OpenClaw และก็เท่านั้น ตอนนี้เอเย่นต์ของฉันสามารถดึงบริบทที่เกี่ยวข้องได้โดยไม่ต้องใช้ทั้งหมด สิ่งที่ดีเกี่ยวกับเซิร์ฟเวอร์ MCP คือฉันสามารถเสียบมันเข้ากับอินเทอร์เฟซ AI อื่น ๆ ได้เกือบทุกตัว Claude Code, Codex และ Antigravity ล้วนสนับสนุนเซิร์ฟเวอร์ MCP

การฝังข้อมูลไปไกลกว่าการเป็นแค่ "เอกสาร"

ใช้มันสำหรับประสบการณ์ที่ยั่งยืน

มาร์กดาวน์เป็นภาษาการเขียนโปรแกรมของปี 2026 โมเดลภาษาขนาดใหญ่รับภาษามาเป็นข้อมูลนำเข้าแล้วจึงส่งออกเป็นภาษา คำพูดเป็นภาษาการเขียนโปรแกรม

หากคุณมีเอไอเอเจนต์ของคุณเอง โมเดลฝังตัวเป็นสิ่งจำเป็นสำหรับหน่วยความจำถาวร ทางเลือกคือการส่งบทสนทนาทั้งหมดที่ผ่านมาเป็นบริบทในข้อความใหม่ทุกครั้ง ซึ่งชัดเจนว่าไม่สามารถทำได้ในระดับขนาดใหญ่ มันช้า ทำลายข้อจำกัดของโทเคน และทำให้ประสบการณ์แย่ลง โมเดลฝังตัวคือสิ่งที่ทำให้ระบบสามารถเลือกได้

ดังนั้นกระบวนการทำงานอาจเป็นแบบนี้: OpenClaw หรือเอเจนต์ที่คุณใช้งาน จะเก็บบันทึกของการสนทนาในรูปแบบ Markdown ไฟล์เหล่านั้นจะถูกฝังลงในฐานข้อมูลเวกเตอร์ด้วยโมเดลการฝังตัว เมื่อใดก็ตามที่ OpenClaw ต้องเข้าถึงการสนทนาที่ผ่านมา ความจำของมัน มันสามารถสอบถามฐานข้อมูลเวกเตอร์และดึงสิ่งที่จำเป็นต้องจำออกมาได้อย่างแม่นยำ

มันเกือบจะเหมือนกับการทำงานของความทรงจำของมนุษย์ คุณไม่ได้เริ่มการสนทนากับเพื่อนสนิทของคุณโดยการแนะนำตัวเอง บอกชื่อของคุณ แล้วจากนั้นค่อยเล่าทุกสิ่งที่คุณเคยทำด้วยกัน (เว้นแต่คุณกำลังทำให้เห็นประเด็น!) ไม่ใช่ เหตุการณ์เหล่านั้นมีอยู่แล้ว มันจะถูกเรียกคืนเมื่อจำเป็น

ฉันได้ใช้สิ่งนี้สำหรับสมุดบันทึกของฉัน และมันเป็นความคืบหน้าครั้งสำคัญในการทำให้ LLM ท้องถิ่นทำงานร่วมกับ Obsidian vault ของฉันได้ ไม่ว่ากรณีการใช้งานของคุณจะเป็นแบบใด ฉันแนะนำให้คุณตั้งค่าท่อข้อมูล เมื่อตัว LLM หยุดแบกรับทุกบริบทไว้ทุกอย่างและเริ่มดึงเฉพาะสิ่งที่สำคัญ ประสบการณ์ทั้งหมดจะเปลี่ยนไป

บทความที่เกี่ยวข้อง