รุ่นการฝังข้อความ
รุ่นการฝังข้อความใช้ในการคำนวณผลลัพธ์เวกเตอร์ของข้อความ ที่นี่คำว่า "เวกเตอร์" หมายถึงเวกเตอร์ทางคณิตศาสตร์ หรือที่เรียกว่าเฟีเจอร์เวกเตอร์เช่นกัน ในฐานะนักพัฒนา ที่ควรรู้คือรุ่นการฝังข้อความสามารถคำนวณเฟีเจอร์เวกเตอร์ของข้อความแล้วด้วยการใช้การคำนวณความคล้ายเฉพาะของเวกเตอร์ เราสามารถระบุเนื้อหาข้อความที่มีลักษณะคล้ายกันได้ด้วยคำนวณความคล้ายเฉพาะของเวกเตอร์
คำแนะนำ: สำหรับความรู้พื้นฐานเกี่ยวกับรุ่นการฝังข้อความ โปรดอ่านบทนำสู่การใช้รุ่นการฝังข้อความ
ความแตกต่างระหว่างการค้นหาเวกเตอร์และการค้นหาตามคีย์เวิร์ด
- การค้นหาเวกเตอร์ ใช้การคำนวณความคล้ายของเวกเตอร์คำ เขายเจอผลลัพธ์ที่มีความคล้ายกันทางความหมายของคำสำร้อง แม้ว่าคำสำร้องและคำในผลลัพธ์จะไม่ตรงตาม การค้นหาเวกเตอร์จะทำการแมปคำเป็นเวกเตอร์ในช่องมิติสูงและคำนวณความคล้ายกันระหว่างเวกเตอร์ นี่หมายความว่าแม้ว่าคำด้วยตัวเองอาจจะไม่ตรงกัน แต่ถ้ามีความคล้ายกันทางความหมายจะสามารถค้นหาผลลัพธ์ที่เกี่ยวข้องได้
- การค้นหาตามคีย์เวิร์ด ด้วยอีกทางก็คือการจับคู่ตัวอักษร ซึ่งเป็นกระบวนการค้นหาที่เรียบง่าย มันจะส่งผลลัพธ์กลับมาเฉพาะอันที่มีคำสำรวจตรงกัน ถ้าเอกสารใช้คำต่าง ๆ แม้ว่ามันจะมีความหมายคล้ายกัน ก็จะไม่ตรงกัน
คลาส "Embeddings" เป็นชนิดของคลาสที่ออกแบบมาเฉพาะเพื่อรับส่งร่วมกับรุ่นการฝังข้อความ มีผู้ให้บริการรุ่นการฝังข้อความหลายรูปแบบ (เช่น OpenAI, Cohere, Hugging Face, ฯลฯ) และการออกแบบของคลาสนี้คือการให้อินเทอร์เฟสมาตรฐานสำหรับผู้ให้บริการทุกรูปแบบ
คลาส "Embeddings" สร้างเป็นการแทนเวกเตอร์ของข้อความ ด้วยการค้นหาเวกเตอร์สามารถทำการค้นหาเฉพาะด้านความหมายเช่น เราสามารถค้นหาตัวอย่างข้อความที่มีลักษณะคล้ายกันในพื้นที่เวกเตอร์
คลาส "Embeddings" พื้นฐานใน LangChain เปิดเผยสองวิธี: วิธีหนึ่งคือสำหรับการฝังเอกสารและอีกวิธีหนึ่งสำหรับการฝังคำสั่ง การฝังเอกสารนำข้อความหลาย ๆ ชุดเข้าา ในขณะที่วิธีที่อื่นนำข้อความเดียวเข้า
การเริ่มต้นอย่างรวดเร็ว
ด้านล่างนี้คือตัวอย่างการใช้รุ่นการฝังข้อความของ OpenAI:
การกำหนดค่า
ก่อนที่เราจะต้องติดตั้งแพ็คเกจ Python ของ OpenAI ก่อนการใช้งาน โดยที่ LangChain มีการนำเสนอวิธีการใช้ของรุ่นการฝังข้อความหลากหลายรูปแบบ ผู้พัฒนาต้องติดตั้งคุณลักษณะของรุ่นที่ต่างกันตามทางเลือกของตน
pip install langchain-openai
กำหนดค่ากุญแจ OpenAI ผ่านตัวแปรสภาพแวดล้อม:
export OPENAI_API_KEY="..."
ถ้าคุณไม่ต้องการตั้งค่าตัวแปรสภาพแวดล้อม คุณสามารถส่งตัวแปรชื่อ "openai_api_key" โดยตรงเมื่อกำลังเริ่มต้นคลาส LLM ของ OpenAI เพื่อส่งผ่านคีย์ได้เลย
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings(openai_api_key="...")
หรือถ้าไม่มีพารามิเตอร์ใด ๆ คุณสามารถเริ่มต้นโดยไม่ต้องใส่อะไรเลย:
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings()
embed_documents
คำนวณเฟีเจอร์เวกเตอร์ของชุดข้อความ:
embeddings = embeddings_model.embed_documents(
[
"สวัสดี!",
"โอ้ สวัสดี!",
"ชื่ออะไรของคุณ?",
"เพื่อนของฉันเรียกฉันว่า เวิลด์",
"สวัสดี โลก!"
]
)
len(embeddings), len(embeddings[0])
(5, 1536)
embed_query
ฟังก์ชันนี้คำนวณเฟีเจอร์เวกเตอร์ของข้อความสอบถาม โดยทั่วไปนั้นมันเกี่ยวกับการแปลงคำถามที่ต้องการสืบค้นเป็นเฟีเจอร์เวกเตอร์ และจากนั้นใช้เวกเตอร์นี้ในการสืบค้นข้อความที่คล้ายกันในฐานข้อมูลเวกเตอร์
embedded_query = embeddings_model.embed_query("ชื่อที่กล่าวถึงในการสนทนาคืออะไร?")
embedded_query[:5]
[0.0053587136790156364,
-0.0004999046213924885,
0.038883671164512634,
-0.003001077566295862,
-0.00900818221271038]