ในยุคของปัญญาประดิษฐ์ (AI) การดึงความรู้ที่มีความหมายจากชุดข้อมูลจำนวนมหาศาลกลายเป็นสิ่งสำคัญสำหรับภาคธุรกิจและผู้ใช้ทั่วไป เข้าสู่ยุคแห่ง Retrieval-Augmented Generation (RAG) ซึ่งเป็นความก้าวหน้าที่เพิ่มขีดความสามารถของ AI ทำให้ระบบไม่เพียงแต่สร้างข้อความที่เหมือนมนุษย์คิดเท่านั้น แต่ยังดึงข้อมูลที่เกี่ยวข้องแบบเรียลไทม์อีกด้วย การผสมผสานนี้สร้างคำตอบที่มีทั้งบริบทมากมายและเนื้อหาที่แม่นยำ
ในขณะที่เราออกเดินทางสู่การเดินทางอันน่าตื่นเต้นผ่านมหาสมุทรแสนกว้างใหญ่ของปัญญาประดิษฐ์ (AI) เราก็จำเป็นต้องเข้าใจสามเสาหลักที่จะเป็นดาวนำทางให้เราก่อน ได้แก่ Generative AI, Large Language Model (LLM), LangChain, Hugging Face และแอปพลิเคชันที่มีประโยชน์บน RAG (Retriever-Augmented Generation) นี้
หัวใจสำคัญในการเดินทางของเราคือ Large Language Model (LLM) และ Generative AI ซึ่งเป็นสองตัวขับเคลื่อนอันทรงพลังที่ผลักดันเรือแห่งนวัตกรรมให้แล่นไปข้างหน้า
LLM เช่น Qwen, GPT และอื่นๆ เป็นยักษ์ใหญ่ด้านข้อความที่สามารถทำความเข้าใจและสร้างภาษาที่เหมือนมนุษย์คิดได้ในปริมาณมาก โมเดลเหล่านี้ได้รับการฝึกฝนเรื่องข้อความมาอย่างโชกโชน ทำให้สามารถทำนายและสร้างสตริงข้อความที่สอดคล้องกันและมีความเกี่ยวข้องตามบริบท โมเดลดังกล่าวเป็นแกนหลักของงานประมวลผลภาษาที่เป็นธรรมชาติมากมาย ตั้งแต่การแปลไปจนถึงสร้างสรรค์เนื้อหา
Generative AI คือพ่อมดผู้สร้างสรรค์ในอาณาจักรแห่ง AI Generative AI ประกอบด้วยเทคโนโลยีที่สร้างอินสแตนซ์ข้อมูลใหม่ที่คล้ายคลึงกับข้อมูลการฝึกอบรม เช่น รูปภาพ เพลง และข้อความ ซึ่งเป็นสิ่งที่สำคัญที่สุดสำหรับการเดินทางของเราครั้งนี้ ในบริบทของเรา Generative AI หมายถึงความสามารถของ AI ในการรังสรรค์นวนิยายและตอบโต้กับชุดข้อมูล เรื่องราว หรือแนวคิดแปลกใหม่ที่ไม่เคยเห็นมาก่อน Generative AI ทำให้ AI ไม่ใช่แค่เลียนแบบอดีต แต่ยังประดิษฐ์ คิดค้น และสร้างแรงบันดาลใจได้ด้วย
LangChain ทำหน้าที่เป็นสถาปนิกให้เวิร์กโฟลว์ AI ของเรา โดยออกแบบโครงสร้างอย่างพิถีพิถันซึ่งช่วยให้การผสมผสานและการโต้ตอบระหว่างส่วนประกอบต่างๆ ของ AI เป็นไปอย่างราบรื่น เฟรมเวิร์กนี้ช่วยลดความยุ่งยากในกระบวนการที่ซับซ้อนของการเชื่อมโยงกระแสข้อมูลจากระบบย่อยอัจฉริยะ ประกอบด้วย LLM และระบบการดึงข้อมูล ทำให้งานต่างๆ เช่น การดึงข้อมูลและการทำความเข้าใจภาษาธรรมชาติเข้าถึงได้สะดวกกว่าที่เคย
Hugging Face เมืองคึกคักที่โมเดล AI เจริญเติบโต ศูนย์กลางแห่งนี้มีโมเดลที่ได้รับการฝึกมาแล้วล่วงหน้าจำนวนมาก ซึ่งเป็นเสมือนพื้นที่อันอุดมสมบูรณ์ให้ได้สำรวจและประยุกต์ใช้แมชชีนเลิร์นนิง คุณต้องสร้างบัญชี Hugging Face ในการเข้าถึงศูนย์กลางนี้และทรัพยากรข้างใน เมื่อคุณทำตามขั้นตอนนี้ ประตูสู่โลกอันกว้างใหญ่ของ AI กำลังรอคุณอยู่ เพียงแค่ไปที่ Hugging Face และลงทะเบียนเพื่อเริ่มต้นการผจญภัย
Retrieval-Augmented Generation (RAG) เป็นเทคนิค AI ที่ซับซ้อนซึ่งผสมผสานพลังการสร้างสรรค์ของ Generative AI เข้ากับความแม่นยำในการดึงองค์ความรู้ เป็นการสร้างระบบที่ไม่ได้มีแค่ความชัดเจน แต่ยังได้รับข้อมูลอย่างลึกซึ้งอีกด้วย RAG ได้ผสมผสานฐานข้อมูลเวกเตอร์ ซึ่งเป็นเครื่องมืออันทรงพลังสำหรับการกรองข้อมูลในที่เก็บข้อมูลขนาดใหญ่อย่างรวดเร็ว เพื่อปลดล็อกศักยภาพและประสิทธิภาพของ RAG อย่างเต็มที่ ต่อไปนี้เป็นรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของ RAG ที่อาศัยฐานข้อมูลเวกเตอร์
การผสมผสานของฐานข้อมูลเวกเตอร์เป็นกุญแจสู่ประสิทธิภาพของ RAG วิธีการค้นหาเมตาดาต้าแบบเดิมๆ อาจช้าและแม่นยำน้อยกว่า แต่ฐานข้อมูลเวกเตอร์ช่วยอำนวยความสะดวกในการเรียกข้อมูลที่เกี่ยวข้องตามบริบทแทบจะในทันที แม้จะเป็นชุดข้อมูลที่มีขนาดใหญ่มากก็ตาม วิธีการนี้ไม่เพียงแต่ช่วยประหยัดเวลาอันมีค่าเท่านั้น ยังช่วยให้มั่นใจได้ว่าคำตอบของ AI นั้นมีพื้นฐานมาจากข้อมูลที่เหมาะสมและเป็นปัจจุบันที่สุด
ความชำนาญของ RAG มีข้อได้เปรียบเป็นพิเศษในแอปพลิเคชันประเภทแชทบอท ผู้ช่วยดิจิทัล และเครื่องมือวิจัยที่ซับซ้อน หรือในแอปใดก็ตามที่การส่งข้อมูลต้องแม่นยำ เชื่อถือได้ และอิงพื้นฐานตามบริบทเป็นสำคัญ มันไม่ใช่แค่การสร้างคำตอบที่ฟังดูน่าเชื่อเท่านั้น แต่ต้องเป็นการสร้างเนื้อหาที่ยึดถือข้อมูลที่ตรวจสอบได้และความรู้จากโลกแห่งความเป็นจริงด้วย
ด้วยความเข้าใจที่สมบูรณ์ยิ่งขึ้นของ LangChain, Hugging Face, LLM, GenAI และ RAG ที่ปรับปรุงฐานข้อมูลเวกเตอร์ เรากำลังเข้าใกล้การผจญภัยในการเขียนโค้ดที่จะทำให้เทคโนโลยีเหล่านี้ใช้งานได้จริง สคริปต์ Python ที่เราจะเจาะลึกแสดงถึงการทำงานร่วมกันขององค์ประกอบเหล่านี้ แสดงให้เห็นถึงระบบ AI ที่สามารถตอบสนองโดยไม่จำกัดแค่ความคิดสร้างสรรค์และบริบทเท่านั้น แต่ยังมีความเข้าใจเชิงลึก ซึ่งครั้งหนึ่งคนเคยคิดว่าเป็นได้ก็แค่ในนิยายแนววิทยาศาสตร์ เตรียมเขียนโค้ดและสัมผัสกับพลังการเปลี่ยนแปลงของ RAG ด้วยฐานข้อมูลเวกเตอร์
ก่อนออกเดินทางสู่การผจญภัยแห่งเทคโนโลยีนี้ เรามาเช็กกันหน่อยดีกว่าว่าคุณพร้อมหรือยัง
หากมีครบทั้งหมดแล้ว ก็เยี่ยมไปเลย! มาทำให้มือของเราสกปรกกันเถอะ (แค่เปรียบเปรยเฉยๆ)
ด้วยการจัดการการขึ้นต่อกันของ Python อย่างรอบคอบ คุณจะมั่นใจได้ว่าโปรเจ็กต์ AI ของคุณสร้างขึ้นบนรากฐานที่มั่นคงและเชื่อถือได้ ด้วยการขึ้นต่อกันและตั้งค่าสภาพแวดล้อมอย่างถูกต้อง คุณทุกคนก็พร้อมที่จะรันสคริปต์และเป็นสักขีพยานในประสิทธิภาพของ RAG และ LangChain
ตอนนี้คุณสามารถรันสคริปต์ Python เพื่อดูการทำงานของ RAG ได้แล้ว
ก่อนที่เราจะเริ่มต้นการสำรวจ AI ด้วยเฟรมเวิร์ก LangChain และไลบรารี Transformers ของ Hugging Face ได้ สิ่งสำคัญคือต้องสร้างสภาพแวดล้อมที่ปลอดภัยและกำหนดค่าอย่างดี การเตรียมการนี้เกี่ยวข้องกับการนำเข้าไลบรารีที่จำเป็นและการจัดการข้อมูลที่ละเอียดอ่อน เช่น คีย์ API ผ่านตัวแปรสภาพแวดล้อม
from torch import cuda
from langchain_community.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings
from transformers import AutoModelForCausalLM, AutoTokenizer
from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline
from transformers import pipeline
from dotenv import load_dotenv
load_dotenv()
เมื่อทำงานกับโมเดล AI จาก Hugging Face คุณมักจะจำเป็นต้องเข้าถึง Hugging Face API ซึ่งต้องใช้คีย์ API คีย์นี้เป็นตัวระบุเฉพาะของคุณเมื่อส่งคำขอไปยังบริการ Hugging Face ซึ่งจะอนุญาตให้คุณสามารถโหลดโมเดลและใช้ในแอปพลิเคชันของคุณได้
ต่อไปนี้คือสิ่งที่คุณต้องทำเพื่อตั้งค่าสภาพแวดล้อมของคุณให้ปลอดภัย
HUGGINGFACE_API_KEY=your_api_key_here
แทนที่ your_api_key_here ด้วยคีย์ API จริงที่ได้รับจาก Hugging Face
modelPath = "sentence-transformers/all-mpnet-base-v2"
device = 'cuda' if cuda.is_available() else 'cpu'
model_kwargs = {'device': device}
ตรงนี้เราจะกำหนดเส้นทางไปยังโมเดลที่ได้รับการฝึกล่วงหน้าที่จะใช้สำหรับการฝัง นอกจากนี้เรายังจะกำหนดการตั้งค่าอุปกรณ์ ใช้ GPU หากมีเพื่อการประมวลผลที่เร็วขึ้น หรือตั้งค่าเริ่มต้นเป็น CPU อื่น
embeddings = HuggingFaceEmbeddings(
model_name=modelPath,
model_kwargs=model_kwargs,
)
# Made up data, just for fun, but who knows in a future
vectorstore = FAISS.from_texts(
["Harrison worked at Alibaba Cloud"], embedding=embeddings
)
retriever = vectorstore.as_retriever()
เราเริ่มต้นอินสแตนซ์ของ HuggingFaceEmbeddings ด้วยโมเดลและการกำหนดค่าที่เราเลือก จากนั้น เราสร้าง vectorstore โดยใช้ FAISS ซึ่งช่วยให้เราทำการค้นหาความคล้ายคลึงกันอย่างมีประสิทธิภาพในพื้นที่มิติสูงได้ เรายังจะสร้างตัวอย่างรีทรีฟเวอร์ด้วย ซึ่งจะดึงข้อมูลตามการฝัง
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
ตรงนี้เราจะกำหนดเทมเพลตแชทพรอมต์ที่จะใช้ในการจัดโครงสร้างการโต้ตอบกับ AI ประกอบด้วยตัวยึดสำหรับบริบทและคำถาม ซึ่งจะถูกเติมแบบไดนามิกระหว่างการดำเนินการของเชน
ในโลกของ AI และการประมวลผลภาษาธรรมชาติ Tokenizer และโมเดลภาษาเป็นคู่หูแบบไดนามิกที่เปลี่ยนข้อความให้กลายเป็นการกระทำที่มีความหมาย Tokenizer จะแบ่งภาษาออกเป็นส่วนๆ ที่โมเดลสามารถเข้าใจได้ ในขณะที่โมเดลภาษาจะคาดการณ์และสร้างภาษาตามอินพุตเหล่านี้ ในการเดินทางของเรา เราจะใช้คลาส AutoTokenizer และ AutoModelForCausalLM ของ Hugging Face เพื่อใช้ประโยชน์จากความสามารถเหล่านี้ แต่สิ่งสำคัญคือต้องจำไว้ว่า เมื่อต้องเลือกโมเดลภาษา ไม่มีขนาดใดที่ใช้ได้กับทุกอย่าง
ขนาดของโมเดลถือเป็นปัจจัยสำคัญที่ต้องพิจารณา โมเดลขนาดใหญ่เช่น Qwen-72B มีพารามิเตอร์มากกว่า ซึ่งโดยทั่วไปหมายความว่าสามารถเข้าใจและสร้างข้อความที่มีรายละเอียดมากขึ้นได้ อย่างไรก็ตาม โมเดลขนาดใหญ่ก็ยังต้องการพลังในการประมวลผลที่มากกว่าด้วย หากคุณติดตั้ง GPU ระดับไฮเอนด์และมีหน่วยความจำเพียงพอ คุณอาจเลือกใช้รุ่นที่มีขนาดใหญ่กว่าเพื่อให้ได้รับประโยชน์สูงสุดจากความสามารถของขนาด
ในทางกลับกัน โมเดลรุ่นเล็กกว่า เช่น Qwen-1.8B จะจัดการได้ดีกว่ามากสำหรับสภาพแวดล้อมการประมวลผลมาตรฐาน แม้แต่รุ่นจิ๋วนี้ก็ควรจะสามารถทำงานบน IoT และอุปกรณ์มือถือได้ แม้ว่าอาจไม่สามารถเข้าใจความซับซ้อนของภาษาได้เช่นเดียวกับภาษาที่คล้ายและกว้างกว่า แต่ก็ยังให้ประสิทธิภาพที่ยอดเยี่ยมและสามารถเข้าถึงได้มากขึ้นสำหรับผู้ที่ไม่มีฮาร์ดแวร์พิเศษ
อีกประเด็นที่ต้องพิจารณาคือลักษณะงานของคุณ หากคุณกำลังสร้าง AI การสนทนา การใช้โมเดลเฉพาะการแชท เช่น Qwen-7B-Chat อาจให้ผลลัพธ์ที่ดีกว่า เนื่องจากโมเดลเหล่านี้ได้รับการปรับแต่งสำหรับบทสนทนาอย่างละเอียด และสามารถจัดการกับความแตกต่างของการสนทนาได้ดีกว่าโมเดลพื้นฐาน
โมเดลขนาดใหญ่ไม่เพียงแต่ต้องการฮาร์ดแวร์ที่มากขึ้นเท่านั้น ยังอาจต้องเสียค่าใช้จ่ายที่สูงขึ้นอีกด้วย หากคุณใช้บริการบนคลาวด์เพื่อรันโมเดล การอนุมานแต่ละครั้งใช้เวลาในการประมวลผลและทรัพยากร ซึ่งอาจกลายเป็นเรื่องใหญ่ได้หากคุณทำงานกับโมเดลขนาดใหญ่
เมื่อต้องเลือกว่าจะใช้โมเดลใด ให้ชั่งน้ำหนักประโยชน์ของโมเดลขนาดใหญ่เทียบกับทรัพยากรที่มีอยู่และข้อกำหนดเฉพาะของโปรเจ็กต์ของคุณ หากคุณเพิ่งเริ่มต้นหรือกำลังพัฒนาในระดับที่เล็กกว่า โมเดลที่มีขนาดเล็กกว่าอาจเป็นตัวเลือกที่ดีที่สุด เมื่อความต้องการของคุณเพิ่มขึ้น หรือหากคุณต้องการความสามารถขั้นสูงกว่า ให้ลองเลือกเปลี่ยนไปใช้โมเดลที่ใหญ่ขึ้น
โปรดจำไว้ว่าตระกูล Qwen เป็นโอเพ่นซอร์ส คุณจึงสามารถทดลองใช้โมเดลต่างๆ เพื่อดูว่ารุ่นใดที่เหมาะกับโปรเจ็กต์ของคุณที่สุด ต่อไปนี้เป็นในส่วนการเลือกโมเดลของสคริปต์ หากคุณเลือกจะใช้โมเดลอื่น
# This can be changed to any of the Qwen models based on your needs and resources
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B", trust_remote_code=True)
model_name_or_path = "Qwen/Qwen-7B"
model = AutoModelForCausalLM.from_pretrained(model_name_or_path,
device_map="auto",
trust_remote_code=True)
เราโหลด Tokenizer และโมเดลภาษาเชิงสาเหตุจาก Hugging Face ด้วยคลาส AutoTokenizer และ AutoModelForCausalLM ตามลำดับ ส่วนประกอบเหล่านี้มีความสำคัญอย่างยิ่งต่อการประมวลผลอินพุตภาษาที่เป็นธรรมชาติและการสร้างเอาต์พุต
ไปป์ไลน์นี้ถูกออกแบบมาเพื่อสร้างข้อความโดยใช้โมเดลภาษาและ Tokenizer ที่โหลดไว้ก่อนหน้านี้ มาแจกแจงพารามิเตอร์และทำความเข้าใจบทบาทของแต่ละพารามิเตอร์ในการควบคุมพฤติกรรมของการสร้างข้อความกัน
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
max_new_tokens=8192,
do_sample=True,
temperature=0.7,
top_p=0.95,
top_k=40,
repetition_penalty=1.1
)
hf = HuggingFacePipeline(pipeline=pipe)
หลังจากตั้งค่าไปป์ไลน์ด้วยพารามิเตอร์ที่ต้องการแล้ว โค้ดบรรทัดถัดไป:
hf = HuggingFacePipeline(pipeline=pipe)
รวมไปป์ใน HuggingFacePipeline คลาสนี้เป็นส่วนหนึ่งของเฟรมเวิร์ก LangChain และช่วยให้ไปป์ไลน์สามารถรวมเข้ากับเวิร์กโฟลว์ของ LangChain เพื่อสร้างแอปพลิเคชัน AI ได้อย่างราบรื่น จากการรวมไปป์ไลน์ ตอนนี้เราสามารถใช้ร่วมกับส่วนประกอบอื่นๆ ของ LangChain เช่น ตัวรีทรีฟเวอร์และตัวแจง เพื่อสร้างระบบ AI ที่ซับซ้อนมากขึ้น
การเลือกพารามิเตอร์เหล่านี้อย่างระมัดระวังช่วยให้คุณปรับแต่งพฤติกรรมของการสร้างข้อความให้เหมาะกับความต้องการเฉพาะของแอปพลิเคชันของคุณ ไม่ว่าคุณกำลังมองหาเอาต์พุตที่สร้างสรรค์และหลากหลายมากขึ้น หรือเน้นข้อความที่สอดคล้องและเจาะจงอย่างสม่ำเสมอ
กลุ่มโค้ดด้านล่างนี้แสดงถึงระบบ RAG แบบ end-to-end ที่สมบูรณ์ โดยที่พรอมต์คำถามเริ่มแรกจะแจ้งให้ค้นหาข้อมูลที่เกี่ยวข้อง ซึ่งต่อมาจะใช้เพื่อเพิ่มกระบวนการสร้างเนื้อหา ส่งผลให้เกิดคำตอบที่มีข้อมูลและเกี่ยวข้องกับบริบทของคำถามที่ป้อนเข้า
1. การสร้างเชน:
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| hf
| StrOutputParser()
)
นี่คือสิ่งที่เกิดขึ้นในส่วนนี้ของโค้ด:
การใช้ตัวดำเนินการ | (pipe) จะแนะนำว่า โค้ดนี้ใช้รูปแบบการเขียนโปรแกรมเชิงฟังก์ชัน โดยเฉพาะแนวคิดเรื่ององค์ประกอบของฟังก์ชันหรือรูปแบบไปป์ไลน์ที่เอาต์พุตของฟังก์ชันหนึ่งกลายเป็นอินพุตไปยังฟังก์ชันถัดไป
2. การเรียกใช้เชน:
results = chain.invoke("Where did Harrison work?")
ในบรรทัดนี้เชนกำลังถูกเรียกใช้ด้วยคำถามเฉพาะ:_"Where did Harrison work?"_การเรียกใช้นี้จะกระตุ้นลำดับการดำเนินการทั้งหมดที่กำหนดไว้ในเชน รีทรีฟเวอร์ค้นหาข้อมูลที่เกี่ยวข้อง ซึ่งจะถูกส่งต่อพร้อมกับคำถามผ่านพรอมต์และเข้าสู่โมเดล Hugging Face โมเดลสร้างการตอบสนองตามอินพุตที่ได้รับ
3. แสดงผล:
print(results)
คำตอบที่สร้างขึ้นจะถูกแจงโดย StrOutputParser() และส่งคืนเป็นผลลัพธ์สุดท้าย ซึ่งจากนั้นจะถูกแสดงผลไปยังคอนโซลหรือเอาต์พุตอื่น
ในที่สุดเราก็สร้างเชน RAG ขึ้นมาได้โดยเชื่อมโยงรีทรีฟเวอร์ เทมเพลตพรอมต์ ไปป์ไลน์ Hugging Face และตัวแจงเอาต์พุต เราเรียกใช้เชนด้วยคำถามของเรา และผลลัพธ์ก็จะถูกแสดงผลออกมา
คุณเพิ่งกระโดดเข้าสู่โลกของ AI ด้วย RAG และ LangChain จากการทำความเข้าใจและใช้งานโค้ดนี้ คุณกำลังปลดล็อกศักยภาพในการสร้างระบบอัจฉริยะที่สามารถใช้เหตุผลและโต้ตอบกับข้อมูลในรูปแบบที่ไม่เคยมีมาก่อน
บทความนี้มาจากต้นฉบับภาษาอังกฤษ ดูบทความต้นฉบับที่นี่
El inicio de la revolución de la IA: un viaje con RAG y LangChain
84 posts | 3 followers
FollowRegional Content Hub - August 12, 2024
Regional Content Hub - May 7, 2024
Regional Content Hub - April 7, 2024
Regional Content Hub - September 18, 2024
Regional Content Hub - September 18, 2024
Regional Content Hub - September 18, 2024
84 posts | 3 followers
FollowTop-performance foundation models from Alibaba Cloud
Learn MoreAccelerate innovation with generative AI to create new business success
Learn MoreAccelerate AI-driven business and AI model training and inference with Alibaba Cloud GPU technology
Learn MoreA platform that provides enterprise-level data modeling services based on machine learning algorithms to quickly meet your needs for data-driven operations.
Learn MoreMore Posts by Regional Content Hub